0Pricing
AWS Security Academy · Lesson

How SCPs Combine with IAM Permissions

See why an SCP can deny but never grant on its own.

How SCPs Combine with IAM Permissions is a free AWS Security Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the AWS Security Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Two Layers of Control

Access in an organization is governed by two layers: the SCP ceiling set by AWS Organizations and the IAM permissions granted within the account. Understanding how they combine is one of the most testable ideas in the governance domain, because the outcome depends on both agreeing.

The Effective-Permission Rule

The rule is simple but strict: an action is allowed only if it is permitted by both the applicable SCPs and the account's IAM policies. The effective permission is the intersection. An SCP without a matching IAM allow grants nothing; an IAM allow blocked by an SCP grants nothing.

SCP Allows, IAM Denies

If the SCP permits an action but no IAM policy grants it, the result is denied by IAM's implicit deny. The SCP only made the action possible; IAM still has to actually grant it. Many learners forget the SCP is a ceiling, not a grant.

IAM Allows, SCP Denies

Conversely, if an IAM policy allows an action but an SCP denies it, the result is denied. The SCP's deny caps the account regardless of how generous IAM is. This is how an organization enforces hard limits that local administrators cannot override.

Both Allow, No Deny

Only when both the SCP and an IAM policy allow the action, and no explicit deny exists anywhere, is the request allowed. This intersection logic mirrors how permission boundaries work, and both can apply at once, narrowing permissions further.

Layering With Boundaries

In a fully governed environment several caps stack: the SCP (account level), the permission boundary (identity level), any session policy (session level), and the identity policy (grant). The effective permission is the intersection of all caps plus the grant, minus any explicit deny.

A Layered Example

Imagine an IAM policy granting s3:* and ec2:*, a permission boundary allowing s3:* only, and an SCP allowing s3:GetObject only. The effective permission is just s3:GetObject, the intersection of all three layers. Each cap shaves the permissions down further.

Explicit Deny Still Supreme

Across every layer, an explicit Deny in any policy, SCP, boundary, session, identity, or resource, immediately blocks the action. No combination of allows can override it. When analyzing a scenario, scan for any explicit deny first; if found, the answer is deny.

Resource Policies in the Mix

Resource-based policies can grant same-account access independently of the identity policy, but SCPs still cap the principal's account. For cross-account access, both accounts' controls and both sides' policies apply. The intersection rule expands but the core idea holds: every applicable cap must allow.

A Troubleshooting Method

When access fails unexpectedly in an org, work outward: confirm the identity policy grants the action, then check the permission boundary, then the SCPs on the account and every parent OU, then any session policy, and finally scan all layers for an explicit deny. The first cap that omits the action, or any deny, is your culprit.

Putting It Together

SCPs and IAM combine by intersection: an action needs an allow from both, plus any boundary and session caps, with no explicit deny anywhere. SCPs and boundaries only limit; IAM policies grant. To allow an action, every cap must permit it and at least one grant must exist.

Quick Check

Test the combination logic.

Recap

SCPs and IAM combine by intersection: an action is allowed only if both permit it, plus any permission boundary and session policy caps, with no explicit deny anywhere. SCPs and boundaries only limit; IAM policies grant. An explicit deny in any layer always wins over every allow.

Frequently asked questions

Is the “How SCPs Combine with IAM Permissions” lesson free?

Yes — the full text of “How SCPs Combine with IAM Permissions” is free to read here on the web, and the AWS Security Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the AWS Security Academy course, upgrade to CoddyKit PRO.

What will I learn in “How SCPs Combine with IAM Permissions”?

See why an SCP can deny but never grant on its own. You practise AWS Security Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start AWS Security Academy?

No prior experience is required. AWS Security Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “How SCPs Combine with IAM Permissions” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this AWS Security Academy lesson?

Yes. Every AWS Security Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. What a Permission Boundary Limits
  2. Delegating Role Creation Safely
  3. Organizations, OUs, and SCP Strategy
  4. How SCPs Combine with IAM Permissions
← Back to AWS Security Academy