Skip to content

Commit ede1859

Browse files
committed
common_cfct_setup, docs & logging updates
1 parent 797bcff commit ede1859

31 files changed

+1667
-548
lines changed

CHANGELOG.md

+19-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Table of Contents<!-- omit in toc -->
44

55
- [Introduction](#introduction)
6+
- [2022-01-07](#2022-01-07)
67
- [2021-12-16](#2021-12-16)
78
- [2021-12-10](#2021-12-10)
89
- [2021-11-22](#2021-11-22)
@@ -19,11 +20,27 @@ All notable changes to this project will be documented in this file.
1920

2021
---
2122

23+
## 2022-01-07
24+
25+
### Added<!-- omit in toc -->
26+
27+
- [Customizations for AWS Control Tower (CFCT) Setup](aws_sra_examples/solutions/common/common_cfct_setup) solution
28+
29+
### Changed<!-- omit in toc -->
30+
31+
- Updates to the [stage_solution.sh](https://github.com/aws-samples/aws-security-reference-architecture-examples/blob/main/aws_sra_examples/utils/packaging_scripts/stage_solution.sh) packaging script to support better error logging and include
32+
packaging of `common` solutions.
33+
- In [Common Prerequisites](aws_sra_examples/solutions/common/common_prerequisites) and [AWS Config Management Account](aws_sra_examples/solutions/config/config_management_account) solutions:
34+
- Updates to logging to include tracebacks for when exceptions are raised.
35+
- In [Common Prerequisites](aws_sra_examples/solutions/common/common_prerequisites) solution:
36+
- Set `DeletionPolicy=Retain` and `UpdateReplacePolicy=Retain` for the IAM Role: `AWSControlTowerExecution`
37+
- Renamed `DEPLOYMENT-METHODS.md` to [CFCT-DEPLOYMENT-INSTRUCTIONS.md](aws_sra_examples/docs/CFCT-DEPLOYMENT-INSTRUCTIONS.md) to provide manual and automated steps for deployment of Customizations for Control Tower (CFCT), including prerequisites.
38+
2239
## 2021-12-16
2340

2441
### Added<!-- omit in toc -->
2542

26-
- [Config Management Account](aws_sra_examples/config/config_management_account) solution
43+
- [Config Management Account](aws_sra_examples/solutions/config/config_management_account) solution
2744

2845
### Changed<!-- omit in toc -->
2946

@@ -40,7 +57,7 @@ All notable changes to this project will be documented in this file.
4057
### Added<!-- omit in toc -->
4158

4259
- [Common Prerequisites](aws_sra_examples/solutions/common/common_prerequisites) solution
43-
- [Deployment Methods](aws_sra_examples/docs/DEPLOYMENT-METHODS.md) documentation
60+
- `Deployment Methods` documentation
4461
- [Staging Script](aws_sra_examples/utils/packaging_scripts/) - `stage_solution.sh`
4562

4663
### Changed<!-- omit in toc -->

README.md

+27-9
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,42 @@ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-
55
## Table of Contents<!-- omit in toc -->
66

77
- [Introduction](#introduction)
8+
- [Getting Started with SRA](#getting-started-with-sra)
89
- [Example Solutions](#example-solutions)
910
- [Utils](#utils)
11+
- [Environment Setup](#environment-setup)
1012
- [Repository and Solution Naming Convention](#repository-and-solution-naming-convention)
1113
- [Frequently Asked Questions](#frequently-asked-questions)
1214
- [Contributors](#contributors)
1315
- [License Summary](#license-summary)
1416

1517
## Introduction
1618

17-
This repository contains AWS CloudFormation templates to help developers and engineers deploy AWS security-related services in a multi-account environment following patterns that align with the
18-
[AWS Security Reference Architecture](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/). The Amazon Web Services (AWS) Security Reference Architecture (AWS SRA) is a holistic set of guidelines for deploying
19-
the full complement of AWS security services in a multi-account environment.
19+
This repository contains code to help developers and engineers deploy AWS security-related services in an `AWS Control Tower` multi-account environment following patterns that align with the
20+
[AWS Security Reference Architecture](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/). The Amazon Web Services (AWS) Security Reference Architecture (AWS SRA) is a holistic set of guidelines for deploying the full complement of AWS security services in a multi-account environment.
2021

21-
The AWS service configurations and resources (e.g. IAM roles and policies) deployed by these templates are deliberately very restrictive. They are intended to illustrate an implementation path rather than provide a complete solution. You will need to
22-
modify and tailor these templates to suit your individual environment and security needs.
22+
The AWS service configurations and resources (e.g. IAM roles and policies) deployed by these templates are deliberately very restrictive. They are intended to illustrate an implementation pattern rather than provide a complete solution. You may need to modify and tailor these solutions to suit your environment and security needs.
2323

24-
The examples within this repository have been deployed and tested using the corresponding deployment platform (e.g. AWS Control Tower and AWS CloudFormation StackSets).
24+
The examples within this repository have been deployed and tested within an `AWS Control Tower` environment using `AWS CloudFormation` as well as the `Customizations for AWS Control Tower (CfCT)` solution.
25+
26+
## Getting Started with SRA
27+
28+
![How to get started process diagram](./aws_sra_examples/docs/artifacts/where-to-start-process.png)
29+
30+
1. Setup the environment to configure [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html) within a new or existing AWS account.
31+
2. Deploy the [Common Prerequisites](aws_sra_examples/solutions/common/common_prerequisites) solution.
32+
3. Choose a deployment method:
33+
- [AWS CloudFormation StackSets/Stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)
34+
- [Customizations for AWS Control Tower (CFCT)](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/)
35+
4. (Optional) - Deploy the [Customizations for AWS Control Tower (CFCT) Setup](aws_sra_examples/common/common_cfct_setup) solution. **Note** Only implement if the CFCT deployment method was selected.
36+
5. Per your requirements select one or all of the [Example Solutions](aws_sra_examples/solutions) to implement via the selected deployment method.
2537

2638
## Example Solutions
2739

28-
- CloudTrail
29-
- [Organization CloudTrail](aws_sra_examples/solutions/cloudtrail/cloudtrail_org)
3040
- Common
31-
- [Common Prerequisites](aws_sra_examples/solutions/common/common_prerequisites)
3241
- [Common Register Delegated Administrator](aws_sra_examples/solutions/common/common_register_delegated_administrator)
42+
- CloudTrail
43+
- [Organization CloudTrail](aws_sra_examples/solutions/cloudtrail/cloudtrail_org)
3344
- Config
3445
- [Config Management Account](aws_sra_examples/solutions/config/config_management_account)
3546
- [Organization Aggregator](aws_sra_examples/solutions/config/config_aggregator_org)
@@ -56,6 +67,13 @@ The examples within this repository have been deployed and tested using the corr
5667
- packaging_scripts
5768
- package-lambda.sh (Creates the Lambda zip file and uploads to an S3 bucket)
5869

70+
## Environment Setup
71+
72+
Based on the deployment method selected these solutions are required to implement SRA solutions.
73+
74+
- [Common Customizations for AWS Control Tower (CFCT) Setup](aws_sra_examples/common/common_cfct_setup)
75+
- [Common Prerequisites](aws_sra_examples/solutions/common/common_prerequisites)
76+
5977
## Repository and Solution Naming Convention
6078

6179
The repository is organized by AWS service solutions, which include deployment platforms (e.g., AWS Control Tower and AWS CloudFormation StackSet).

aws_sra_examples/docs/DEPLOYMENT-METHODS.md renamed to aws_sra_examples/docs/CFCT-DEPLOYMENT-INSTRUCTIONS.md

+43-28
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,41 @@
1-
# Deployment Methods<!-- omit in toc -->
1+
# Customizations for AWS Control Tower Deployment Instructions<!-- omit in toc -->
22

33
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: CC-BY-SA-4.0
44

55
---
66

77
## Table of Contents<!-- omit in toc -->
88

9-
- [Customizations for AWS Control Tower Deployment Instructions](#customizations-for-aws-control-tower-deployment-instructions)
9+
- [Prerequisites](#prerequisites)
1010
- [References](#references)
1111

12-
## Customizations for AWS Control Tower Deployment Instructions
12+
## Prerequisites
1313

14-
### Prerequisites<!-- omit in toc -->
14+
### Enable Trusted Access for AWS CloudFormation StackSets<!-- omit in toc -->
15+
16+
1. Within the AWS CloudFormation StackSets console page, `Enable trusted access` with AWS Organizations to use service-managed permissions.
17+
2. See [Enable trusted access with AWS Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html) for more details.
18+
3. To verify that the trusted access is enabled:
19+
1. Within the AWS Organizations console page, select `Services` from the side menu
20+
2. Verify that `CloudFormation StackSets` has `Trusted access = Access enabled`
21+
22+
### Create the AWSControlTowerExecution IAM Role<!-- omit in toc -->
23+
24+
- The `AWSControlTowerExecution` Role provides the support needed to deploy solutions to the `management account` across regions as CloudFormation `StackSets` and it is required for the SRA CFCT solution deployments.
25+
- This role is created as part of the [common_prerequisites](../solutions/common/common_prerequisites) solution deployment.
26+
27+
## Deploy Customizations for AWS Control Tower (CFCT)<!-- omit in toc -->
28+
29+
The below prerequisites can be accomplished via the [common_cfct_setup](../solutions/common/common_cfct_setup/) automated solution or they can be done manually following the below steps.
1530

1631
1. Move the `Organizations Management Account` to an Organizational Unit (OU) (e.g. Management), so that CloudFormation StackSets can be deployed to the `Management Account`
1732
1. Within the AWS Control Tower console page, select `Organizational units` from the side menu, click the `Add an OU` button, and set the `OU name = Management`
1833
2. Within the AWS Organizations console page, select `AWS accounts` from the side menu
1934
1. Select the checkbox next to the `Management Account`
2035
2. From the `Actions` menu, select `Move` and select the new `Management OU` that was created above
2136
3. Select `Move AWS account`
22-
2. Within the AWS CloudFormation StackSets console page, `Enable trusted access` with AWS Organizations to use service-managed permissions. To verify that the trusted access is enabled:
23-
1. Within the AWS Organizations console page, select `Services` from the side menu
24-
2. Verify that `CloudFormation StackSets` has `Trusted access = Access enabled`
37+
2. Create the `AWSControlTowerExecution` IAM role in the `management account (home region)` by launching an AWS CloudFormation **Stack** using the
38+
[sra-common-prerequisites-control-tower-execution-role.yaml](../solutions/common/common_prerequisites/templates/sra-common-prerequisites-control-tower-execution-role.yaml) template file as the source.
2539
3. Deploy the [Customizations for AWS Control Tower](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) solution following the below instructions.
2640
1. In the `Management account (home region)`, deploy a new CloudFormation stack with the below recommended settings:
2741
<!-- markdownlint-disable-next-line MD034 -->
@@ -30,48 +44,49 @@ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-
3044
- `AWS CodePipeline Source` = AWS CodeCommit
3145
- `Failure Tolerance Percentage` = 0
3246
- Acknowledge that AWS CloudFormation might create IAM resources with custom names
33-
2. On the local machine install [git](https://git-scm.com/downloads) and [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html).
34-
3. Clone the AWS CodeCommit repository via `git clone codecommit::<HOME REGION>://custom-control-tower-configuration custom-control-tower-configuration`
47+
48+
### AWS CodeCommit Repo<!-- omit in toc -->
49+
50+
1. On the local machine install [git](https://git-scm.com/downloads) and [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html).
51+
2. Clone the AWS CodeCommit repository via `git clone codecommit::<HOME REGION>://custom-control-tower-configuration custom-control-tower-configuration`
3552

3653
### Deployment Instructions<!-- omit in toc -->
3754

3855
1. Determine which version of the [Customizations for AWS Control Tower](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) solution you have deployed:
39-
1. Within the `management account (home region)` find the **CloudFormation Stack** for the Customizations for Control Tower (e.g. custom-control-tower-initiation)
56+
1. Within the `management account (home region)` find the **CloudFormation Stack** for the Customizations for Control Tower (e.g. `custom-control-tower-initiation`, `sra-common-cfct-setup-main-ssm-rCFCTStack`, `sra-common-cfct-setup-main-rCFCTStack`)
4057
2. Select the `Outputs` tab
4158
3. The `CustomControlTowerSolutionVersion` **Value** is the version running in the environment
4259
1. Version 1 = v1.x.x = manifest.yaml version 2020-01-01
4360
2. Version 2 = v2.x.x = manifest.yaml version 2021-03-15
44-
2. Create the `AWSControlTowerExecution` IAM role in the `management account (home region)` by launching an AWS CloudFormation **Stack** using the
45-
[sra-common-prerequisites-control-tower-execution-role.yaml](../solutions/common/common_prerequisites/templates/sra-common-prerequisites-control-tower-execution-role.yaml) template file as the source.
46-
3. Follow the instructions for the cooresponding version:
61+
2. Follow the instructions for the cooresponding version:
4762
- [Version 1 Deployment Instructions](#version-1-deployment-instructions)
4863
- [Version 2 Deployment Instructions](#version-2-deployment-instructions)
4964

5065
#### Version 1 Deployment Instructions<!-- omit in toc -->
5166

5267
1. Copy the files to the Customizations for AWS Control Tower configuration `custom-control-tower-configuration`
53-
- parameters [**required for manifest version 2020-01-01**]
54-
- Copy the parameter files from the `parameters` folder
55-
- Only one of the main parameter files is required. We recommend using the `main-ssm` file.
56-
- policies [optional]
57-
- service control policies files (\*.json)
58-
- templates [**required**]
59-
- Copy the template files from the `templates` folder that are referenced in the `manifest.yaml`
60-
- Only one of the main template files is required. We recommend using the `main-ssm` file.
61-
- `manifest.yaml` [**required**]
68+
- parameters [**required for manifest version 2020-01-01**]
69+
- Copy the parameter files from the `parameters` folder
70+
- Only one of the main parameter files is required. We recommend using the `main-ssm` file.
71+
- policies [optional]
72+
- service control policies files (\*.json)
73+
- templates [**required**]
74+
- Copy the template files from the `templates` folder that are referenced in the `manifest.yaml`
75+
- Only one of the main template files is required. We recommend using the `main-ssm` file.
76+
- `manifest.yaml` [**required**]
6277
2. Verify and update the parameters within each of the parameter json files to match the target environment
6378
3. Update the manifest.yaml file with the `organizational unit names`, `account names` and `SSM parameters` for the target environment
6479
4. Deploy the Customizations for AWS Control Tower configuration by pushing the code to the `AWS CodeCommit` repository or uploading to the `AWS S3 Bucket`
6580

6681
#### Version 2 Deployment Instructions<!-- omit in toc -->
6782

6883
1. Copy the files to the Customizations for AWS Control Tower configuration `custom-control-tower-configuration`
69-
- policies [optional]
70-
- service control policies files (\*.json)
71-
- templates [**required**]
72-
- Copy the template files from the `templates` folder that are referenced in the `manifest-v2.yaml`
73-
- Only one of the main template files is required. We recommend using the `main-ssm` file.
74-
- `manifest-v2.yaml` [**required**]
84+
- policies [optional]
85+
- service control policies files (\*.json)
86+
- templates [**required**]
87+
- Copy the template files from the `templates` folder that are referenced in the `manifest-v2.yaml`
88+
- Only one of the main template files is required. We recommend using the `main-ssm` file.
89+
- `manifest-v2.yaml` [**required**]
7590
2. Rename the `manifest-v2.yaml` to `manifest.yaml`
7691
3. Update the manifest.yaml file with the `parameters`, `organizational unit names`, `account names` and `SSM parameters` for the target environment
7792
4. Deploy the Customizations for AWS Control Tower configuration by pushing the code to the `AWS CodeCommit` repository or uploading to the `AWS S3 Bucket`
Loading
Binary file not shown.

0 commit comments

Comments
 (0)