Control access across AWS accounts
Use accounts to separate blast radius, authorize both sides of cross-account access, and treat organization guardrails as limits—not grants.
LESSON GOALS
By the end, you can
- Choose a role or resource policy for a cross-account access path.
- Explain how accounts, organizational units, SCPs, and IAM work together without confusing limits with grants.
01
Choose the boundary before the policy
An AWS account is more than a label. It is a boundary for authorization, billing, quotas, and operations. Separate production, security evidence, and development when they need different owners or blast radii. Tags help organize resources inside an account, but they do not create the same isolation.
AWS Organizations groups accounts into organizational units, or OUs. AWS Control Tower can establish and govern a landing zone. Neither service gives a workload permission to read a bucket or assume a role; IAM and resource policies still provide those positive grants.
For cross-account access, first choose the shape. Use a role when the caller needs a temporary bundle of permissions in another account. Use a resource policy when one supported resource can directly grant a narrow action to an external principal.
Name the owner of each boundary. A platform team may create accounts and OUs, a security team may own organization guardrails, and an application team may own workload roles. Separating those duties prevents one convenient administrator from silently controlling production, evidence, and the policies meant to protect both.
Account separation has an operating cost, so use it for a real boundary. Different data sensitivity, production authority, evidence ownership, or billing responsibility can justify another account. A new account is not useful merely because two resources have different names.
02
Authorize the correct side—or both sides
Cross-account role assumption checks two sides before creating a session. The caller needs permission to call sts:AssumeRole, and the target role must trust that caller. After assumption, the role’s permissions control the session’s actions.
Direct resource access follows the service’s resource-policy rules. Verify that the service supports a resource policy and which principal forms it accepts. The choice changes the audit principal, session behavior, and revocation point.
AWS KMS is a useful two-sided example. To use a key from another account, the key-owning account must authorize the external principal in the key policy, and the principal’s own account must grant the KMS action through IAM. One side alone is not enough. The data-service policy must also permit the intended data access.
Test the exact operation from the exact principal. A successful role assumption proves only that the session exists; it does not prove the session may read the resource. Likewise, a successful decrypt does not prove the role may administer the key or read every encrypted object.
Keep the access path narrow enough to revoke safely. Removing target-role trust stops new assumptions, while changing a resource policy removes that direct grant. Existing temporary sessions still follow their lifetime and applicable revocation behavior, so include session duration in the removal plan.
03
Use guardrails as ceilings
A service control policy, or SCP, sets the maximum permissions available to affected member-account principals. It never grants an action. If an SCP allows S3, an IAM or resource policy must still grant the specific S3 action. If an SCP denies an action, an IAM allow cannot restore it.
Attach a broad prohibition at an OU only when it should apply to every covered principal. If only roles created by developers need a limit, required permissions boundaries and controlled PassRole access may be narrower. SCPs also do not restrict principals in the management account, so keep routine workloads there to a minimum and protect organization administration separately.
Test a guardrail in a limited OU before wider rollout. Prove one action that must remain allowed, one that must be denied, and the management-account exception. A mistaken deny can disable every covered identity, so staged evidence is cheaper than emergency recovery.
Record who may attach, detach, or edit the SCP and who may move an account to another OU. A guardrail does not protect the organization if the same routine identity can simply remove its scope. Monitor those organization changes and keep recovery access deliberate.
Promote the policy only after the observations match its stated scope. If an allowed deployment action fails, repair the guardrail before widening it. If the prohibited action still succeeds, identify whether the principal, account, or management-account exception sits outside the SCP’s reach.
DECISION TABLE
Compare the architecture constraints
| requirement | choose | because | reject |
|---|---|---|---|
| One supported resource needs narrow direct cross-account access | Resource policy plus required principal permission | The resource owner scopes the exact grant. | Duplicate users or a broad role. |
| A caller needs several temporary permissions in another account | Cross-account role | Trust and session permissions are explicit. | Using an SCP as if it grants access. |
| One action must be impossible throughout a development OU | A staged SCP deny | The inherited ceiling covers affected member accounts. | Repeating a boundary on every role. |
GUIDED WORKED SCENARIO
Reason from the stated constraints
This is a guided example, not a question to memorise. The knowledge check uses new situations to test the same reasoning.
Production, security, and development use separate accounts. Security auditors need temporary read-only sessions in production. Development administrators must never disable CloudTrail or remove their account from the organization. Guardrails must be tested before rollout.
Requirements
- Keep production, security, and development blast radii separate.
- Use temporary attributable audit sessions.
- Deny two development actions for every affected principal.
- Keep positive production grants least-privilege.
- Do not assume SCPs cover the management account.
Reasoning path
- Keep the three account boundaries.
- Create a production audit role trusted to the security account.
- Grant the role only the required read actions.
- Test the deny in a limited development OU, then attach the SCP more broadly.
- Verify an allowed action, both denied actions, and the management-account exception.
Why it wins
- The role provides a temporary cross-account session with clear trust and permissions.
- The SCP makes the prohibited actions unavailable throughout the development OU.
- Separate accounts reduce the blast radius of development and protect security evidence.
Why the alternatives lose
Tags are not equivalent isolation.
Becomes correct when: Small workload accepts one blast radius.SCP never grants.
Becomes correct when: Allow-list SCP only defines ceiling beside IAM grants.Not every service supports them.
Becomes correct when: One supported resource needs direct narrow access.INTERACTIVE ARCHITECTURE VISUAL
Require both sides of cross-account access
A role in one account requests a resource in another. Change either authorization side or the organization ceiling.
× Request stopsThe resource account allows access, but the principal account never grants the action.
Read the diagram as text
Compare principal account, resource account, caller permission, target trust or resource policy, SCP ceiling, and final result. Mark an absent required grant as denied rather than filling it with a broad policy.
KNOWLEDGE CHECK
Answer one question at a time
Pass every question to complete this lesson. Each answer includes reasoning before you continue.
KEY TERMS
Glossary
- AWS Organizations
- A service for centrally grouping and governing multiple AWS accounts.
- Organizational unit (OU)
- A group of accounts that can inherit organization policies such as SCPs.
- Landing zone
- A governed multi-account foundation with account structure, controls, and shared services.
- Blast radius
- The resources, accounts, or operations that one failure or compromised identity can affect.
- Cross-account role
- A role in one account that a trusted principal from another account may assume temporarily.
- Resource policy
- A policy on a supported resource that can name external principals directly.
- Service control policy (SCP)
- An organization-level maximum permission ceiling for affected member-account principals; it never grants access.
- Management account
- The Organizations account that administers the organization and is not restricted by its SCPs.
- Key policy
- The resource policy on a KMS key that controls which principals may use or administer it.
- PassRole
- The IAM permission to pass a role to an AWS service, which should be constrained to intended roles and services.
PRIMARY SOURCES
Verify the claims
- primaryWhat is AWS Organizations?aws-org-overview · retrieved 2026-07-29
- primaryAWS Security Reference Architecture – Multi-account Security Modelaws-sec-sra-multi · retrieved 2026-07-29
- primaryCross account resource access in IAMaws-iam-cross-account-resource-access · retrieved 2026-07-30
- primaryKey policies in AWS KMSaws-kms-key-policies · retrieved 2026-07-30
- primaryService control policies (SCPs)aws-organizations-service-control-policies · retrieved 2026-07-30
- primaryWhat is AWS Control Tower?aws-ct-overview · retrieved 2026-07-29
- primaryKms Cross Accountaws-kms-cross-account · retrieved 2026-07-30