A Multi-Account AWS Layout for SOC 2: Dev, Staging, Prod
A multi-account AWS setup for SOC 2 uses separate accounts for development, staging and production, a dedicated account for logs and security tooling, and a management account that runs nothing. Accounts are the strongest isolation boundary AWS offers, which makes access and change controls easier to explain to an auditor.
SOC 2 doesn't require multiple accounts, but it does expect separated environments and controlled access. Here's a layout that supports both, and how to reach it from a single account.
Vendors Covered in this Article
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
What accounts should you create?
Use AWS Organizations to hold the accounts, then start with this minimal set:
- Management account: owns the organization, billing and policies. No workloads, very few people with access.
- Security or log archive account: receives organization-wide audit logs and holds security tooling, so someone who compromises a workload account can't erase the trail.
- Production: customer-facing workloads and data. Tightest access.
- Staging: a production-like environment for release testing, with synthetic or scrubbed data.
- Development: experiments and day-to-day engineering, with looser permissions.
- Shared services (optional): container registry, CI runners or network hubs used by all environments.
Use organizational units to apply rules to sets of accounts, for example one for workloads and one for security. Keep the structure small until you have a reason to expand.
How do you control access across accounts?
Centralize identity. Connect your company identity provider to AWS IAM Identity Center so people sign in once and are assigned roles per account, with no long-lived IAM users. Build role sets by job: developers get broad access in development, read access in staging and none or break-glass in production. Production changes should flow through your deployment pipeline, which assumes a role, rather than through individuals.
Require multi-factor authentication for everyone, keep a documented emergency access process for the management account, and review who holds which role on a schedule. Auditors typically ask for evidence of access reviews, so record each review, including the date, the reviewer and the changes made.
Which guardrails do you apply at the organization level?
Service control policies (SCPs) set the maximum permissions any account can have, whatever its local admins do. Start with a small set:
- Deny disabling or altering the organization's audit logging and security services.
- Restrict use of regions you don't operate in.
- Deny leaving the organization and creating access keys for the root user.
- Prevent public exposure defaults, such as turning off account-level Block Public Access.
- Test each policy in a sandbox organizational unit before attaching it to production.
Then turn on organization-wide logging: a trail that records API activity from every account into the log archive account, configuration recording, and threat detection. The AWS security baseline checklist for a new account lists the basics each account should have.
How does this map to SOC 2 evidence?
Auditors test that your controls exist and, for a Type 2 report, that they operated over the period. A multi-account layout gives you clear answers for several common requests:
- Environment separation: production data lives only in the production account, and development can't reach it.
- Change management: production deploys come from a pipeline role, with pull request approval in your code host as the record.
- Logical access: an identity provider assignment list per account shows who can do what.
- Logging and monitoring: an organization trail and alerting configuration prove events are captured and retained.
- Configuration baselines: policy definitions show what's enforced.
A compliance platform such as Vanta can connect to every account and collect much of this evidence continuously. Confirm in a demo how it handles multiple accounts and which checks it runs.
How do you get there from a single account?
Don't try to move everything at once. Create the organization and the log archive account first, turn on centralized logging, and connect identity. Then create a new production account and move workloads gradually, starting with stateless services, then data stores with a rehearsed migration. Networking and DNS often cause the most surprises, so map connections between services before moving any of them.
Infrastructure as code makes each new account repeatable. Expect the work to take longer than the diagram suggests. Related moves are covered in migrating Next.js from Vercel to AWS, the Heroku to ECS checklist, and the cloud choice in AWS vs GCP vs Azure for startups.
What Good Looks Like
Production, staging and development live in separate accounts, with organization-wide logging in a protected account and access granted through a central identity provider.
Building The Capability (5-Stage Skill Ladder)
How to Get Started
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Frequently Asked Questions
Does SOC 2 require separate AWS accounts?
No. SOC 2 expects controlled access, environment separation and change management, but doesn't prescribe how. Separate accounts are a clean way to satisfy those expectations and to explain them to an auditor.
How many AWS accounts does a small company need?
Often five or six: management, log archive, production, staging, development and possibly shared services. Start with the fewest that give you separation, and add more only when a reason appears.
What is a service control policy?
An organization-level rule that sets the maximum permissions accounts can have. Even administrators in a member account can't exceed it, so it's used to protect logging and block risky actions.
Should engineers have production access?
Limit it. Deploy through a pipeline role, give day-to-day engineers read access at most, and provide a logged break-glass process for emergencies. Review the access list on a schedule and keep the evidence.
About the numbers
This guide doesn't quote a sourced benchmark. Figures in it are estimates or general guidance, so check them against your own numbers.
Related Guides
AWS Security Baseline: What to Set Up in a New Account
A first-day AWS security checklist for a new account: root user, identity, logging, storage, networking, budgets and monitoring, in the order to do them.
Moving a Next.js App From Vercel to AWS: Options and Steps
Decide whether and how to move a Next.js app from Vercel to AWS: container versus serverless options, caching, images, previews, DNS cutover and rollback.
Moving From Heroku to AWS ECS: A Checklist by Stage
A staged checklist for moving an app from Heroku to AWS ECS: mapping dynos and add-ons, containers, database cutover, DNS and a rollback plan.
AWS vs Google Cloud vs Microsoft Azure: Cloud Platforms for Startups Compared
Compare AWS, Google Cloud, and Microsoft Azure for startups: startup credits, Kubernetes engines, AI APIs, reliability budgets, and developer velocity.
AWS or Google Cloud for an MSP Managing Many Client Accounts
What IT consultancies and managed service providers should check before standardizing on AWS or Google Cloud across client accounts.
AWS vs Google Cloud for B2B SaaS: Cloud Platform Comparison
Compare AWS and Google Cloud for B2B SaaS: hosting COGS, GKE vs EKS, RDS Aurora vs Cloud SQL, SOC 2 compliance, and multi-tenant security architecture.