Asterrr's Handbook

Multi-account strategy

Designing an AWS Organizations OU structure for security, running Control Tower controls, delegating security services and centrally managing root access for member accounts.

Exam tasks: 6.1 (skills 6.1.1 Organizations, 6.1.2 Control Tower and its controls, 6.1.3 organization policies, 6.1.4 delegated administrators, 6.1.5 root user credentials)

The decision: which account boundary should isolate a workload or a team, which account should run each security service, and which guardrail (preventive, proactive or detective) should stop or catch a bad configuration before a human has to?

An OU structure built for security

An AWS account is the strongest isolation boundary AWS offers: separate IAM, separate quotas, separate blast radius. OUs group accounts that need the same policies, not the same org chart.

OUWhat goes in itTypical guardrails
SecurityLog archive and security tooling (Control Tower calls it Audit) accountsDeny changes to logging, deny leaving the org, very few human principals
InfrastructureShared networking, shared services, identityOnly the platform team can change routing
Workloads (prod and non-prod)Application accounts, one per workload per environmentRegion deny, encryption required, no public S3
SandboxExperiments, disconnected from corporate networksSpend limits, no Direct Connect or peering, broad service access
Policy stagingTest accounts for new SCPs before they hit prodMirror of the prod policy set plus the change
SuspendedAccounts being decommissioned or quarantinedDeny-all SCP except a break-glass role
  • Log archive account: receives the organization trail, Config snapshots and other logs. Almost nobody signs in. S3 Object Lock and a bucket policy that only accepts writes from the org stop tampering. See Logging strategy.
  • Security tooling account: the delegated administrator for security services, where the security team reads findings and runs response automation. It has read access into other accounts, not the other way round.
  • Don't nest deeply for the sake of it. Every SCP layer is another place to debug an unexpected deny.

Exam signal

"Isolate the blast radius", "separate billing", "different compliance scope" or "a team must not be able to affect another team's resources" all point to separate accounts, not separate VPCs or IAM paths in a shared account.

Organization policies at a glance

Organizations only offers policies once all features are enabled (not just consolidated billing). The detail on SCP and RCP evaluation lives in Organization policies.

Policy typeDoes whatSecurity use
SCPCaps what principals in member accounts can doRegion deny, protect CloudTrail and GuardDuty, block leaving the org
RCPCaps what can be done to resources in member accounts, by anyoneBlock access from outside the org to S3, KMS, SQS, Secrets Manager and STS
Declarative policySets and holds a service configuration, such as EC2Block public AMI and snapshot sharing, require IMDSv2, VPC block public access
Tag policyStandardizes tag keys, value case and allowed valuesConsistent data-classification and cost-center tags for ABAC and reporting
Backup policyPushes AWS Backup plans to accountsGuaranteed backup schedule and vault for every prod account
AI services opt-out policyStops AWS AI services storing or using your content to improve the serviceData residency and privacy commitments
  • Tag policies report non-compliant tags and can block non-compliant tagging operations on the resource types you list. They don't force someone to add a tag at all. To require a tag on creation, use an SCP that denies the create call when aws:RequestTag/<key> is null.
  • Backup policies deploy plans, but the vault, KMS key and IAM role they reference must already exist in each account (StackSets is the usual way to put them there).

SCPs and the management account

SCPs and RCPs never apply to the management account, and SCPs don't limit service-linked roles. A question that needs a restriction on "every account, including the management account" can't be solved with an SCP alone, so keep workloads out of that account.

AWS Control Tower

Control Tower builds and runs a landing zone: a multi-account environment with Organizations, IAM Identity Center, an organization CloudTrail, Config and a set of controls wired together.

  • Shared accounts: management, log archive and audit (the security tooling account), with the latter two in a Security OU.
  • Account Factory creates new accounts in a chosen OU with the baseline already applied. It's exposed as a Service Catalog product. Account Factory Customization (AFC) adds your own blueprint (a CloudFormation or Terraform template) when an account is created.
  • Account Factory for Terraform (AFT) is a GitOps pipeline: you commit an account request to a repository, and AFT creates the account and applies global and per-account Terraform customizations.
  • Existing environments: you can set up Control Tower on an existing organization, then register existing OUs and enroll existing accounts. You can also use Control Tower controls on OUs without a full landing zone.
  • Drift: changing Control Tower resources directly in Organizations (moving an account, editing a Control Tower SCP) causes landing zone drift that you repair from the console.

Control behaviours

BehaviourBuilt onWhen it actsStatus values
PreventiveSCPs, RCPs, declarative policiesBlocks the API callEnforced or not enabled
ProactiveCloudFormation HooksChecks resources before CloudFormation provisions them. Fails the stack if non-compliantPass, fail, skip
DetectiveAWS Config rulesFlags resources that are already non-compliantClear, in violation, not enabled
  • Guidance categories are mandatory (protect Control Tower's own resources), strongly recommended and elective. The catalog is also organized by framework, so you can enable every control that maps to, say, NIST 800-53 on one OU.
  • Controls apply to an OU, so every account in that OU gets them. You can't enable a control on one account.
  • Proactive controls only see resources deployed through CloudFormation (or tools that use it, such as CDK). Console clicks bypass them, which is why you pair them with a preventive or detective control.
  • Custom controls: write your own SCP, Config rule or Hook and deploy it with Customizations for Control Tower, AFT or StackSets.

Legacy: use controls instead

Control Tower used to call controls "guardrails". Older questions and blogs use the term. It means the same thing.

Exam signal

"Stop the resource being created at all" means preventive. "Stop it being created through our IaC pipeline, with a clear error before deployment" means proactive. "Tell us which existing resources break the rule" means detective.

Delegated administrators

Most security services let the management account delegate administration to a member account. The delegated admin can then enable the service in all accounts, auto-enable it for new accounts and see every finding.

  • Services you'll see on the exam: GuardDuty, Security Hub and Security Hub CSPM, Amazon Inspector, Macie, Detective, IAM Access Analyzer, AWS Config (rules and conformance packs), Firewall Manager, CloudTrail (for organization trails and Lake), Audit Manager, CloudFormation StackSets, IAM (for root access management).
  • Delegate to the security tooling account. One account for all security services keeps the view in one place.
  • Turn on auto-enable for new members so a fresh account from Account Factory is covered from its first hour.
  • Many services are Regional, so the delegated admin must be designated (and auto-enable set) in every Region you operate in. Cross-Region aggregation then gives one pane of glass.

Enabling it per account

A script that loops over accounts and turns GuardDuty or Security Hub on is a distractor. It misses accounts created later. The organization integration with auto-enable is the answer.

Root user control

Every member account has a root user that SCPs can't fully restrict. Centralized root access management removes the problem.

  • Enable it in IAM (it needs trusted access for IAM in Organizations). Then you can delete root credentials in member accounts: password, access keys, signing certificates and MFA. New accounts are created with no root credentials at all.
  • Privileged tasks run through sts:AssumeRoot from the management account or the IAM delegated admin, scoped by an AWS managed task policy (for example S3UnlockBucketPolicy or IAMDeleteRootUserCredentials). Sessions last up to 900 seconds and must use a Regional STS endpoint.
  • You can't call AssumeRoot with root credentials, and you can restrict which task policies a principal may use with the sts:TaskPolicyArn condition key.
  • If a task really needs a member account's root user (a rare billing task, say), run Allow password recovery, do the task, then delete the credentials again.

Break-glass access

  • Keep the management account root with a strong password and MFA (preferably two hardware or passkey devices), stored with dual control. Watch for any root sign-in with an EventBridge rule on CloudTrail ConsoleLogin events where the user identity type is Root.
  • Keep a small number of break-glass IAM roles or Identity Center users outside your normal IdP, so an IdP outage doesn't lock you out. Alarm on every use.
  • Test the procedure on a schedule. A break-glass path nobody has used in two years usually fails when it's needed.
900 s
Maximum session length for an sts:AssumeRoot privileged task session.
5
AWS managed root task policies: audit credentials, create password, delete credentials, unlock S3 bucket policy, unlock SQS queue policy.
All features
Organizations mode required before you can use SCPs, RCPs or any other policy type.
3
Control behaviours in Control Tower: preventive, proactive, detective.

Scenarios

Scenario
A logistics company has 140 member accounts in AWS Organizations. An internal audit found that 23 member accounts still have root user passwords and access keys, and nobody knows who holds them. The security team wants to remove these credentials, stop new accounts from ever getting root credentials, and still be able to fix an S3 bucket whose policy accidentally denies everyone. What should the team do?
Scenario · choose 2
A healthcare firm uses AWS Control Tower. All infrastructure is deployed through a CloudFormation pipeline. The security team wants any stack that creates an RDS instance without storage encryption to fail before the resource is created, and also wants a report of any unencrypted databases that already exist or were created in the console. Which TWO controls should the team enable on the workload OUs?
Scenario
A retailer wants its security operations team to manage GuardDuty, Security Hub CSPM and Amazon Inspector for all current and future accounts in the organization. The management account must not be used for day-to-day security work. What is the MOST operationally efficient approach?

Further reading

On this page