Developing a Multi-Account AWS Environment Strategy
Licensed image: optimarc/Shutterstock.com

Developing a Multi-Account AWS Environment Strategy


Explore twelve common patterns for effectively and efficiently developing a multi-account AWS environment strategy.

Introduction

Every company is different: its organizational structure, the length of time it has existed, how fast it has grown, the industries it serves, its product and service diversity, public or private sector, and its geographic footprint. This uniqueness is reflected in how it organizes and manages its Cloud resources. Just as no two organizations are exactly alike, the structure of their AWS environments is rarely identical.

Some organizations successfully operate from a single AWS account, while others manage workloads spread across dozens or even hundreds of accounts. The volume and purpose of an organization’s AWS accounts are a result of multiple factors, including length of time spent on AWS, Cloud maturity, organizational structure and complexity, sectors, industries, and geographies served, product and service mix, compliance and regulatory requirements, and merger and acquisition activity.

“By design, all resources provisioned within an AWS account are logically isolated from resources provisioned in other AWS accounts, even within your own AWS Organizations.” (AWS)

Working with industry peers, the AWS community, and a wide variety of customers, one will observe common patterns for how organizations separate environments and workloads using AWS accounts. These patterns form an AWS multi-account strategy for operating securely and reliably in the Cloud at scale. The more planning an organization does in advance to develop a sound multi-account strategy, the less the burden that is required to manage changes as the organization grows over time.

The following post will explore twelve common patterns for effectively and efficiently organizing multiple AWS accounts. These patterns do not represent an either-or choice; they are designed to be purposefully combined to form a multi-account AWS environment strategy for your organization.

Patterns

  • Pattern 1: Single “Uber” Account
  • Pattern 2: Non-Prod/Prod Environments
  • Pattern 3: Upper/Lower Environments
  • Pattern 4: SDLC Environments
  • Pattern 5: Major Workload Separation
  • Pattern 6: Backup
  • Pattern 7: Sandboxes
  • Pattern 8: Centralized Management and Governance
  • Pattern 9: Internal/External Environments
  • Pattern 10: PCI DSS Workloads
  • Pattern 11: Vendors and Contractors
  • Pattern 12: Mergers and Acquisitions

Patterns 1–8 are progressively more mature multi-account strategies, while Patterns 9–12 represent special use cases for supplemental accounts.

Multi-Account Advantages

According to AWS’s whitepaper, Organizing Your AWS Environment Using Multiple Accounts , the benefits of using multiple AWS accounts include the following:

  • Group workloads based on business purpose and ownership
  • Apply distinct security controls by environment
  • Constrain access to sensitive data (including compliance and regulation)
  • Promote innovation and agility
  • Limit the scope of impact from adverse events
  • Support multiple IT operating models
  • Manage costs (budgeting and cost attribution)
  • Distribute AWS Service Quotas (fka limits) and API request rate limits

As we explore the patterns for organizing your AWS accounts, we will see how and to what degree each of these benefits is demonstrated by that particular pattern.

AWS Control?Tower

Discussions about AWS multi-account environment strategies would not be complete without mentioning AWS Control Tower . According to the documentation, “AWS Control Tower offers a straightforward way to set up and govern an AWS multi-account environment, following prescriptive best practices.” AWS Control Tower includes Landing zone , described as “a well-architected, multi-account environment based on security and compliance best practices.

AWS Control Tower is prescriptive in the Shared accounts it automatically creates within its AWS Organizations’ organizational units (OUs). Shared accounts created by AWS Control Tower include the Management, Log Archive, and Audit accounts. The previous standalone AWS service, AWS Landing Zone , maintained slightly different required accounts, including Shared Services, Log Archive, Security, and optional Network accounts. Although prescriptive, AWS Control Tower is also flexible and relatively unopinionated regarding the structure of Member accounts . Member accounts can be enrolled or unenrolled in AWS Control Tower.

You can decide whether or not to implement AWS Organizations or AWS Control Tower to set up and govern your AWS multi-account environment. Regardless, you will still need to determine how to reflect your organization’s unique structure and requirements in the purpose and quantity of the accounts you create within your AWS environment.

Common Multi-Account Patterns

While working with peers, community members, and a wide variety of customers, I regularly encounter the following twelve patterns for organizing AWS accounts. As noted earlier, these patterns do not represent an either-or choice; they are designed to be purposefully combined to form a multi-account AWS environment strategy for your organization.

Pattern 1: Single “Uber”?Account

Organizations that effectively implement Pattern 1: Single “Uber” Account organize and separate environments and workloads at the sub-account level. They often use Amazon Virtual Private Cloud (Amazon VPC), an AWS account-level construct, to organize and separate environments and workloads. They may also use Subnets (VPC-level construct) or AWS Regions and Availability Zones to further organize and separate environments and workloads.

No alt text provided for this image
Pattern 1: Single “Uber” Account

Pros

  • Few, if any, significant advantages, especially for customer-facing workloads

Cons

  • Decreased ability to limit the scope of impact from adverse events (widest blast radius)
  • If the account is compromised, then all the organization’s workloads and data, possibly the entire organization, are potentially compromised (e.g., Ransomware attacks such as Encryptors, Lockers, and Doxware)
  • Increased risk that networking or security misconfiguration could lead to unintended access to sensitive workloads and data
  • Increased risk that networking, security, or resource management misconfiguration could lead to broad or unintended impairment of all workloads?
  • Decreased ability to perform team-, environment-, and workload-level budgeting and cost attribution
  • Increased risk of resource depletion (soft and hard service quotas)
  • Reduced ability to conduct audits and demonstrate compliance

Pattern 2: Non-Prod/Prod Environments

Organizations that effectively implement Pattern 2: Non-Prod/Prod Environments organize and separate non-Production workloads from Production (PROD) workloads using separate accounts. Most often, they use Amazon VPCs within the non-Production account to separate workloads or Software Development Lifecycle (SDLC) environments, including Development (DEV), Testing (TEST) or Quality Assurance (QA), and Staging (STAGE).

In some organizations, the Staging environment is used for User Acceptance Testing (UAT), performance (PERF) testing, and load testing before releasing workloads to Production. While in other organizations, STAGE, UAT, and PERF are each treated as separate environments at the account or VPC level.

Isolating Production workloads into their own account(s) and strictly limiting access to those workloads represents a significant first step in improving the overall maturity of your AWS environment strategy.

No alt text provided for this image
Pattern 2: Non-Prod/Prod Environments

Pros

  • Limit the scope of impact on Production as a result of adverse non-Production events (narrower blast radius)
  • Logical separation and security of Production workloads and data
  • Tightly control and limit access to Production, including the use of Break-the-Glass procedures (aka Break-glass or BTG); draws its name from “breaking the glass to pull a fire alarm
  • Eliminate the risk that non-Production networking or security misconfiguration could lead to unintended access to sensitive Production workloads and data
  • Eliminate the chance that non-Production networking, security, or resource management misconfiguration could lead to broad or unintended impairment of Production workloads
  • Conduct audits and demonstrate compliance with Production workloads

Cons

  • If the Production account is compromised, then all the organization’s customer-facing workloads and data are potentially compromised
  • Decreased ability to perform team-, environment-, and workload-level budgeting and cost attribution in the shared non-Production environment
  • Increased risk of resource depletion (soft and hard service quotas) in the non-Production environment account

Pattern 3: Upper/Lower Environments

The next pattern, Pattern 3: Upper/Lower Environments, is a finer-grain variation of Pattern 2. With Pattern 3, we split all “Lower” environments into a single account and each “Upper” environment into its own account. In the software development process, initial environments, such as CI/CD for automated testing of code and infrastructure, Development, Test, UAT, and Performance, are called “Lower” environments. Conversely, later environments, such as Staging, Production, and even Disaster Recovery (DR), are called “Upper” environments. Upper environments typically require isolation for stability during testing or security for Production workloads and sensitive data.

Often, courser-grain patterns like Patterns 1–3 are carryovers from more traditional on-premises data centers, where compute, storage, network, and security resources were more constrained. Although these patterns can be successfully reproduced in the Cloud, they may not be optimal compared to more “Cloud-native” patterns, which provide increased separation of concerns.

No alt text provided for this image
Pattern 3: Upper/Lower Environments

Pros

  • Limit the scope of impact on individual Upper environments as a result of adverse Lower environment events (narrower blast radius)
  • Increased stability of Staging environment for critical UAT, performance, and load testing
  • Logical separation and security of Production workloads and data
  • Tightly control and limit access to Production, including the use of BTG
  • Eliminate the risk that non-Production networking or security misconfiguration could lead to unintended access to sensitive Production workloads and data
  • Eliminate the chance that non-Production networking, security, or resource management misconfiguration could lead to broad or unintended impairment of Production workloads
  • Conduct audits and demonstrate compliance with Production workloads

Cons

  • If the Production account is compromised, then all the organization’s customer-facing workloads and data are potentially compromised (e.g., Ransomware attack)
  • Decreased ability to perform team-, environment-, and workload-level budgeting and cost attribution in the shared Lower environment
  • Increased risk of resource depletion (soft and hard service quotas) in the Lower environment account

Pattern 4: SDLC Environments

The next pattern, Pattern 4: SDLC Environments, is a finer-grain variation of Pattern 3. With Pattern 4, we gain complete separation of each SDLC environment into its own AWS account. Using AWS services like AWS IAM Identity Center (fka AWS SSO), the Security team can enforce least-privilege permissions at an AWS Account level to individual groups of users, such as Developers, Testers, UAT, and Performance testers.

Based on my experience, Pattern 4 represents the minimal level of workload separation an organization should consider when developing its multi-account AWS environment strategy. Although Pattern 4 has a number of disadvantages, when combined with subsequent patterns and AWS best practices, this pattern begins to provide a scalable foundation for an organization’s growing workload portfolio.

No alt text provided for this image
Pattern 4: SDLC Environments

Patterns, such as Pattern 4, not only apply to traditional software applications and services. These patterns can be applied to data analytics, AI/ML, IoT, media services, and similar workloads where separation of environments is required.

No alt text provided for this image
Pattern 4: SDLC Environments for Data Analytics

Pros

  • Limit the scope of impact on one SDLC environment as a result of adverse events in another environment (narrower blast radius)
  • Logical separation and security of Production workloads and data
  • Increased stability of each SDLC environment
  • Tightly control and limit access to Production, including the use of BTG
  • Reduced risk that non-Production networking or security misconfiguration could lead to unintended access to sensitive Production workloads and data
  • Reduced risk that non-Production networking, security, or resource management misconfiguration could lead to broad or unintended impairment of Production workloads
  • Conduct audits and demonstrate compliance with Production workloads
  • Increased ability to perform budgeting and cost attribution for each SDLC environment
  • Reduced risk of resource depletion (soft and hard service limits) and IP conflicts and exhaustion within any single SDLC environment

Cons

  • All workloads for each SDLC environment run within a single account, including Production, increasing the potential scope of impact from adverse events within that environment’s account
  • If the Production account is compromised, then all the organization’s customer-facing workloads and data are potentially compromised
  • Decreased ability to perform workload-level budgeting and cost attribution

Pattern 5: Major Workload Separation

The next pattern, Pattern 5: Major Workload Separation, is a finer-grain variation of Pattern 4. With Pattern 5, we separate each significant workload into its own SDLC environment account. The security team can enforce finer-grain, least-privilege permissions at an AWS Account level to individual groups of users, such as Developers, Testers, UAT, and Performance testers, by their designated workload(s).

Pattern 5 has several advantages over the previous patterns. In addition to the increased workload-level security and reliability benefits, Pattern 5 can be particularly useful for organizations that operate significantly different technology stacks and specialized workloads, particularly at scale. Different technology stacks and specialized workloads often each have their own unique development, testing, deployment, and support processes. Isolating these types of workloads will help facilitate the support of multiple IT operating models.

No alt text provided for this image
Pattern 5: Major Workload Separation

Pros

  • Limit the scope of impact on an individual workload as a result of adverse events from another workload or SDLC environment (narrowest blast radius)
  • Increased ability to perform team-, environment-, and workload-level budgeting and cost attribution

Cons

  • If the Production account is compromised, then all the organization’s customer-facing workloads and data are potentially compromised (e.g., Ransomware attack)

Pattern 6:?Backup

In the earlier patterns, we mentioned that if the Production account were compromised, all the organization’s customer-facing workloads and data could be compromised. According to TechTarget , 2022 was a breakout year for Ransomware attacks . According to the US government’s CISA.gov website, “Ransomware is a form of malware designed to encrypt files on a device, rendering any files and the systems that rely on them unusable. Malicious actors then demand ransom in exchange for decryption.

According to AWS best practices , one of the recommended preparatory actions to protect and recover from Ransomware attacks is backing up data to an alternate account using tools such as AWS Backup and an AWS Backup vault . Solutions such as AWS Backup protect and restore data regardless of how it was made inaccessible.

With Pattern 6: Backup, we create one or more Backup accounts to protect against unintended data loss or account compromise. In the example below, we have two Backup accounts, one for Production data and one for all non-Production data.

No alt text provided for this image
Pattern 6: Backup

Pros

  • If the Production account is compromised (e.g., Ransomware attacks such as Encryptors, Lockers, and Doxware), there are secure backups of data stored in a separate account, which can be used to restore or recreate the Production environment

Cons

  • Few, if any, significant disadvantages when combined with previous patterns and AWS best-practices

Pattern 7: Sandboxes

The following pattern, Pattern 7: Sandboxes, supplements the previous patterns, designed to address the needs of an organization to allow individual users and teams to learn, build, experiment, and innovate on AWS without impacting the larger organization’s AWS environment. To quote the AWS blog, Best practices for creating and managing sandbox accounts in AWS , “Many organizations need another type of environment, one where users can build and innovate with AWS services that might not be permitted in production or development/test environments because controls have not yet been implemented.” Further, according to TechTarget , “a Sandbox is an isolated testing environment that enables users to run programs or open files without affecting the application, system, or platform on which they run.

Due to the potential volume of individual user and team accounts, sometimes referred to as Sandbox accounts, mature infrastructure automation practices, cost controls, and self-service provisioning and de-provisioning of Sandbox accounts are critical capabilities for the organization.

No alt text provided for this image
Pattern 7: Sandboxes

Pros

  • Allow individual users and teams to learn, build, experiment, and innovate on AWS without impacting the rest of the organization’s AWS environment

Cons

  • Without mature automation practices, cost controls, and self-service capabilities, managing multiple individual and team Sandbox accounts can become unwieldy and costly

Pattern 8: Centralized Management and Governance

We discussed AWS Control Tower at the beginning of this post. AWS Control Tower is prescriptive in creating Shared accounts within its AWS Organizations’ organizational units (OUs), including the Management, Log Archive, and Audit accounts. AWS encourages the use of AWS Control Tower to orchestrate multiple AWS accounts and services on your behalf while maintaining your organization’s security and compliance needs.

As exemplified in Pattern 8: Centralized Management and Governance, many organizations will implement centralized management whether or not they decide to implement AWS Control Tower. In addition to the Management account (payer account, fka master account), organizations often create Centralized Logging accounts, and Centralized Tooling (aka Shared Services) accounts for functions such as CI/CD, IaC provisioning, and deployment. Another common centralized management account is the Security Tooling account. Organizations use this account to centralize the monitoring, analysis, notification, and automated mitigation of potential security issues within their AWS environment. The Security account will include services such as Amazon Detective , Amazon Inspector , Amazon GuardDuty , and AWS Security Hub .

No alt text provided for this image
Pattern 8: Centralized Management and Governance

Pros

  • Increased ability to manage and maintain multiple AWS accounts with fewer resources
  • Reduced duplication of management resources across accounts
  • Increased ability to use automation and improve the consistency of processes and procedures across multiple accounts

Cons

  • Few, if any, significant disadvantages when combined with previous patterns and AWS best-practices

Pattern 9: Internal/External Environments

The next pattern, Pattern 9: Internal/External Environments, focuses on organizations with internal operational systems (aka Enterprise systems) in the Cloud and customer-facing workloads. Pattern 9 separates internal operational systems, platforms, and workloads from external customer-facing workloads. For example, an organization’s divisions and departments, such as Sales and Marketing, Finance, Human Resources, and Manufacturing, are assigned their own AWS account(s). Pattern 9 allows the Security team to ensure that internal departmental or divisional users are isolated from users who are responsible for developing, testing, deploying, and managing customer-facing workloads.

Note that the diagram for Pattern 9 shows remote users who access AWS End User Computing (EUC) services or Virtual Desktop Infrastructure (VDI), such as Amazon WorkSpaces and Amazon AppStream 2.0 . In this example, remote workers have secure access to EUC services provisioned in a separate AWS account, and indirectly, internal systems, platforms, and workloads.

No alt text provided for this image
Pattern 9: Internal/External Environments

Pros

  • Separation of internal operational systems, platforms, and workloads from external customer-facing workloads

Cons

  • Few, if any, significant disadvantages when combined with previous patterns and AWS best-practices

Pattern 10: PCI DSS Workloads

The next pattern, Pattern 10: PCI DSS Workloads, is a variation of previous patterns, which assumes the existence of Payment Card Industry Data Security Standard (PCI DSS) workloads and data. According to the AWS , “PCI DSS applies to entities that store, process, or transmit cardholder data (CHD) or sensitive authentication data (SAD), including merchants, processors, acquirers, issuers, and service providers. The PCI DSS is mandated by the card brands and administered by the Payment Card Industry Security Standards Council.

According to AWS’s whitepaper, Architecting for PCI DSS Scoping and Segmentation on AWS , “By design, all resources provisioned within an AWS account are logically isolated from resources provisioned in other AWS accounts, even within your own AWS Organizations. Using an isolated account for PCI workloads is a core best practice when designing your PCI application to run on AWS.” With Pattern 10, we separate non-PCI DSS and PCI DSS Production workloads and data. The assumption is that only Production contains PCI DSS data. Data in lower environments is synthetically generated or sufficiently encrypted, masked, obfuscated, or tokenized.

Note that the diagram for Pattern 10 shows Administrators. Administrators with different spans of responsibility and access are present in every pattern, whether specifically shown or not.

No alt text provided for this image
Pattern 10: PCI DSS Workloads

Pros

  • Increased ability to meet compliance requirements by separating non-PCI DSS and PCI DSS Production workloads

Cons

  • Few, if any, significant disadvantages when combined with previous patterns and AWS best-practices

Pattern 11: Vendors and Contractors

The next pattern, Pattern 11: Vendors and Contractors, is focused on organizations that employ contractors or use third-party vendors who provide products and services that interact with their AWS-based environment. Like Pattern 10, Pattern 11 allows the Security team to ensure that contractor and vendor-based systems’ access to internal systems and customer-facing workloads is tightly controlled and auditable.

Vendor-based products and services are often deployed within an organization’s AWS environment without external means of ingress or egress. Alternatively, a vendor’s product or service may have a secure means of ingress from or egress to external endpoints. Such is the case with some SaaS products, which ship an organization’s data to an external aggregator for analytics or a security vendor’s product that pre-filters incoming data, external to the organization’s AWS environment. Using separate AWS accounts can improve an organization’s security posture and mitigate the risk of adverse events on the organization’s overall AWS environment.

No alt text provided for this image
Pattern 11: Vendors and Contractors

Pros

  • Ensure access to internal systems and customer-facing workloads by contractors and vendor-based systems is tightly controlled and auditable

Cons

  • Few, if any, significant disadvantages when combined with previous patterns and AWS best-practices

Pattern 12: Mergers and Acquisitions

The next pattern, Pattern 12: Mergers and Acquisitions, is focused on managing the integration of external AWS accounts as a result of a merger or acquisition. This is a common occurrence, but the exact details of how best to handle the integration of two or more integrations depend on several factors. Factors include the required level of integration, for example, maintaining separate AWS Organizations , maintaining different AWS accounts, or merging resources from multiple accounts. Other factors that might impact account structure include changes in ownership or payer of acquired accounts, existing acquired cost-savings agreements (e.g., EDPs, PPAs, RIs, and Savings Plans), and AWS Marketplace vendor agreements. Even existing authentication and authorization methods of the acquiree versus the acquirer (e.g., AWS IAM Identity Center, Microsoft Active Directory (AD), Azure AD, and external identity providers (IdP) like Okta or Auth0).

The diagram for Pattern 12 attempts to show a few different M&A account scenarios, including maintaining separate AWS accounts for the acquirer and acquiree (e.g., acquiree’s Manufacturing Division account). If desired, the accounts can be kept independent but managed within the acquirer’s AWS Organizations’ organization. The diagram also exhibits merging resources from the acquiree’s accounts into the acquirer’s accounts (e.g., Sales and Marketing accounts). Resources will be migrated or decommissioned, and the account will be closed.

No alt text provided for this image
Pattern 12: Mergers and Acquisitions

Pros

  • Maintain separation between an acquirer and an acquiree’s AWS accounts within a single organization’s AWS environment
  • Potentially consolidate and maximize cost-saving advantages of volume-related financial agreements and vendor licensing

Cons

  • Migrating workloads between different organizations, depending on their complexity, requires careful planning and testing
  • Consolidating multiple authentication and authorization methods requires careful planning and testing to avoid improper privileges
  • Consolidating and optimizing separate cost-saving agreements and licensing between multiple organizations for economies of scale requires careful planning and an in-depth understanding of said agreements

Multi-Account AWS Environment Example

You can form an efficient and effective multi-account strategy for your organization by purposefully combining multiple patterns. Below is an example of combining the features of several patterns: Major Workload Separation, Backup, Sandboxes, Centralized Management and Governance, Internal/External Environments, and Vendors and Contractors.

According to AWS , “You can use AWS Organizations’ organizational units (OUs) to group accounts together to administer as a single unit. This greatly simplifies the management of your accounts.” If you decide to use AWS Organizations, each set of accounts associated with a pattern could correspond to an OU: Major Workload A, Major Workload B, Sandboxes, Backups, Centralized Management, Internal Environments, Vendors, and Contractors, and so forth.

No alt text provided for this image
Multi-Account AWS Environment Example

Conclusion

This post introduced twelve common patterns for effectively and efficiently organizing your AWS accounts. Instead of an either-or choice, these patterns are designed to be purposefully combined to form a multi-account strategy for your organization. Having a sound multi-account strategy will improve your security posture, maintain compliance, decrease the impact of adverse events on your AWS environment, and improve your organization’s ability to safely and confidently innovate and experiment on AWS.

Recommended References


This blog represents my viewpoints and not those of my employer, Amazon Web Services (AWS). All product names, logos, and brands are the property of their respective owners.

Juozas G.

Building reliable and scalable systems. Tools - AWS, Kubernetes, Terraform, Go, Docker, Linux, DevOps.

1 年

Nice article! I've seen organisations taking pattern no. 5 to extreme. Example: - Having each environment and service in a separate AWS account. - 3 environments (production, pre-production, testing) - 20 services (collectively representing a single system) - Resulting in 20 x 3 = 60 AWS accounts Everything can fall under "it depends", but what's your take on this strategy? Have you seen things taken too extreme in this end in the real world?

Ross D.

Head of Solution Architecture, AWS - MBA

1 年

Superb detail and reccomended reading for anyone managing multiple accounts in AWS.

Earl Bovell

Senior Solutions Architect @ AWS | EMBA, Cybersecurity

1 年

Gary…step away from the keyboard. You are far too productive! ;)

John Braden

Cloud Technical Account Manager

1 年

Excellent article, this is a great guide that is really needed for so many unicorns that grew quickly and are hitting limits and need to re-architect their workloads using a multi-account architecture!

Chad Lorenc

CISO/CSO/VP Information Security

1 年

Nicely done!

要查看或添加评论,请登录

Gary Stafford的更多文章

社区洞察

其他会员也浏览了