skip to content

Many product teams at your company need self-service on AWS. How would you decide between giving each team its own AWS account governed by organization-level policies and keeping teams together in shared accounts governed by permissions boundaries?

level: principalimportance: nice to knowfreq 26%

answer

  1. isolation unit versus delegation unit
  2. who can remove the control
  3. quotas, billing, blast radius are per account
  4. boundaries are finer than accounts
  5. most designs layer both, not choose

basics

~20 s

Separate accounts give hard isolation of blast radius, quotas and billing with guardrails teams cannot lift, at the cost of account sprawl and cross-account plumbing. Permissions boundaries are cheaper and finer-grained but sit inside one account, so they cap identities without isolating resources.

solid answer

~40 s

I decide on what needs isolating, not on policy elegance. A separate account is the only hard boundary AWS offers for blast radius, service quotas, billing attribution and "a guardrail the team cannot remove", because organization-level policies are controlled from above while an in-account boundary can be detached by anyone with IAM admin there. The cost is real: more accounts to bootstrap, cross-account access to plumb, shared services to centralize. Permissions boundaries are the right tool for delegating policy authorship *within* an account — they cap identities cheaply and per-team, but they do nothing about one team exhausting a quota or reading another's resources. In practice I use both: accounts as the isolation unit for teams and environments, and boundaries inside each account so the team can self-serve roles without minting an admin.

go deeper

for a junior

Recall the difference in kind: an account isolates resources, quotas and billing, while a permissions boundary caps what one identity's policies can authorize inside an account.

for a middle

Explain the concrete costs of the account model — bootstrap, cross-account access, sign-in — and why a boundary is still needed inside an account where the team writes its own roles.

for a senior

Show the layering in operational terms: which guardrails must be un-liftable, which controls the team owns, and what breaks first under each choice.

for a principal

Own the sequencing and the accepted risk. Name what you would not isolate yet, what triggers the move to account-per-team, and what platform investment has to land before the model is sustainable.

## Frame the question as "what am I isolating?" The two mechanisms answer different questions, and the interview answer that lands separates them before choosing. An account is an **isolation** unit. A permissions boundary is a **delegation** unit. Asking "account or boundary?" as though they were substitutes is the trap; asking "what must be isolated, and who must be unable to lift the control?" produces a defensible design. ## What only a separate account gives you - **Blast radius.** Resources in different accounts do not see each other by default. A misconfigured policy inside one account cannot expose another account's data unless someone deliberately builds the cross-account path. - **Service quotas.** Quotas are largely per-account per-Region. One team's batch job exhausting a quota is contained rather than shared. - **Billing attribution.** Cost rolls up per account for free, without depending on tagging discipline. - **A control the team cannot remove.** Organization-level policies applied to an account are administered from the management account. Even a team member holding IAM admin in their own account cannot lift them. A permissions boundary in a shared account can be detached by anyone with the IAM write permissions to do so. - **A clean radius for incident response.** Compromise of a credential is scoped to what that account holds. ## What that costs - **Bootstrap and lifecycle.** Every account needs baseline setup: logging, network, roles, guardrails, vending. This has to be automated or it becomes a queue. - **Cross-account plumbing.** Anything shared — a data lake, a shared VPC, an artifact store, a central log archive — now needs cross-account access, which means both sides must permit it and someone must own that surface. - **Cognitive load.** Engineers switch accounts, roles and profiles constantly, and "which account is this in?" becomes a real operational question. - **Ceilings on count.** Account sprawl is manageable with automation but is not free; it needs naming, ownership and decommissioning conventions. ## What a permissions boundary gives you that an account does not Separating accounts does not, by itself, stop the people inside an account from granting themselves more than they should. If a team holds IAM write permissions in their own account — and they usually must, to self-serve roles for their workloads — they can create an administrator unless something caps what they create. That is precisely the boundary's job: bound whatever identity policies they author, so the ceiling is reviewed once instead of every policy being reviewed forever. Boundaries are also finer-grained than an account. You can give the CI role a different ceiling from the developer role and from the workload role in the same account, without any of the plumbing that separating them into accounts would demand. ## The layering that most organizations converge on 1. **Accounts as the isolation unit** — per team and per environment, at minimum production separated from everything else, because production is the isolation that matters most. 2. **Organization-level policies as the un-liftable guardrails** — the small set of rules that must hold no matter who is admin in the account: allowed Regions, protection of the audit trail, prohibition of the handful of account-level settings that would break the model. 3. **Permissions boundaries inside each account for delegation** — so the team can create their own roles without creating an administrator, and the platform team reviews one ceiling rather than a stream of policies. Each layer answers a distinct threat: the boundary defends against a mistake by a delegated engineer; the organization policy defends against the guardrail being lifted; the account defends against everything else in the account. ## When shared accounts genuinely win Do not treat account-per-team as automatic. Shared accounts are defensible when teams are small and numerous, when workloads share heavily (many services on one cluster, one VPC), when cross-account plumbing would dominate the actual engineering, or when the organization lacks the automation to vend and maintain accounts — an unmaintained account is worse than a well-governed shared one. In that world, boundaries plus disciplined resource-level policies and tagging carry the load, and you accept that isolation is soft. ## How to present the decision A strong answer names the failure each option leaves open and says which one you are willing to accept. "Shared accounts with boundaries, accepting that quota exhaustion and lateral resource access are possible, because we have twelve teams sharing one platform and no account automation yet — with production split out, and a plan to vend accounts once the tooling exists" is a much better answer than a categorical preference. The maturity signal is sequencing: what you would do first, and what triggers the move.

  • If you already run account-per-team, do you still need permissions boundaries inside those accounts?
    Usually yes. Teams that self-serve need IAM write permissions in their own account, and those are escalation-equivalent to admin. A boundary caps whatever they author, so the platform team reviews one ceiling instead of every policy. Without it, account separation limits the damage but does not prevent an unintended administrator inside the account.
  • What is the first thing you would separate if you could only split one axis?
    Environments before teams — production into its own account, everything else behind it. The failure that hurts most is a non-production change reaching production data or capacity, and that split is cheap to justify, cheap to explain and rarely contested. Team separation can follow once account vending is automated.
  • What operational investment must exist before account-per-team is a good idea?
    Automated account vending with a baseline applied on creation — logging to a central archive, network, break-glass access, guardrails and boundaries — plus federated sign-in so engineers do not manage credentials per account, and an ownership and decommissioning convention. Without those, each new account is a hand-built snowflake and the model degrades faster than the shared account it replaced.

saying these in an interview costs you the question

  • Says accounts and boundaries solve the same problem
  • Assumes account-per-team with no vending automation
  • Believes an account boundary stops in-account privilege escalation
  • Treats permissions boundaries as isolating resources or quotas
  • Chooses categorically without naming the accepted failure

context