Skip to content

Commit eed1e6b

Browse files
committed
Merge branch main into pipelines-section-4
2 parents afca073 + 192927e commit eed1e6b

File tree

250 files changed

+5395
-3879
lines changed

Some content is hidden

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

250 files changed

+5395
-3879
lines changed

custom-dictionary.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ mimecast
4444
slugified
4545
dlist
4646
DEPENDENCYID
47+
subfolders
4748
MTTR
4849
terrapatch
49-
Terrapatch
50+
Terrapatch
51+
KodeKloud

docs/2.0/docs/accountfactory/architecture/index.md

+12-10
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
## Overview
44

5-
Account Factory builds upon Gruntwork's [AWS Control Tower Multi Account Factory](/reference/modules/terraform-aws-control-tower/control-tower-multi-account-factory/) and Pipelines to provide automated account creation, baselining, and managed IAM policies.
5+
Account Factory uses Gruntwork's [AWS Control Tower Multi Account Factory](/reference/modules/terraform-aws-control-tower/control-tower-multi-account-factory/) and Pipelines to automate account creation, baselining, and IAM policy management.
66

7-
In your `infrastructure-live-root` repository, the `_new-account-requests` directory acts as input for the Gruntwork Control Tower Module. This module runs within your management account and uses AWS Control Tower to provision new accounts and manage existing ones.
7+
In your `infrastructure-live-root` repository, the `_new-account-requests` directory acts as input for the Gruntwork Control Tower Module. The module, functioning within your management account, employs AWS Control Tower to efficiently provision new accounts and manage existing ones.
88

99
Pipelines tracks each provisioned account as a new base directory containing Terragrunt units in your `infrastructure-live-root` repository.
1010

1111
![Architecture Overview Diagram](/img/accountfactory/architecture.png)
1212

13-
## Account Vending
13+
## Account vending
1414

15-
Account Vending starts when the Account Factory Workflow generates a Pull Request against `infrastructure-live-root`, adding a file to the `_new-account-requests` directory. Pipelines detects these new account requests and runs terragrunt plan/apply commands on the `control-tower-multi-account-factory` unit in the management account.
15+
Account vending begins when the Account Factory Workflow creates a pull request in `infrastructure-live-root`, adding a file to the `_new-account-requests` directory. Pipelines detects these new account requests and runs terragrunt plan/apply commands on the `control-tower-multi-account-factory` unit in the management account.
1616

17-
After creating the account(s), Pipelines provisions resources, including IaC-controlled OIDC authenticated roles, which Pipelines can later use to deploy infrastructure changes within the account, and IAM policies that define the scope of changes Pipelines can deploy.
17+
After creating the account(s), Pipelines provisions resources such as IaC-controlled OIDC-authenticated roles. These roles, combined with IAM policies that define the scope of permissible changes, allow Pipelines to deploy infrastructure updates within the account.
1818

19-
After adding this infrastructure to the repository, Pipelines deploys the resources into the AWS account and runs account baselines in the logs, security, and shared accounts to complete the provisioning process.
19+
Once this infrastructure is added to the repository, Pipelines deploys the resources into the AWS account and runs account baselines in the logs, security, and shared accounts to complete the provisioning process.
2020

2121
```mermaid
2222
sequenceDiagram
@@ -28,12 +28,14 @@ sequenceDiagram
2828
Infra Live Repository ->> Pipelines: Trigger Account Added
2929
Pipelines ->> Core Accounts: Execute terragrunt to baseline account
3030
```
31-
## IAM Roles
31+
## IAM roles
3232

33-
Each new account includes IAM policies that define the scope of changes Pipelines can make within AWS. Pipelines automatically assumes the appropriate roles for each account when changes are detected. Read about the [roles in full here](/2.0/docs/pipelines/architecture/security-controls#roles-provisioned-by-devops-foundations).
33+
Newly created accounts include IAM policies that define the scope of changes Pipelines is authorized to perform within AWS. Pipelines automatically assumes the necessary roles for each account when it detects changes. Detailed information about the provisioned roles can be found [here](/2.0/docs/pipelines/architecture/security-controls#roles-provisioned-by-devops-foundations).
3434

35-
## Delegated Repositories
35+
## Delegated repositories
3636

37-
Delegated repositories expand the architecture of your infrastructure estate management and provide additional access control for your infrastructure. When vending delegated repositories, Pipelines continues tracking new account security baselines in your `infrastructure-live-root` repository, while other infrastructure is tracked in a new repository specific to the account(s). Pipelines inherits new IAM roles from your `infrastructure-live-access-control` repository when deploying infrastructure in delegated repositories. This setup allows the central platform team to control what changes individual teams can make via Pipelines in the delegated repository.
37+
Delegated repositories enhance the architecture of infrastructure management by introducing additional layers of access control. When delegated repositories are created, Pipelines continues to manage new account security baselines within the `infrastructure-live-root` repository, while other infrastructure resources are managed in a new repository specific to the delegated account(s).
38+
39+
Pipelines uses IAM roles from the `infrastructure-live-access-control` repository to deploy infrastructure in these delegated repositories. This setup enables the central platform team to define and restrict the scope of changes individual teams can make via Pipelines in delegated repositories.
3840

3941
![Delegated Architecture Overview Diagram](/img/accountfactory/delegated-architecture.png)

docs/2.0/docs/accountfactory/concepts/delegated-repositories.md

+22-12
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
11
# Delegated Repositories
22

3-
:::note
4-
Account Factory created Delegated Repositories are only available to DevOps Foundations Enterprise customers.
3+
:::note
4+
5+
Account Factory-created Delegated Repositories are only available to DevOps Foundations Enterprise customers.
6+
57
:::
68

7-
As enterprises scale their usage of IaC across more teams there often arises a need to enforce least-privilege access control to both IaC source code and the CI/CD of that code. Gruntwork's recommendation is to leverage multiple source code repositories to create hard-boundaries that enforce least-privilege access control. The pattern we recommend consists of three parts:
9+
As enterprises scale their usage of IaC across multiple teams, the need to enforce least-privilege access control to both IaC source code and its CI/CD processes becomes increasingly important. Gruntwork recommends leveraging multiple source code repositories to establish clear boundaries that enforce least-privilege access control.
10+
11+
This approach involves a structured pattern that includes:
12+
13+
- **Centralized `infrastructure-live-root` repository**
14+
Governed by the core platform team, this repository contains IaC for essential security and shared infrastructure. Examples include account creation, central logging/auditing, and networking controls (e.g., GuardDuty, SecurityHub, Macie, Transit Gateway).
15+
16+
- **Team-specific delegated repositories**
17+
Named using a convention such as `infrastructure-live-$TEAM_NAME`, these repositories enable individual teams to manage their own IaC. The core platform team creates delegated repositories through the Account Factory. The `infrastructure-live-access-control` system controls access to these repositories, granting teams permissions specific to their infrastructure responsibilities.
18+
19+
By adopting this pattern, core platform teams can:
20+
21+
- Centrally manage compliance and security infrastructure.
22+
- Define and enforce which teams are authorized to deploy specific types of infrastructure, ensuring alignment with architecture board-approved plans.
23+
- Oversee shared and per-team infrastructure tags for consistency and governance.
24+
- Enforce least-privilege access policies, restricting teams to access only the IaC and deployment capabilities necessary for their responsibilities.
825

9-
1. A single `infrastructure-live-root` repository, ideally governed by the core platform team. This repository includes IaC for security and shared infrastructure including core-account creation, central logging/auditing and networking controls (e.g. GuardDuty, SecurityHub, Macie, Transit Gateway etc.).
10-
1. Many _delegated_ repositories, often named using the pattern `infrastructure-live-$TEAM_NAME`, where individual teams can manage their own IaC. These repositories are created by the core platform team using the Account Factory and, via `infrastructure-live-access-control`, are granted limited permissions to manage their own infrastructure.
11-
Using this pattern core platform teams have the ability to:
12-
* Centrally manage core compliance and security infrastructure
13-
* Centrally manage which teams have permission to deploy different types of infrastructure, allowing their team to enforce compliance with architecture-board approved plans
14-
* Centrally manage tags for shared and per-team infrastructure
15-
* Enforce least-privilege access to IaC, restricting teams to have access only to IaC and deployment capability / role assumptions for resources that they are responsible for.
26+
## Delegated repository creation
1627

17-
## Delegated Repository Creation
18-
Delegated repositories are optionally created by [Account Factory](/2.0/docs/accountfactory/concepts) during account creation. A delegated account vend follows the following (automated) workflow:
28+
Delegated repositories can be optionally created by the [Account Factory](/2.0/docs/accountfactory/concepts) as part of the account provisioning process. The workflow for vending a delegated account follows these automated steps:
1929

2030
```mermaid
2131
sequenceDiagram
+14-13
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
# Gruntwork Account Factory
22

3-
Gruntwork Account Factory allows you to vend new AWS accounts with best practice account baselines.
3+
Gruntwork Account Factory lets you create new AWS accounts with best-practice baselines.
44

5-
For enterprise customers, new accounts can be created with their own delegated Infrastructure as Code repositories automatically when vending accounts. This allows a central platform team to automate the process by which new AWS accounts are created, and delegation of select infrastructure management to particular teams.
5+
Enterprise customers can create dedicated Infrastructure as Code repositories for new accounts during the vending process. As a result, central platform teams can automate AWS account creation and delegate infrastructure management to individual teams for scalability and autonomy.
66

7-
This allows developer teams to self-service deploy their own infrastructure within the bounds of IAM roles controlled in a dedicated access control repository, allowing for a combination of least privilege access to AWS resources and self-service infrastructure deployment.
7+
This approach empowers developer teams to self-service deploy infrastructure within the confines of IAM roles managed in a centralized access control repository. This approach ensures least-privilege access to AWS resources while enabling flexible, self-service infrastructure deployment.
88

9-
Gruntwork Account Factory is built on top of Gruntwork Pipelines. New account requests are tracked in git as IaC, triggering Terragrunt plans and applies to provision and baseline the new account. This allows the provisioning of new AWS accounts to be proposed and reviewed in the same way as any other infrastructure change, via pull requests.
9+
Gruntwork Account Factory is built on Gruntwork Pipelines, ensuring reliable and automated account provisioning. Account creation requests are tracked in Git as Infrastructure as Code (IaC), triggering Terragrunt plans and applies to set up and baseline the accounts. By following this approach, account provisioning follows the same review and collaboration steps as other infrastructure changes, using pull requests for validation
1010

1111
## Account baselines
1212

13-
When provisioning new accounts, Gruntwork Account Factory doesn't just provision new AWS accounts, but also provisions a set of customizable baseline resources within those AWS accounts that make them ready to use for production workloads immediately.
13+
Gruntwork Account Factory does more than create AWS accounts—it also provisions a set of customizable baseline resources to prepare accounts for immediate use in production workloads.
1414

15-
These baselines include things like:
15+
These baselines include:
16+
17+
1. Security configurations for services such as [GuardDuty](https://aws.amazon.com/guardduty/), [SecurityHub](https://aws.amazon.com/security-hub/), and [Macie](https://aws.amazon.com/macie/), following best practices.
18+
2. Networking configurations aligned with best practices for [AWS VPCs](https://aws.amazon.com/vpc/).
19+
3. IAM roles designed for least privilege access, enabling CI/CD pipelines to manage AWS resources using [GitHub OIDC](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services).
1620

17-
1. Best practice security settings for services like [GuardDuty](https://aws.amazon.com/guardduty/), [SecurityHub](https://aws.amazon.com/security-hub/) and [Macie](https://aws.amazon.com/macie/).
18-
2. Best practice networking configurations for [AWS VPCs](https://aws.amazon.com/vpc/).
19-
3. Best practice IAM roles for least privilege access to manage AWS resources in CI/CD via [GitHub OIDC](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services).
2021

2122
## White glove support
2223

23-
Enterprise customers can expect white glove support in customizing their account baselines and vending process to meet their specific requirements. This includes:
24+
Enterprise customers benefit from tailored white glove support to customize account baselines and the vending process according to their needs. This support includes:
2425

25-
1. Customizing the security configurations of the account baseline, and support in validating CIS compliance on day one.
26-
2. Customizing the networking configurations of the account baseline, and support for [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) configurations, including setup of network inspection appliances, like [AWS Network Firewall](https://aws.amazon.com/network-firewall/).
27-
3. Customizing the access control for delegated infrastructure management repositories, automatically granting particular teams access to manage their Infrastructure as Code for newly vended accounts.
26+
1. Adjusting security configurations within the account baseline and ensuring compliance with frameworks like CIS from the outset.
27+
2. Modifying networking configurations in the account baseline, including support for [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) setups and integration of network inspection appliances like [AWS Network Firewall](https://aws.amazon.com/network-firewall/).
28+
3. Customizing access control for delegated infrastructure management repositories, automatically assigning specific teams the necessary permissions to manage IaC for newly created accounts.
2829

docs/2.0/docs/accountfactory/guides/collaborators.md

+16-16
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,41 @@ Delegated Repositories are only available to DevOps Foundations Enterprise custo
66

77
## Introduction
88

9-
When vending new delegated repositories you can configure a list of GitHub collaborators and permissions that will be added to the new repository.
9+
When creating new delegated repositories, you can configure a list of GitHub collaborators and their permissions to be added to the repository.
1010

1111
## Understanding collaborator settings
1212

13-
GitHub collaborators can be defined in [account-factory configuration](/2.0/reference/accountfactory/configurations#github-collaborators).
13+
GitHub collaborators are defined in the [account-factory configuration](/2.0/reference/accountfactory/configurations#github-collaborators).
1414

15-
Each object in the sequence is a pair of **Team Name** and **Permission**.
15+
Each collaborator entry consists of a **Team Name** and a **Permission**.
1616

17-
#### Team Name
17+
#### Team name
1818

19-
Teams must exist within your GitHub Organization where Account Factory is running.
19+
Teams must exist within the GitHub organization where Account Factory is running.
2020

21-
To find a Team Name navigate to your Organization, and select the Teams tab. The Team Name is the unique identifier for each team.
21+
To locate a Team Name, navigate to your GitHub organization and select the "Teams" tab. The Team Name is the unique identifier for each team.
2222

2323
![Screenshot of Team Settings showing Team Name](/img/accountfactory/team-name.png)
2424

25-
In the above screenshot the Team Name is `platform-team`.
25+
In the example above, the Team Name is `platform-team`.
2626

2727
#### Permission
2828

29-
Permissions directly map to the <span class="external-link"><a href="https://docs.github.com/en/rest/teams/teams?apiVersion=2022-11-28#add-or-update-team-repository-permissions">GitHub Teams API</a></span>
29+
Permissions correspond to the <span class="external-link"><a href="https://docs.github.com/en/rest/teams/teams?apiVersion=2022-11-28#add-or-update-team-repository-permissions">GitHub Teams API</a></span>.
3030

31-
The options are `pull`, `triage`, `push`, `maintain`, `admin`, or a custom repository role name, if the your organization has defined any.
31+
Available options include `pull`, `triage`, `push`, `maintain`, `admin`, or a custom repository role name if defined by your organization.
3232

3333
## Adding collaborators
3434

35-
To add a team to new delegated repositories add a new item to the collaborators block in your account factory configuration.
35+
To add a team to new delegated repositories, include a new entry in the `collaborators` block of your Account Factory configuration.
3636

37-
All collaborators in each account type will be added to new repositories of that type when the repository is created. If you want to add a team to vended repositories of different types you will need to add them in multiple places.
37+
Collaborators for each account type are automatically added to the corresponding repositories when they are created. To give a team access to multiple repository types, add them to the configuration for each type.
3838

39-
A common scenario is to create a team for administration that is granted access everywhere, and individual teams for each delegated repository.
39+
A common practice is to create an administrative team with access to all repositories, along with separate teams for each delegated repository.
4040

41-
For example you might have the existing team `platform-admins`, and two account types `foo` and `bar`. For each account type you would then create a development team that should be granted push access to the repository `foo-devs` and `bar-devs`.
41+
For example, consider an organization with an administrative team called `platform-admins` and two account types, `foo` and `bar`. For each account type, you might create development teams with push access to their respective repositories, such as `foo-devs` and `bar-devs`.
4242

43-
Your Account Factory configuration would look something like:
43+
The Account Factory configuration would look like this:
4444

4545
```yml title="./.gruntwork/config.yml"
4646

@@ -62,6 +62,6 @@ pipelines:
6262
6363
## Updating existing repositories
6464
65-
To update existing repositories you will need to manually make changes to the repository settings.
65+
To update existing repositories, you must manually modify the repository settings.
6666
67-
See the <span class="external-link"><a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-teams-and-people-with-access-to-your-repository">documentation on GitHub</a></span> for more information.
67+
Refer to the <span class="external-link"><a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-teams-and-people-with-access-to-your-repository">GitHub documentation</a></span> for detailed instructions.

0 commit comments

Comments
 (0)