You started with one AWS account. Then a colleague said, “We should separate production and dev.” Then compliance wanted its own sandbox. Then a new team spun up. And now you’re staring at six accounts, a browser with eight tabs open, and the sinking feeling that you clicked “Deploy” into the wrong environment again.
Welcome to multi-account AWS. It’s messy — but it doesn’t have to be.
Why Multiple Accounts in the First Place?
Before diving into the how, it’s worth reminding yourself why you ended up here. AWS itself recommends using multiple accounts as a fundamental isolation boundary. They’re not just organisational preferences — they’re a security primitive.
A few real reasons to separate accounts:
- Blast radius control. A misconfigured IAM policy in one account can’t cascade into another. If something catches fire, it burns in a contained room.
- Billing clarity. Chargeback to teams or projects becomes infinitely easier when costs are already separated at the account level.
- Compliance boundaries. Some regulations require strict separation between environments that handle regulated data and everything else.
- Permission simplicity. It’s far easier to say “this team has full access to this account” than to carve out fine-grained IAM policies across a shared account.
The complexity cost is real, but so is the payoff.
The Foundation: AWS Organizations
If you’re managing more than two accounts and you haven’t set up AWS Organisations, do that first. Everything else builds on it.
Organisations is the AWS-native way to group and centrally govern multiple accounts. Think of it as a folder structure for your accounts. At the top is a Management Account (formerly called the master account) — treat this one like your crown jewels. You don’t run workloads here. You govern from here.
Under the management account, you create Organisational Units (OUs) — logical groupings like:
Root├── Infrastructure├── Security├── Sandbox├── Production│ ├── Team A│ └── Team B└── Development
The OU structure matters because Service Control Policies (SCPs) attach to OUs. SCPs are the guardrails — they define the maximum permissions any account within that OU can ever have, regardless of what IAM says. A developer can’t accidentally enable a root-level service you’ve locked out at the SCP layer. That’s a powerful safety net.
Naming Things Like You Mean It
Sounds trivial. It isn’t. When you’re context-switching between accounts, ambiguous names are the enemy.
A naming convention that actually scales:
[company]-[environment]-[team/workload]
Examples:
- acme-prod-payments
- acme-dev-data-platform
- acme-sandbox-security
Also set account aliases. Every AWS account has a numeric ID (123456789012) that nobody remembers. An alias like acme-prod-payments shows up in the console and CLI, and dramatically reduces “wait, which account am I in?” moments.
Do this immediately for every account. It costs nothing and saves headaches immediately.
Tagging Strategy: The Thing Everyone Skips
Account-level separation handles the big picture. Tags handle the details within accounts.
Decide on a small, mandatory tag set and enforce it through SCPs or AWS Config rules:
| Environment | production, staging, dev |
| Team | platform, payments, data |
| CostCenter | eng-001 |
| ManagedBy | terraform, manual |
The keyword is mandatory. Tags only work if they’re actually there. Use AWS Config to flag untagged resources. Use tag policies in Organisations to standardise allowed values across accounts.
Getting Into the Right Account (Without Losing Your Mind)
This is where most of the daily friction lives. Switching accounts manually — logging out, logging back in, finding credentials — is not a sustainable workflow.
IAM Identity Centre (Formerly SSO)
AWS IAM Identity Centre is the answer, and it’s surprisingly underused. It gives you:
- A single sign-on portal where you pick an account and a role from a list
- Temporary credentials that auto-expire (no long-lived access keys floating around)
- Integration with your existing identity provider (Okta, Azure AD, Google Workspace)
You log in once. You see every account you have access to. You click. You’re in. No credential juggling.
For CLI work, it integrates with the AWS CLI’s –profile flag so you can target a specific account and role with every command. You can even set a default profile per terminal session, which keeps you honest about which account you’re operating in.
Color-Code Your Console
The AWS Console lets you set a custom navigation bar colour per account. This is a small thing with outsized psychological impact. Production is red. Development is green. Sandbox is grey. When you see orange, you know you’re in staging.
It won’t prevent every mistake, but it gives you a visual check before you click anything that matters.
Account Vending: Keeping Things Consistent
As your organization grows, you need a repeatable way to create new accounts with the right defaults baked in. Manually clicking through the console to set up a new account is a recipe for drift and inconsistency.
This is called account vending — and at its simplest, it means having a documented checklist (or better, an automated process) that every new account goes through:
- Enrolled in AWS Organizations under the right OU
- IAM Identity Centre access is configured
- Default CloudTrail logging is enabled.
- Budget alerts set
- Baseline SCPs applied
- Account alias set
- Default VPC deleted (optional, but often preferred in mature setups)
You don’t need a sophisticated tool to do this. A documented runbook is a massive improvement over ad hoc account creation. Automation comes later.
Cost Visibility Across Accounts
One of the silent killers of multi-account setups is cost sprawl. Resources get spun up across six accounts, and nobody’s watching.
A few things that help:
AWS Cost Explorer with linked accounts. Once accounts are in an Organisation, you can see consolidated billing in one view, broken down by account. Set this up immediately.
Budget alerts per account. AWS Budgets lets you set a monthly spend threshold and email someone when it’s crossed. $0 to set up, potentially saving thousands. Do this for every account, especially sandboxes.
Cost allocation tags. When tags are consistent (see above), Cost Explorer can slice costs by team, workload, or environment across all accounts at once. This is the payoff for the tagging discipline.
Security Baseline That Doesn’t Add Overhead
Security work in multi-account environments can feel like it multiplies with every new account. It doesn’t have to.
AWS Security Hub aggregates findings from GuardDuty, Config, Inspector, and others across all accounts into a single pane. You enable it once in a delegated administrator account, and it pulls in findings from the rest automatically.
GuardDuty is worth turning on everywhere. It’s passive, costs very little at low traffic volumes, and it catches things like credential exfiltration and unusual API call patterns that you’d never notice manually.
CloudTrail with a centralised log bucket. Every account should have CloudTrail enabled, and those logs should flow to a centralised S3 bucket in your security or logging account — one that nobody else can delete from. This gives you a complete audit trail that can’t be tampered with, even by an account owner.
The Mental Model That Keeps It Sane
Multi-account AWS gets unwieldy when accounts feel like arbitrary containers. It stays manageable when every account answers two questions clearly:
- Who owns it? One team or person is accountable.
- What runs here? The workload’s purpose should be clear from the name alone.
When those two things are true, account proliferation stops feeling chaotic. You know where to look, who to ask, and what the blast radius is if something goes wrong.
A Realistic Starting Point
If you’re currently managing multiple accounts ad hoc and feeling overwhelmed, here’s a practical order of operations:
- Set up AWS Organizations if you haven’t. Enrol all existing accounts.
- Define your OU structure — start simple, add depth later.
- Configure IAM Identity Centre and stop using IAM users where you can.
- Set account aliases and console colours for every account today.
- Enable GuardDuty and CloudTrail across the board with a central log destination.
- Create a budget alert for every account.
- Document your account vending checklist so the next account isn’t ad hoc.
None of these requires code. All of them compound over time.
Multi-account AWS is one of those things that feels harder than it is until you have the right mental model and a handful of key tools set up correctly. The goal isn’t to eliminate complexity — it’s to make the complexity legible. Once every account has a clear owner, a clear purpose, and consistent guardrails, the whole thing stops being something you manage reactively and becomes something that works quietly in the background.