Back to Blog

Essential AWS Guardrails (SCP / RCP) to Reduce Blast Radius

Practical AWS guardrails that shrink the blast radius, block privilege escalation, and enforce safer cloud operations using organization-wide SCP and RCP controls.

Diagram showing AWS guardrails compressing and reducing the blast radius across cloud services using preventive SCP and RCP controls

As cyber attacks become more frequent, it’s more important than ever to have environments that are self-protecting with strong security measures. While basic guardrails like preventing users from leaving the organization or disabling unused regions are essential, today we’ll focus on a few key AWS guardrails that provide extra protection for your cloud infrastructure. These examples demonstrate key policies that can significantly reduce your blast radius, but they represent just a fraction of the comprehensive set of controls needed. There are many more policies – across various levels of complexity – that should be implemented alongside these to effectively minimize exposure to threats and limit lateral movement in the event of a breach. While these guardrails can be implemented using IAM and resource-based policies, we strongly recommend implementing them with Service Control Policies and Resource Control Policies at the organization level. This ensures a broader coverage across all accounts and units within the organization.
Disclaimer: Before implementing these guardrails, it’s crucial to simulate their impact and add the right exclusions that manages the accepted risk to ensure they won’t disrupt workflows.

Deny Sensitive IAM Actions Without MFA (Organization SCP)

What this Guardrail Enforces: Scope & Intent

This guardrail blocks IAM users from executing sensitive actions-such as modifying roles or users – unless MFA is enabled. MFA ensures that attackers who may have stolen credentials cannot perform critical operations without an additional layer of authentication.

Security Impact: How MFA Blocks Credential Abuse

Enforcing MFA for sensitive IAM actions prevents unauthorized privilege escalation and credential management. Attackers may steal access keys, but they won’t be able to perform high-risk actions like deleting users or attaching policies without triggering MFA.

Example SCP: Deny STS: AssumeRole Without MFA Conditions
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenySensitiveIAMActionsWithoutMFA",
      "Effect": "Deny",
      "Action": [
                  "iam:DeleteGroup", 
                  "iam:DeleteGroupPolicy", 
                  "iam:DeletePolicyVersion", 
                  "iam:DeleteRole", 
                  "iam:DeleteRolePolicy", 
                  "iam:DeleteUser",                   
                  "iam:DeleteUserPolicy", 
                  "iam:DetachGroupPolicy", 
                  "iam:DetachRolePolicy", 
                  "iam:DetachUserPolicy", 
                  "iam:RemoveUserFromGroup",
                  "iam:DeleteAccessKey", 
                  "iam:SetDefaultPolicyVersion", 
                  "iam:AttachGroupPolicy", 
                  "iam:AttachRolePolicy", 
                  "iam:AttachUserPolicy",
                  "iam:PutGroupPolicy", 
                  "iam:PutUserPermissionsBoundary", 
                  "iam:PutUserPolicy", 
                  "iam:PutRolePermissionsBoundary",
                  "iam:PutRolePolicy",
                  "iam:UpdateAssumeRolePolicy", 
                  "iam:RemoveRoleFromInstanceProfile",
                  "iam:UpdateAccessKey"
                ],
      "Resource": ["*"],
      "Condition": {
        "ArnLike": {
          "aws:PrincipalArn": ["arn:aws:iam::*:user/*"]
        },
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": ["false"]
        }
      }
    }
  ]
}

Deny KMS Key Access From Untrusted Networks (RCP/SCP)

Risk Summary: Preventing Key Exfiltration & Misuse

This guardrail ensures that AWS KMS keys can only be accessed from trusted networks, blocking cryptographic key operations from untrusted sources, such as the public internet.

Operational Effect: Limits Cross-Account Crypto Abuse

By enforcing this guardrail, access to KMS keys is restricted to internal environments, minimizing the risk of key exposure and attacks originating from compromised or untrusted networks.

Example RCP: Enforce VPC Endpoint & Source IP Controls
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "KMSEnforceNetworkPerimeter",
      "Effect": "Deny",
      "Action": ["kms:*"],
      "Resource": ["*"],
      "Principal": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceVpc": [
            "{{ [ EndpointVPCs ] }}"
          ]
        },
        "NotIpAddressIfExists": {
          "aws:SourceIp": [
            "{{ [ CustomerCIDRs ] }}"
          ]
        },
        "BoolIfExists": {
          "aws:ViaAWSService": ["false"],
          "aws:PrincipalIsAWSService": ["false"]
        }
      }
    }
  ]
}

Prevent IAM Users from Assuming Roles Directly (SCP)

Why Blocking Direct AssumeRole Matters for Containment

This guardrail prevents IAM users from assuming roles in AWS, which is a common attack vector for privilege escalation.

Containment Benefit: Reduces Lateral Privilege Escalation

IAM users already have sufficient permissions for their needs. Allowing them to assume additional roles opens up the potential for unauthorized privilege escalation. This guardrail blocks that opportunity, ensuring that role assumption isn’t misused for unauthorized access.

Example SCP: Deny AssumeRole for IAM Principals
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyIAMUsersFromAssumeRole",
      "Effect": "Deny",
      "Action": ["sts:AssumeRole"],
      "Resource": ["*"],
      "Condition": {
        "ArnLike": {
          "aws:PrincipalArn": ["arn:aws:iam::*:user/*"]
        }
      }
    }
  ]
}

Deny IAM User Permission Changes (Org SCP)

Business Impact: Prevents Privilege Creep & Backdoors

This guardrail blocks unauthorized changes to IAM user permissions, ensuring only authorized entities can modify user access rights.

Attack Surface Reduction: Locks Down Escalation Paths

This guardrail mitigates the risk of privilege escalation by preventing unauthorized modifications to IAM user permissions. If an attacker compromises a user, they won’t be able to change their own permissions or escalate privileges by adding new policies.

Example SCP: Block IAM:PutUserPolicy / AddUserToGroup
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyChangeUserPermissions",
      "Effect": "Deny",
      "Action": [
                  "iam:AddUserToGroup", 
                  "iam:AttachGroupPolicy",  
                  "iam:AttachUserPolicy", 
                  "iam:DeleteUserPermissionsBoundary", 
                  "iam:PutGroupPolicy", 
                  "iam:PutUserPermissionsBoundary", 
                  "iam:PutUserPolicy"
                ],
      "Resource": ["*"]
    }
  ]
}

Prevent S3 Bucket Discovery by Non-Human Identities

Privacy & Data Exposure Risk: Why Discovery Matters

This guardrail blocks non-human identities (e.g., service accounts) from listing S3 buckets in order to reduce exposure to sensitive storage resources and limit unauthorized enumeration of buckets.

Data Containment: Limits Automated Reconnaissance

By preventing service accounts from listing S3 buckets, this guardrail limits attackers’ ability to gather information about S3 buckets and objects, thus reducing the risk of information stealing and lateral movement.

Example SCP: Deny s3:ListBucket for Non-Human Principals
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyS3ServiceDiscovery",
      "Effect": "Deny",
      "Action": [
                  "s3:ListAllMyBuckets", 
                  "s3:GetBucketAcl", 
                  "s3:GetBucketPolicy"
                ],
      "Resource": ["*"],
      "Condition": {
        "ArnLike": {
          "aws:PrincipalArn": ["arn:aws:iam::*:role/*"]
        },
        "ArnNotLike": {
          "aws:PrincipalArn": ["arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*"]
        },
        "BoolIfExists": {
          "aws:PrincipalIsAWSService": ["false"]
        }
      }
    }
  ]
}

Mitigate Confused Deputy Attacks (Service Principals)

Threat Overview: How Confused Deputy Enables Abuse

This guardrail protects against confused deputy attacks by ensuring that AWS Bedrock service principals cannot assume unintended roles or access unauthorized resources from a different account or organization.

Prevents Service Acting As Proxy: Limits Privilege Escalation

By preventing Bedrock from being used as a relay for unauthorized access, this guardrail protects sensitive data and resources from being compromised via misconfigured or exploited service principals.

Example RCP: Constrain Service Principal Actions by Condition
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BedrockConfusedDeputyProtection",
      "Effect": "Deny",
      "Action": ["sts:AssumeRole"],
      "Resource": ["*"],
      "Principal": {
        "Service": ["bedrock.amazonaws.com"]
      },
      "Condition": {
        "StringNotEquals": {
          "aws:SourceOrgId": ["{{ OrgID }}"]
        },
        "Null": {
          "aws:SourceAccount": ["false"]
        }
      }
    }
  ]
}

Block SSE-C Uploads to Org S3 (RCP)

Why SSE-C is Dangerous in Org Contexts: Key Management Risk

This guardrail prevents the uploading of objects to S3 using customer-provided keys (SSE-C), enforcing the use of organization-controlled encryption mechanisms.

Data Loss & Forensics: Keeps Org In Control of Keys

Using SSE-C for encryption in S3 is a known attack vector exploited by ransomware to encrypt S3 data. This practice is rarely used by AWS operators, but its existence opens up opportunities for attackers to leverage unauthorized encryption methods. By mandating internal encryption controls, this guardrail ensures that encryption keys are managed within your organization, reducing the risk of unauthorized data access.

Example RCP: Deny PutObject with x-amz-server-side-encryption-c
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyS3SSECObjectUpload",
      "Effect": "Deny",
      "Action": ["s3:PutObject"],
      "Resource": ["*"],
      "Principal": "*",
      "Condition": {
        "Null": {
          "s3:x-amz-server-side-encryption-customer-algorithm": ["false"]
        },
        "Bool": {
          "aws:PrincipalIsAWSService": ["false"]
        }
      }
    }
  ]
}

Conclusion: Prioritize Guardrails, Measure, Automate Rollout

These guardrails are just a few examples of the policies that can help reduce the blast radius in AWS environments. However, they are not exhaustive. To truly safeguard your environment, it’s essential to implement a comprehensive suite of AWS guardrails, continuously test and simulate their impact, and adapt to new emerging threats. While these guardrails can be applied at the IAM and resource levels, we highly recommend using SCP and RCP at the organization level for broader coverage. This approach will ensure that security is enforced across all parts of your AWS infrastructure, reducing the attack surface and enhancing your organization’s overall security posture. Before implementing these guardrails, it’s critical to test and simulate their impact. At Blast Security, we offer an advanced platform that allows you to actively manage these guardrails, stopping malicious activities and misconfigurations with a simulation-driven approach and accepted risk management strategies.

You might also like

Visualization of Shai-Hulud 2.0 cloud attack pathways, showing lateral movement routes and how preventive guardrails contain blast radius
Blast Radius Preemptive Defense
4 min read

Shai-Hulud 2.0: What We Learned from Helping Organizations Contain a Large-Scale Cloud Attack

Deep dive into Shai-Hulud 2.0 and how preventive guardrails, safe simulation, and attack-path reduction shaped successful cloud containment
Illustration showing how preventive guardrails shrink cloud blast radius beyond least privilege
Blast Radius Cloud Defense Preemptive Defense
6 min read

Rethinking Least Privilege In The Cloud: The Blast Radius Blind Spot

Least privilege alone can’t reduce blast radius in modern cloud environments. Preventive guardrails enforce limits at the resource level, complementing and strengthening your least privilege strategy.