AWS Organizations¶
1. What is AWS Organizations?¶
AWS Organizations is a free account management service that lets you centrally govern multiple AWS accounts — grouping them into a hierarchy, applying security guardrails, pooling billing, and enabling cross-account AWS service integration.
Without Organizations:
10 accounts → 10 separate bills, 10 separate IAM setups
No central way to enforce: "nobody in any account can disable CloudTrail"
Volume discounts: each account's usage counted separately
With Organizations:
Single management structure → all accounts governed centrally
SCPs: one policy blocks actions across 50 accounts simultaneously
Consolidated billing: usage pooled → volume discounts + RI sharing
One CloudTrail org trail → logs everything in every account
Free service: no charge for Organizations itself
2. Key Concepts ⭐¶
Root:
Top of the hierarchy — exactly ONE root per organization
Policies attached to Root apply to ALL OUs and accounts
Management account lives here
Management Account (formerly "master account"):
The account that CREATED the organization
Pays all consolidated bills
Cannot be restricted by SCPs — fully exempt [docs.aws.amazon](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)
Can create new accounts, invite existing accounts, remove accounts
Best practice: use management account ONLY for billing/governance
→ no workloads deployed here
Member Accounts:
All other accounts in the organization
Subject to SCPs from parent OUs/Root
Can only belong to ONE organization at a time
Can be removed (leaves) or closed
Organizational Units (OUs):
Logical containers to group accounts
Hierarchy: Root → OU → Sub-OU → Account (up to 5 levels deep)
SCP applied to OU → inherited by ALL accounts in OU + child OUs [aws.amazon](https://aws.amazon.com/blogs/industries/best-practices-for-aws-organizations-service-control-policies-in-a-multi-account-environment/)
An account can belong to only ONE OU at a time
Typical OU structure: [aws.amazon](https://aws.amazon.com/blogs/industries/best-practices-for-aws-organizations-service-control-policies-in-a-multi-account-environment/)
Root
├── Management Account
├── OU: Security (audit, log archive accounts)
├── OU: Infrastructure (shared networking, DNS)
├── OU: Workloads
│ ├── OU: Production
│ │ └── Accounts: prod-app, prod-data, prod-api
│ └── OU: Development
│ └── Accounts: dev-team-a, dev-team-b
└── OU: Sandbox
└── Accounts: individual developer sandboxes
3. Policy Types ⭐¶
Organizations supports multiple policy types:
1. Service Control Policies (SCPs): ← most important
Restrict maximum permissions in member accounts
Must be ENABLED per organization (not on by default)
Apply to: all IAM users + roles in member accounts (including account root user)
Do NOT apply to: management account [docs.aws.amazon](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)
Do NOT grant permissions — only restrict them
2. Tag Policies:
Enforce consistent tagging across accounts
Example: require "Environment" tag with values: prod/dev/staging
Helps with cost allocation and resource management
3. Backup Policies:
Enforce AWS Backup plans across accounts
Example: all EC2 in prod accounts must be backed up daily
4. AI Services Opt-Out Policies:
Opt all accounts out of AI service data usage
(Prevents AWS using your data to train AI models)
5. Chatbot Policies:
Control AWS Chatbot configurations across accounts
SCP Deep Dive¶
SCP inheritance rules:
Account effective permissions = IAM permissions ∩ ALL SCPs in hierarchy
Parent OU SCP restricts → child CANNOT be more permissive → only further restrictive
Default: FullAWSAccess SCP attached to Root (allows everything) [docs.aws.amazon](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)
Remove FullAWSAccess → implicit deny everything → accounts can do nothing
Deny list strategy (recommended): [docs.aws.amazon](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)
Keep FullAWSAccess SCP → add explicit Deny SCPs for what to block
Example: Deny ec2:RunInstances for non-approved regions
Allow list strategy:
Remove FullAWSAccess → add explicit Allow SCPs for what IS permitted
Everything else implicitly denied
More restrictive → harder to maintain
SCP does NOT affect:
Management account (always exempt) [docs.aws.amazon](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)
Service-linked roles (AWS internal roles)
Anything before the account joins the organization
Common SCP guardrails: [aws.amazon](https://aws.amazon.com/blogs/industries/best-practices-for-aws-organizations-service-control-policies-in-a-multi-account-environment/)
1. Prevent leaving organization:
Deny: organizations:LeaveOrganization
2. Restrict to approved regions:
Deny: "*" where aws:RequestedRegion not in [us-east-1, eu-west-1]
Exclude global services from region restriction:
Condition: StringNotEquals + ArnNotLike for IAM/STS/CloudFront
3. Prevent disabling security services:
Deny: cloudtrail:StopLogging, cloudtrail:DeleteTrail,
config:DeleteConfigRule, guardduty:DeleteDetector
4. Require MFA for sensitive actions:
Deny: ec2:StopInstances where aws:MultiFactorAuthPresent: false
5. Prevent root user usage:
Deny: "*" where aws:PrincipalArn matches root ARN pattern
6. Enforce encryption:
Deny: s3:PutObject where s3:x-amz-server-side-encryption not set
4. Account Lifecycle Management¶
Create new account (programmatic):
aws organizations create-account \
--email newaccount@company.com \
--account-name "Production-App"
→ Account created with standard structure
→ Automatically joins organization under management account
→ An OrganizationAccountAccessRole is created for cross-account access
Invite existing account:
Send invitation → account owner accepts → joins organization
→ SCPs begin applying immediately on join
Move account between OUs:
aws organizations move-account \
--account-id 123456789012 \
--source-parent-id ou-xxxx-aaaaaaaa \
--destination-parent-id ou-xxxx-bbbbbbbb
→ New OU's SCPs apply immediately
Close account:
Must remove from org first OR use Organizations close account API
90-day closure period before permanent deletion
Delegated administrator:
Assign a member account as delegated admin for specific services
(GuardDuty, Security Hub, Macie, Config, etc.)
→ That account manages the service across org without management account access
Best practice: use Security/Audit OU account as delegated admin
5. AWS Services Integrating with Organizations¶
Billing:
AWS Cost Explorer: org-wide cost analysis
AWS Budgets: org-wide + per-account budgets
Cost and Usage Reports: org-level consolidated CUR
Security:
AWS CloudTrail: org trail → logs ALL accounts, ALL regions, one S3 bucket
AWS Config: org-wide config rules + aggregator
AWS GuardDuty: org-wide threat detection → findings centralized
AWS Security Hub: aggregate security findings across all accounts
AWS Macie: S3 data classification across all accounts
AWS Firewall Manager: WAF rules + Security Groups deployed org-wide
AWS IAM Access Analyzer: analyze resource policies org-wide
Management:
AWS Control Tower: automated landing zone on top of Organizations
AWS SSO/Identity Center: org-wide SSO + permission sets across all accounts
AWS Service Catalog: share product portfolios across accounts
AWS RAM (Resource Access Manager): share resources (subnets, AMIs) cross-account
6. Common Mistakes¶
| ❌ Wrong | ✅ Correct |
|---|---|
| SCPs grant permissions | SCPs restrict max permissions — they never grant |
| SCPs apply to management account | Management account is fully exempt from SCPs |
| Account can belong to multiple OUs | Account belongs to exactly one OU at a time |
| Removing FullAWSAccess SCP is safe | Removing it implicitly denies everything — accounts lose all access |
| SCP affects service-linked roles | SCPs do NOT restrict service-linked roles |
| Region restriction SCP blocks IAM/STS | Must exclude global services (IAM, STS, CloudFront, S3 namespace) from region deny SCPs |
| Organizations has a cost | Organizations is a completely free service |
7. Interview Questions Checklist¶
- What is an SCP? Does it grant or restrict permissions?
- Who is exempt from SCPs? (management account)
- Deny list strategy vs allow list strategy for SCPs — difference?
- How do you restrict resources to specific regions via SCP? (aws:RequestedRegion condition)
- How do you create an account programmatically? (Organizations create-account API)