Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
IAM permission boundaries are an advanced AWS feature that sets the maximum permissions an identity-based policy can grant to an IAM entity (user or role). They enable centralized security teams to safely delegate IAM role and policy creation to application developers without risking privilege escalation. The effective permissions of an entity are the intersection of its identity-based policies and its permission boundary -- even if an identity policy grants AdministratorAccess, the permission boundary restricts it to only the allowed actions.
When to Use
When deploying or configuring implementing aws iam permission boundaries capabilities in your environment
When establishing security controls aligned to compliance requirements
When building or improving security architecture for this domain
When conducting security assessments that require this implementation
Common Misconfigurations & Verification
Boundary created but not attached: the maximum-permission policy exists but iam:CreateRole delegation does not enforce iam:PermissionsBoundary, so developers mint roles with no boundary and full identity-policy power. Verify the delegation policy's Condition requires the exact boundary ARN and test aws iam create-rolewithout--permissions-boundary — it must be denied.
Privilege-escalation gaps in the boundary: if the boundary allows iam:CreatePolicyVersion, iam:AttachRolePolicy on *, or iam:DeleteRolePermissionsBoundary, a delegated role can edit its own boundary or escape it. Confirm explicit Deny on boundary self-modification and on iam:PassRole to unscoped roles.
Boundary ≠ Deny: a permission boundary only caps the maximum; it grants nothing and does not stop actions an attached identity policy already denies-by-omission, nor does it filter resource-based policy access. Remember effective access = identity policy ∩ boundary ∩ SCP, and explicit Deny anywhere wins.
SCP/boundary confusion: SCPs bound the whole account/OU and do not grant; relying on a boundary where an SCP is needed (or vice-versa) leaves gaps. Verify both layers for cross-account sts:AssumeRole.
Verification: run aws iam simulate-principal-policy against the boundaried role for a denied action (e.g. ) and confirm ; attempt to create a role without the boundary and an escalation via and confirm both fail in CloudTrail.
iam:DeleteRolePermissionsBoundary
denied
CreatePolicyVersion
Prerequisites
AWS account with IAM administrative access
Understanding of AWS IAM policy language (JSON)
AWS CLI v2 configured with appropriate credentials
Terraform or CloudFormation for infrastructure-as-code deployment
Core Concepts
How Permission Boundaries Work
Identity-Based Policy Permission Boundary
(What the role CAN do) ∩ (What the role MAY do)
│ │
└──────────┬───────────────────┘
│
Effective Permissions
(Only actions in BOTH policies)
# Create the boundary policy
aws iam create-policy \
--policy-name DeveloperBoundary \
--policy-document file://developer-boundary.json
# Attach boundary to an existing role
aws iam put-role-permissions-boundary \
--role-name developer-role \
--permissions-boundary arn:aws:iam::123456789012:policy/DeveloperBoundary
# Create a new role with boundary
aws iam create-role \
--role-name app-lambda-executor \
--assume-role-policy-document file://trust-policy.json \
--permissions-boundary arn:aws:iam::123456789012:policy/DeveloperBoundary
Step 4: Prevent Privilege Escalation
The boundary must include deny statements to prevent developers from: