Designing your hierarchy (with enterprise examples)
Principles and worked patterns for AWS Organizations, single accounts, multi-cloud groups, MSPs and regulated regions.
Designing your hierarchy (with enterprise examples)
How to decide what your tree should look like, and five worked patterns: one AWS Organization, one AWS account split by tags, many clouds and organisations, many customers, and regulated regions.
- Mirror how you are accountable for money, not how the cloud happens to be laid out. Business unit, then team, then environment works for most companies.
- Use the hierarchy for ownership and access: one place per account, and the right people seeing the right accounts.
- Use virtual tags for anything that cuts across accounts or lives inside one account, such as product, cost centre or customer.
- Use saved filters to reuse a slice of spend in views and reports.
- CostGlass does not import your AWS OU layout. You build the nodes and place the accounts yourself (by hand, by rule or by CSV).
- You have read Setting up your organisation hierarchy so the button names make sense.
- You know who in your company is responsible for each group of cloud accounts.
- Your cloud accounts are connected (or you know how many you will connect).
What is the best hierarchy?
There is no single best tree, but there is a good test: for each node, can you name one person or team who is accountable for its spend? If you can, the node is useful. If a node exists only because "that is where the account happens to be", it probably is not.
Principles
- Mirror accountability. Top level: the largest parts of the company (business units, subsidiaries or regions). Next: the teams that own the budgets. Last, if useful: environments such as Production and Non-production.
- Keep it shallow. Three or four levels is plenty. Every extra level is something to maintain.
- One account, one node. An account can sit in only one node, so choose the dimension that has to be exclusive, usually who owns it. Put the dimension that overlaps (product, project, customer) in virtual tags.
- Do not make the cloud the top level. A tree that starts with "AWS", "Azure", "Google" answers "how much do we spend on each cloud?" which Cost Explorer and Cloud Spend already show. Put clouds at the bottom: each team node holds that team's accounts from every cloud.
- Name nodes after things that last. Team names change less often than project names.
- Plan for access. Anyone you bind to a node sees everything under it. Make sure a node never contains accounts one group should not see.
| Shape | Good when | Watch out for |
|---|---|---|
| Business unit → team → environment | You have chargeback or showback by team, and different people own production and development. | Many small nodes if you have hundreds of accounts. Use rules or a CSV rather than clicking. |
| Subsidiary or region → team | Different legal entities or countries pay their own bills. | Teams that work across subsidiaries need accounts in more than one place. |
| By cloud provider | Only a separate team looks after each cloud. | Hides who owns the money, and duplicates what Cloud Spend already shows. |
| By product | A product team owns all its accounts. | Shared accounts (networking, logging) fit nowhere. Give them their own "Shared services" node. |
How hierarchy, virtual tags and saved filters fit together
A simple rule of thumb: if the answer must be exclusive and decides access, use the hierarchy. If it is a label on spend, use a virtual tag. If it is a repeated way of looking at spend, save it as a filter.
Pattern A: one AWS Organization with OUs
Situation. You have one AWS Organization, with member accounts grouped into AWS Organizational Units (OUs) such as Production, Non-Production and Sandbox, and teams own accounts inside them.
Option 1: mirror the OUs
Best when your OUs already represent who is accountable.
aws as the provider.Option 2: follow teams, not OUs
Best when an OU mixes several teams. Make the top level the teams, then put environments beneath. The CSV is the same shape, with team first and environment second.
If your account display names carry a convention (for example every name contains "prod"), an Auto-Rules rule with Display Name contains prod can place many accounts in one click of Run Rules Now.
The root has two nodes: Product Engineering and Data & Analytics. Under each are the teams, and under each team Production and Non-production hold the accounts. The Head of Data is bound to Data & Analytics and sees only those accounts. The finance lead is not bound and sees everything.
Pattern B: one AWS account, workloads separated only by tags
Situation. Everything runs in a single AWS account. Teams or products are told apart only by resource tags such as team or product.
Pattern C: several AWS Organizations, Azure tenants, Google billing accounts and Oracle tenancies
Situation. A group with subsidiaries, each with its own AWS Organization, Azure tenant, Google Cloud billing account or Oracle tenancy, and you want one view across all of them.
aws and azure. Several clouds can sit in the same team node.Pattern D: an MSP or reseller with many customers
Situation. You manage cloud costs for several customers and each customer must never see another.
- Each organisation has its own plan, billing, team, API keys and audit log.
- An email address can belong to only one organisation, so one of your engineers needs a separate email address for each customer organisation they work in. There is no screen that shows several organisations at once.
- Within one customer you can still use the hierarchy, virtual tags and saved filters as in the other patterns.
Pattern E: regulated regions
Situation. Data about EU users must stay in the EU, UK data in the UK, and so on.
When an organisation is created, the person choosing a region on the sign-up page chooses where all of its data is stored. The region is fixed from then on and cannot be changed. Each region is its own site with its own database, so a hierarchy cannot span regions.
- Create one CostGlass organisation per region, each signed up in that region. Connect only the cloud accounts whose cost data belongs there.
- Use the hierarchy inside each organisation as in the other patterns.
- Group-level reporting across regions is done outside CostGlass today (for example by combining exports from each organisation), because the organisations do not see each other.
- An email address can be registered in only one region. A person who works across regions needs a different address in each.
See Data residency & retention for what is fixed and what you can set.
A short design checklist
- Write down who is accountable for each group of accounts.
- Draw the tree on paper with at most four levels.
- Decide which cuts are exclusive (hierarchy) and which overlap (virtual tags).
- Prepare a CSV, or the rule patterns, to place the accounts.
- Create the nodes, import, and look at Root Unplaced Accounts: it should reach zero.
- Bind people, then sign in as one of them (or ask them) to check what they see.