Skip to content

Commit 1df3f9a

Browse files
authored
Merge pull request #832 from aws-samples/merge1.5
Merge-150-Codebase-Try2
2 parents f9bcf3c + bdbfc2a commit 1df3f9a

File tree

1,108 files changed

+95215
-31263
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,108 files changed

+95215
-31263
lines changed

.eslintrc.js

Lines changed: 188 additions & 255 deletions
Large diffs are not rendered by default.

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Use Node.js
1818
uses: actions/setup-node@v1
1919
with:
20-
node-version: 12
20+
node-version: 14
2121
- name: Cache Node.js modules
2222
uses: actions/cache@v1
2323
with:
@@ -28,7 +28,7 @@ jobs:
2828
${{ runner.OS }}-
2929
- name: Install Node.js modules
3030
run: |
31-
npm install -g pnpm@5.18.9
31+
npm install -g pnpm@6.2.3
3232
pnpm install --unsafe-perm --frozen-lockfile
3333
- name: Fix nasty bug in CDK
3434
run: |
@@ -37,7 +37,7 @@ jobs:
3737
find node_modules -name runtime-info.js -exec sed -i 's/mod.paths/(mod.paths || [])/g' {} \;
3838
- name: Build all workspaces
3939
run: |
40-
pnpm recursive run build -- --noEmit
40+
pnpm recursive run build
4141
- name: Run tests in all workspaces
4242
run: |
4343
pnpm recursive run test -- --pass-with-no-tests --silent

.github/workflows/lint-prettier.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Use Node.js
1818
uses: actions/setup-node@v1
1919
with:
20-
node-version: 12
20+
node-version: 14
2121
- name: Cache Node.js modules
2222
uses: actions/cache@v1
2323
with:
@@ -28,7 +28,7 @@ jobs:
2828
${{ runner.OS }}-
2929
- name: Install Node.js modules
3030
run: |
31-
npm install -g pnpm@5.18.9
31+
npm install -g pnpm@6.2.3
3232
pnpm install --frozen-lockfile
3333
- name: Analyze TypeScript files
3434
run: |
@@ -42,10 +42,10 @@ jobs:
4242
- name: Use Node.js
4343
uses: actions/setup-node@v1
4444
with:
45-
node-version: 12
45+
node-version: 14
4646
- name: Install Prettier
4747
run: |
48-
npm install -g prettier@2.2.0
48+
npm install -g prettier@2.2.1
4949
- name: Analyze TypeScript files
5050
run: |
5151
prettier --check **/*.ts

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ jobs:
2828
env:
2929
RUNNER_TEMP: /tmp/runner
3030
with:
31-
node-version: 12
31+
node-version: 14
3232
- name: Install pnpm
3333
run: |
34-
npm install -g pnpm@5.18.9
34+
npm install -g pnpm@6.2.3
3535
- name: Generate Changelog
3636
id: changelog
3737
env:

.gitignore

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
cdk.out
2-
node_modules
3-
.DS_Store
4-
*.log
5-
config.json
6-
aws-landing-zone-configuration.zip
7-
**/dist
8-
.idea
1+
cdk.out
2+
node_modules
3+
.DS_Store
4+
*.log
5+
config.json
6+
aws-landing-zone-configuration.zip
7+
**/dist
8+
.idea

CHANGELOG.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
1-
This project is tracking change history using GitHub Releases located [here](https://github.com/aws-samples/aws-secure-environment-accelerator/releases).
1+
# Change Log
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.5.0] - 2021-10-01
9+
10+
### Added
11+
12+
- All files, initial AWS Solutions Version
13+
- This project is tracking change history using GitHub Releases located [here](https://github.com/aws-samples/aws-secure-environment-accelerator/releases).

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ reported the issue. Please try to include as much information as you can. Detail
2929

3030
Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
3131

32-
1. You are working against the latest source on the _master_ branch.
32+
1. You are working against the latest source on the _main_ branch.
3333
2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
3434
3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
3535
4. You have reviewed and are aligned with the `Accelerator Development First Principles`

README.md

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
The AWS Accelerator is a tool designed to help deploy and operate secure multi-account, multi-region AWS environments on an ongoing basis. The power of the solution is the configuration file that drives the architecture deployed by the tool. This enables extensive flexibility and for the completely automated deployment of a customized architecture within AWS without changing a single line of code.
44

5-
While flexible, the AWS Accelerator is delivered with a sample configuration file which deploys an opinionated and prescriptive architecture designed to help meet the security and operational requirements of many governments around the world (initial focus was the Government of Canada). Tuning the parameters within the configuration file allows for the deployment of customized architectures and enables the solution to help meet the multitude of requirements of a broad range of governments and public sector organizations.
5+
While flexible, the AWS Accelerator is delivered with a sample configuration file which deploys an opinionated and prescriptive architecture designed to help meet the security and operational requirements of many governments around the world. Tuning the parameters within the configuration file allows for the deployment of customized architectures and enables the solution to help meet the multitude of requirements of a broad range of governments and public sector organizations.
66

7-
The installation of the provided prescriptive architecture is reasonably simple, deploying a customized architecture does require extensive understanding of the AWS platform.
7+
The installation of the provided prescriptive architecture is reasonably simple, deploying a customized architecture does require extensive understanding of the AWS platform. The sample deployment specifically helps customers meet NIST 800-53 and/or CCCS Medium Cloud Control Profile (formerly PBMM).
88

99
![Diagram](./docs/operations/img/ASEA-high-level-architecture.png)
1010

@@ -22,13 +22,14 @@ Specifically the accelerator deploys and manages the following functionality, bo
2222
- Shared Network
2323
- Operations
2424
- Perimeter
25-
- Log-Archive
26-
- Security-Audit
25+
- Log Archive
26+
- Security Tooling
2727
- Workload Accounts - automated concurrent mass account creation or use AWS organizations to scale one account at a time. These accounts are used to host a customer's workloads and applications.
2828
- Scalable to 1000's of AWS accounts
2929
- Supports AWS Organizations nested [ou's](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) and importing existing AWS accounts
3030
- Performs 'account warming' to establish initial limits, when required
3131
- Automatically submits limit increases, when required (complies with initial limits until increased)
32+
- Leverages AWS Control Tower **(NEW)**
3233

3334
### Creates Networking
3435

@@ -39,7 +40,9 @@ Specifically the accelerator deploys and manages the following functionality, bo
3940
- Route 53 Private and Public Zones, Resolver Rules and Endpoints, VPC Endpoint Overloaded Zones
4041
- All completely and individually customizable (per account, VPC, subnet, or OU)
4142
- Layout and customize your VPCs, subnets, CIDRs and connectivity the way you want
43+
- Static or Dynamic **(NEW)** VPC and subnet CIDR assignments
4244
- Deletes default VPC's (worldwide)
45+
- AWS Network Firewall **(NEW)**
4346

4447
### Cross-Account Object Sharing
4548

@@ -78,13 +81,14 @@ Specifically the accelerator deploys and manages the following functionality, bo
7881
### Other Security Capabilities
7982

8083
- Creates, deploys and applies Service Control Policies
81-
- Creates Customer Managed KMS Keys (SSM, EBS, S3)
84+
- Creates Customer Managed KMS Keys (SSM, EBS, S3), EC2 key pairs, and secrets
8285
- Enables account level default EBS encryption and S3 Block Public Access
8386
- Configures Systems Manager Session Manager w/KMS encryption and centralized logging
8487
- Creates and configures AWS budgets (customizable per ou and per account)
8588
- Imports or requests certificates into AWS Certificate Manager
8689
- Deploys both perimeter and account level ALB's w/Lambda health checks, certificates and TLS policies
87-
- Deploys & configures 3rd party firewall clusters and management instances w/vendor best practices and sample security policies, w/automated TGW ECMP BGP tunnel standup (leverages marketplace)
90+
- Deploys & configures 3rd party firewall clusters and management instances (leverages marketplace)
91+
- Gateway Load Balancer w/auto-scaling **(NEW)** and VPN IPSec BGP ECMP deployment options
8892
- Protects Accelerator deployed and managed objects
8993
- Sets Up SNS Alerting topics (High, Medium, Low, Blackhole priorities)
9094
- Deploys CloudWatch Log Metrics and Alarms
@@ -106,44 +110,44 @@ Specifically the accelerator deploys and manages the following functionality, bo
106110
- ALB Logs
107111
- SSM Session Logs (also sent to CWL)
108112
- Resolver Query Logs (also sent to CWL)
113+
- Email alerting for CloudTrail Metric Alarms, Firewall Manager Events **(NEW)**, Security Hub Findings incl. Guardduty Findings **(NEW)**
109114

110115
## Relationship with AWS Landing Zone Solution (ALZ)
111116

112-
The ALZ is an AWS Solution designed to deploy a multi-account AWS architecture for customers based on best practices and lessons learned from some of AWS' largest customers. The AWS Accelerator draws on design patterns from the Landing Zone, and re-uses several concepts and nomenclature, but it is not directly derived from it, nor does it leverage any code from the ALZ. The initial versions of the AWS Accelerator presupposed the existence of an AWS Landing Zone Solution in the AWS Organization; this requirement has since been removed as of release `v1.1.0`.
113-
114-
The Accelerator is now a completely standalone solution.
117+
The ALZ was an AWS Solution designed to deploy a multi-account AWS architecture for customers based on best practices and lessons learned from some of AWS' largest customers. The AWS Accelerator draws on design patterns from the Landing Zone, and re-uses several concepts and nomenclature, but it is not directly derived from it, nor does it leverage any code from the ALZ. The Accelerator is a standalone solution with no dependence on ALZ.
115118

116119
## Relationship with AWS Control Tower
117120

118-
AWS Control Tower is the successor to the ALZ, but offered as an AWS managed service.
121+
The AWS Secure Environment Accelerator now leverages AWS Control Tower! **(NEW)**
119122

120-
When appropriate, it is envisioned that the AWS Accelerator will add the capability to be deployed on top of AWS Control Tower, as we initially allowed with the ALZ.
123+
With the release of v1.5.0, the AWS Accelerator adds the capability to be deployed on top of AWS Control Tower. Customers get the benefits of the fully managed capabilities of AWS Control Tower combined with the power and flexibility of the Accelerators Networking and Security orchestration.
121124

122-
## Accelerator Deployment Process (Summary)
125+
## Accelerator Installation Process (Summary)
123126

124127
This summarizes the installation process, the full installation document can be found in the documentation section below.
125128

126-
- Create a config.json (or config.yaml) file to represent your organizations requirements (several samples provided)
127-
- Create a Secrets Manager Secret which contains a GitHub token that provides access to the Accelerator code repo
128-
- Create a unique S3 input bucket and place your config.json and any additional custom config files in the bucket
129-
- Download and execute the latest installer CloudFormation template in your root accounts preferred 'primary' / 'home' region
129+
- Create a config.json (or config.yaml) file to represent your organizations requirements ([several samples provided](./docs/installation/customization-index.md))
130+
- Create a Secrets Manager Secret which contains a GitHub token that provides access to the Accelerator code repository
131+
- Create a unique S3 input bucket in the management account of the region you wish to deploy the solution and place your config.json and any additional custom config files in the bucket
132+
- Download and execute the latest [release](https://github.com/aws-samples/aws-secure-environment-accelerator/releases) installer CloudFormation template in your management accounts preferred 'primary' / 'home' region
130133
- Wait for:
131134
- CloudFormation to deploy and start the Code Pipeline (~5 mins)
132-
- Code Pipeline to download the Accelerator codebase and install the Accelerator State Machine (~20 mins)
133-
- The Accelerator State Machine to finish execution (~1.5 hrs)
134-
- Perform required manual follow-up activities (configure AWS SSO, set firewall passwords, etc.)
135-
- When required:
135+
- Code Pipeline to download the Accelerator codebase and install the Accelerator State Machine (~10 mins)
136+
- The Accelerator State Machine to finish execution (~1.25 hrs Standalone version, ~2.25 hrs Control Tower Version)
137+
- Perform required one-time [post installation](./docs/installation/installation.md#26-post-installation) activities (configure AWS SSO, set firewall passwords, etc.)
138+
- On an ongoing basis:
136139
- Use AWS Organizations to create new AWS accounts, which will automatically be guardrailed by the Accelerator
137-
- Update the config file in CodeCommit and run the Accelerator State Machine (~25 min) to:
138-
- deploy, configure and guardrail multiple accounts at the same time
139-
- change Accelerator configuration settings
140+
- Update the config file in CodeCommit and run the Accelerator State Machine to:
141+
- deploy, configure and guardrail multiple accounts at the same time (~25 min Standalone, ~50 min/account Control Tower)
142+
- change Accelerator configuration settings (~25 min)
140143

141144
# **Documentation**
142145

143146
### - Accelerator Installation and Upgrade [Guide](./docs/installation/installation.md)
144147

145148
- Link to Accelerator [releases](https://github.com/aws-samples/aws-secure-environment-accelerator/releases) and change history
146149
- Sample configuration files and customization [details](./docs/installation/customization-index.md)
150+
- State Machine behavior and [inputs](./docs/installation/sm_inputs.md)
147151
- [Chart](./docs/installation/what-we-do-where.md) containing details as to WHAT we do and WHERE we support it (regions, accounts, etc.)
148152
- Accelerator central logging [bucket structures](./docs/architectures/pbmm/log-file-locations.md)
149153
- Unofficial Accelerator [Roadmap](https://github.com/aws-samples/aws-secure-environment-accelerator/projects) (GitHub projects) - _Please upvote desired features_
@@ -160,11 +164,15 @@ This summarizes the installation process, the full installation document can be
160164

161165
### - Prescriptive PBMM Architecture Design [Document](./docs/architectures/pbmm/architecture.md) (Early Draft)
162166

163-
- AWS PBMM architecture sample [diagrams](./docs/architectures/pbmm/AWS_PBMM_Accel_Account_Network_VPC.md)
167+
- Accelerator Prescriptive Architecture Sample [diagrams](./docs/architectures/pbmm/AWS_PBMM_Accel_Account_Network_VPC.md)
164168

165169
---
166170

167-
Note: A ZIP file containing a PDF version of most documentation can be found [here](https://github.com/aws-samples/aws-secure-environment-accelerator/actions?query=workflow%3A%22Generate+Documentation%22).
171+
Note: Two ZIP files are attached as assets of each [release](https://github.com/aws-samples/aws-secure-environment-accelerator/releases):
172+
173+
- one contains a PDF version of the above documentation
174+
- the second contains a _DRAFT_ of the config file documentation, auto generated from a combination of the typescript schema and the field definitions added for the future GUI
175+
- Extract and open src\lib\docs-gen\output-docs\en\index.html in your browser
168176

169177
---
170178

buildspec.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
version: 0.2
2+
3+
phases:
4+
install:
5+
runtime-versions:
6+
nodejs: 14
7+
commands:
8+
- echo "nothing to do in install"
9+
pre_build:
10+
commands:
11+
- echo "Installing dependencies and executing unit tests - `pwd`"
12+
- cd src
13+
- chmod +x ./run-all-tests.sh && ./run-all-tests.sh
14+
- echo "Installing dependencies and executing unit tests completed `date`"
15+
build:
16+
commands:
17+
- echo "Starting build `date` in `pwd`"
18+
- cd ../deployment
19+
- chmod +x ./build-s3-dist.sh && ./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
20+
- echo "Build completed `date`"
21+
- echo "Starting open-source-dist `date` in `pwd`"
22+
- chmod +x ./build-open-source-dist.sh && ./build-open-source-dist.sh $SOLUTION_NAME
23+
- echo "Open Source Dist completed `date`"
24+
25+
post_build:
26+
commands:
27+
- echo "Retrieving next stage buildspec `date` in `pwd`"
28+
- aws s3 cp s3://solutions-build-assets/changelog-spec.yml ../buildspec.yml
29+
- echo "Retrieving next stage buildspec complete"
30+
- echo "Post build completed on `date`"
31+
32+
artifacts:
33+
files:
34+
- .gitlab/**/*
35+
- deployment/**/*
36+
- docs/**/*
37+
- reference-artifacts/**/*
38+
- src/**/*
39+
- test/**/*
40+
- .dockerignore
41+
- .eslintrc.js
42+
- .gitattributes
43+
- .gitignore
44+
- .prettierrc
45+
- buildspec.yml
46+
- CHANGELOG.md
47+
- CODE_OF_CONDUCT.md
48+
- CONTRIBUTING.md
49+
- LICENSE
50+
- NOTICE
51+
- package.json
52+
- pnpm-lock.yaml
53+
- pnpm-workspace.yaml
54+
- README.md
55+
- tsconfig.base.json
56+
- sonar-project.properties

0 commit comments

Comments
 (0)