

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Stellen Sie AWS Control Tower Kontrollen mithilfe von Terraform bereit und verwalten Sie sie
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform"></a>

*Iker Reina Fuente und Ivan Girardi, Amazon Web Services*

## Zusammenfassung
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-summary"></a>

Dieses Muster beschreibt, wie AWS Control Tower Controls, HashiCorp Terraform und Infrastructure as Code (IaC) verwendet werden, um präventive, detektive und proaktive Sicherheitskontrollen zu implementieren und zu verwalten. Eine [Kontrolle](https://docs.aws.amazon.com/controltower/latest/userguide/controls.html) (auch als *Guardrail* bezeichnet) ist eine Regel auf hoher Ebene, die eine kontinuierliche Steuerung Ihrer gesamten Umgebung gewährleistet. AWS Control Tower Beispielsweise können Sie mithilfe von Kontrollen eine Protokollierung für Ihr System vorschreiben AWS-Konten und dann automatische Benachrichtigungen konfigurieren, wenn bestimmte sicherheitsrelevante Ereignisse eintreten.

AWS Control Tower unterstützt Sie bei der Implementierung präventiver, detektiver und proaktiver Kontrollen, mit denen Sie Ihre AWS Ressourcen steuern und die Einhaltung der Vorschriften in mehreren Bereichen überwachen können. AWS-Konten Jede Kontrolle erzwingt eine einzige Regel. In diesem Muster verwenden Sie eine bereitgestellte IaC-Vorlage, um anzugeben, welche Steuerelemente Sie in Ihrer Umgebung bereitstellen möchten.

AWS Control Tower Kontrollen gelten für eine gesamte [Organisationseinheit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit), und die Steuerung wirkt sich auf alle AWS-Konto innerhalb der Organisationseinheit aus. Wenn Benutzer eine Aktion in einem Konto in Ihrer landing zone ausführen, unterliegt diese Aktion daher den Kontrollen, die für die Organisationseinheit gelten.

Die Implementierung von AWS Control Tower Kontrollen trägt dazu bei, eine solide Sicherheitsgrundlage für Ihre AWS landing zone zu schaffen. Indem Sie dieses Muster verwenden, um die Steuerungen als IaC über Terraform bereitzustellen, können Sie die Steuerungen in Ihrer landing zone standardisieren und sie effizienter einsetzen und verwalten.

Um AWS Control Tower Steuerelemente als IaC bereitzustellen, können Sie anstelle von Terraform auch Terraform verwenden. AWS Cloud Development Kit (AWS CDK) Weitere Informationen finden Sie unter [Bereitstellen und Verwalten von AWS Control Tower Steuerelementen mithilfe von](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html) und. AWS CDK AWS CloudFormation

**Beabsichtigte Zielgruppe**

Dieses Muster wird Benutzern empfohlen, die Erfahrung mit AWS Control Tower Terraform und haben. AWS Organizations

## Voraussetzungen und Einschränkungen
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Aktiv AWS-Konten geführt als Organisation in AWS Organizations und als AWS Control Tower landing zone. Anweisungen finden Sie in der AWS Control Tower Dokumentation unter [Erste Schritte](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html).
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).
+ Eine AWS Identity and Access Management (IAM-) Rolle im Verwaltungskonto, die berechtigt ist, dieses Muster bereitzustellen. Weitere Informationen zu den erforderlichen Berechtigungen und eine Beispielrichtlinie finden Sie unter *Berechtigungen mit den geringsten Rechten für die IAM-Rolle* im Abschnitt [Zusätzliche Informationen](#deploy-and-manage-aws-control-tower-controls-by-using-terraform-additional) dieses Musters.
+ Berechtigungen zur Übernahme der IAM-Rolle im Verwaltungskonto.
+ Terraform CLI, [installiert](https://developer.hashicorp.com/terraform/cli) (Terraform-Dokumentation).
+ [Terraform AWS Provider, konfiguriert (Terraform-Dokumentation).](https://hashicorp.github.io/terraform-provider-aws/)
+ [Terraform-Backend, konfiguriert (Terraform-Dokumentation).](https://developer.hashicorp.com/terraform/language/backend)

**Einschränkungen**
+ Für AWS Control Tower Steuerelemente erfordert dieses Muster die Verwendung [globaler Bezeichner](https://docs.aws.amazon.com/controltower/latest/controlreference/all-global-identifiers.html) im folgenden Format:

  ```
  arn:<PARTITION>:controlcatalog:::control/<CONTROL_CATALOG_OPAQUE_ID>
  ```

  In früheren Versionen dieses Musters wurden [regionale Identifikatoren](https://docs.aws.amazon.com/controltower/latest/controlreference/control-metadata-tables.html) verwendet, die nicht mehr unterstützt werden. Wir empfehlen, dass Sie von regionalen Kennungen zu globalen Kennungen migrieren. Globale Kennungen helfen Ihnen dabei, Kontrollen zu verwalten und die Anzahl der Kontrollen, die Sie verwenden können, zu erweitern.
**Anmerkung**  
In den meisten Fällen `<PARTITION>` ist `aws` der Wert für.

**Versionen der Produkte**
+ AWS Control Tower Version 3.2 oder höher
+ Terraform Version 1.5 oder höher
+ Terraform AWS Provider Version 4.67 oder höher

## Architektur
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-architecture"></a>

Dieser Abschnitt bietet einen allgemeinen Überblick über diese Lösung und die durch den Beispielcode geschaffene Architektur. Das folgende Diagramm zeigt die Steuerelemente, die für die verschiedenen Konten in der Organisationseinheit eingesetzt werden.

![\[Architekturdiagramm der Kontrollen, die für alle AWS-Konten in der Organisationseinheit eingesetzt werden.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/6e0d6c30-a539-44b7-8415-e669fb2ad26a/images/60407c0e-852e-4d5f-9a7d-8510316063aa.png)


AWS Control Tower Die Kontrollen werden nach ihrem *Verhalten* und ihren *Leitlinien* kategorisiert.

Es gibt drei Haupttypen von Kontrollverhalten:

1. *Präventive Kontrollen* sollen verhindern, dass Maßnahmen ergriffen werden. Diese werden mithilfe von [Dienststeuerungsrichtlinien (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) oder [Ressourcenkontrollrichtlinien (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) implementiert AWS Organizations. Der Status einer präventiven Kontrolle ist entweder **erzwungen** oder **nicht aktiviert**. Präventive Kontrollen werden in allen AWS-Regionen Bereichen unterstützt.

1. *Detective Controls* sind so konzipiert, dass sie bestimmte Ereignisse erkennen, wenn sie auftreten, und die Aktion protokollieren AWS CloudTrail. Diese werden mit [AWS Config Regeln](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) implementiert. Der Status einer detektiven Kontrolle ist entweder „Ungültig**“**, „**Verstoß**“ oder „**Nicht aktiviert“**. Detective Controls gelten nur für diejenigen, die von AWS-Regionen unterstützt werden AWS Control Tower.

1. *Proaktive Kontrollen* scannen Ressourcen, die von bereitgestellt werden würden, AWS CloudFormation und prüfen, ob sie den Richtlinien und Zielen Ihres Unternehmens entsprechen. Ressourcen, die nicht den Vorschriften entsprechen, werden nicht bereitgestellt. Diese werden mit [AWS CloudFormation Hooks](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/hooks.html) implementiert. Der Status einer proaktiven Kontrolle ist **PASS**, **FAIL** oder **SKIP**.

Es *wird* empfohlen, die einzelnen Kontrollen auf Ihr System anzuwenden OUs. AWS Control Tower bietet drei Kategorien von Leitlinien: *verpflichtend*, *dringend empfohlen* und *fakultativ*. Die Leitlinien einer Kontrolle sind unabhängig von ihrem Verhalten. Weitere Informationen finden Sie unter [Verhalten und Steuerung der Steuerung](https://docs.aws.amazon.com/controltower/latest/userguide/controls.html#control-behavior).

## Tools
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)bietet einen detaillierten Überblick über die Ressourcen in Ihrem System AWS-Konto und deren Konfiguration. Es hilft Ihnen zu erkennen, wie Ressourcen miteinander zusammenhängen und wie sich ihre Konfigurationen im Laufe der Zeit geändert haben.
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)hilft Ihnen bei der Einrichtung und Verwaltung einer Umgebung AWS mit mehreren Konten und folgt dabei den vorgeschriebenen Best Practices.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [Deploy and Manage AWS Control Tower Controls by Using Terraform](https://github.com/aws-samples/aws-control-tower-controls-terraform) verfügbar.

## Best Practices
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-best-practices"></a>
+ Die für die Bereitstellung dieser Lösung verwendete IAM-Rolle sollte dem [Prinzip der geringsten Rechte entsprechen (IAM-Dokumentation)](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Folgen Sie den [Best Practices für AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/best-practices.html) Administratoren (Dokumentation).AWS Control Tower 

## Epen
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-epics"></a>

### Aktivieren Sie die Steuerelemente im Verwaltungskonto
<a name="enable-controls-in-the-management-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Geben Sie in einer Bash-Shell den folgenden Befehl ein. Dadurch werden die [AWS Control Tower Steuerelemente Deploy und Manage mithilfe des Terraform-Repositorys von](https://github.com/aws-samples/aws-control-tower-controls-terraform) geklont. GitHub<pre>git clone https://github.com/aws-samples/aws-control-tower-controls-terraform.git</pre> | DevOps Ingenieur | 
| Bearbeiten Sie die Terraform-Backend-Konfigurationsdatei. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html) | DevOps Ingenieur, Terraform | 
| Bearbeiten Sie die Konfigurationsdatei des Terraform-Anbieters. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html) | DevOps Ingenieur, Terraform | 
| Bearbeiten Sie die Konfigurationsdatei. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html) | DevOps Ingenieur, General AWS, Terraform | 
| Nehmen Sie die IAM-Rolle im Verwaltungskonto an. | Nehmen Sie im Verwaltungskonto die IAM-Rolle an, die über die Berechtigungen zur Bereitstellung der Terraform-Konfigurationsdatei verfügt. [Weitere Informationen zu den erforderlichen Berechtigungen und eine Beispielrichtlinie finden Sie unter *Berechtigungen mit den geringsten Rechten für die IAM-Rolle im Abschnitt Zusätzliche* Informationen.](#deploy-and-manage-aws-control-tower-controls-by-using-terraform-additional) Weitere Informationen zur Übernahme einer IAM-Rolle in der AWS CLI finden Sie unter [Verwenden einer IAM-Rolle](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) in der. AWS CLI | DevOps Ingenieur, General AWS | 
| Stellen Sie die Konfigurationsdatei bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html) | DevOps Ingenieur, General AWS, Terraform | 

### (Optional) Deaktivieren Sie die Kontrollen im Verwaltungskonto AWS Control Tower
<a name="optional-disable-controls-in-the-ctower-management-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Befehl `destroy` aus. | Geben Sie den folgenden Befehl ein, um die nach diesem Muster bereitgestellten Ressourcen zu entfernen.<pre>$ terraform destroy -var-file="variables.tfvars"</pre> | DevOps Ingenieur, General AWS, Terraform | 

## Fehlerbehebung
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `Error: creating ControlTower Control ValidationException: Guardrail <control ID> is already enabled on organizational unit <OU ID>`-Fehler | Das Steuerelement, das Sie aktivieren möchten, ist in der Ziel-OU bereits aktiviert. Dieser Fehler kann auftreten, wenn ein Benutzer das Steuerelement manuell über AWS-Managementkonsole, durch AWS Control Tower oder durch aktiviert hat AWS Organizations. Um die Terraform-Konfigurationsdatei bereitzustellen, können Sie eine der folgenden Optionen verwenden.**Option 1: Aktualisieren Sie die aktuelle Terraform-Statusdatei**Sie können die Ressource in die aktuelle Terraform-Statusdatei importieren. Wenn Sie den `apply` Befehl erneut ausführen, überspringt Terraform diese Ressource. Gehen Sie wie folgt vor, um die Ressource in den aktuellen Terraform-Status zu importieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-terraform.html)**Option 2: Deaktivieren Sie die Steuerung**Wenn Sie nicht in einer Produktionsumgebung arbeiten, können Sie die Steuerung in der Konsole deaktivieren. Aktivieren Sie es erneut, indem Sie die Schritte unter *Konfiguration bereitstellen im Abschnitt* [Epics](#deploy-and-manage-aws-control-tower-controls-by-using-terraform-epics) wiederholen. Dieser Ansatz wird für Produktionsumgebungen nicht empfohlen, da die Steuerung für einen bestimmten Zeitraum deaktiviert wird. Wenn Sie diese Option in einer Produktionsumgebung verwenden möchten, können Sie temporäre Kontrollen implementieren, z. B. die vorübergehende Anwendung eines SCP in AWS Organizations. | 

## Zugehörige Ressourcen
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-resources"></a>

**AWS Dokumentation**
+ [Über Kontrollen](https://docs.aws.amazon.com/controltower/latest/userguide/controls.html) (AWS Control Tower Dokumentation)
+ [Bibliothek für Steuerungen](https://docs.aws.amazon.com/controltower/latest/userguide/controls-reference.html) (AWS Control Tower Dokumentation)
+ [Implementieren und verwalten Sie AWS Control Tower Kontrollen mithilfe von AWS CDK und AWS CloudFormation](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.html) (AWS Prescriptive Guidance)

**Sonstige Ressourcen**
+ [Terraform](https://www.terraform.io/)
+ [Terraform CLI-Dokumentation](https://www.terraform.io/cli)

## Zusätzliche Informationen
<a name="deploy-and-manage-aws-control-tower-controls-by-using-terraform-additional"></a>

**Beispiel für** **eine Datei variables.tfvars**

**Im Folgenden finden Sie ein Beispiel für eine aktualisierte Variables.tfvars-Datei.** Dieses Beispiel aktiviert das **AWS-GR\$1ENCRYPTED\$1VOLUMES-Steuerelement (globale ID:) und das **AWS-GR\$1SUBNET\$1AUTO\$1ASSIGN\$1PUBLIC\$1IP\$1DISABLED-Steuerelement**** (globale ID:`503uicglhjkokaajywfpt6ros`). `50z1ot237wl8u1lv5ufau6qqo` Eine Liste der [globalen IDs Bezeichner finden Sie in AWS Control Tower der Dokumentation unter Alle globalen Identifikatoren](https://docs.aws.amazon.com/controltower/latest/controlreference/all-global-identifiers.html).

**Das folgende Beispiel aktiviert auch Steuerelemente mit Parametern wie **CT.S3.PV.5 (globale ID:`7mo7a2h2ebsq71l8k6uzr96ou`) und CT.SECRETSMANAGER.PV.1** (globale ID:).** `dvhe47fxg5o6lryqrq9g6sxg4` [Eine Liste der Steuerelemente mit Parametern finden Sie in der Dokumentation unter Steuerelemente mit Parametern.](https://docs.aws.amazon.com/controltower/latest/controlreference/control-parameter-concepts.html) AWS Control Tower 

```
controls = [
    {
        control_names = [
            "503uicglhjkokaajywfpt6ros", # AWS-GR_ENCRYPTED_VOLUMES
            ...
        ],
        organizational_unit_ids = ["ou-1111-11111111", "ou-2222-22222222"...],
    },
    {
        control_names = [
            "50z1ot237wl8u1lv5ufau6qqo", # AWS-GR_SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED
            ...
        ],
        organizational_unit_ids = ["ou-1111-11111111"...],
    },
]

controls_with_params = [
  {
    control_names = [
      { "7mo7a2h2ebsq71l8k6uzr96ou" = { # CT.S3.PV.5
        parameters = {
          "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"],
          "ExemptedResourceArns" : [],
        }
      } },
      { "dvhe47fxg5o6lryqrq9g6sxg4" = { # CT.SECRETSMANAGER.PV.1
        parameters = {
          "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"],
        }
      } },
      ...
    ],
    organizational_unit_ids = ["ou-1111-11111111"...]
  },
  {
    control_names = [
      { "dvuaav61i5cnfazfelmvn9m6k" = { # AWS-GR_DISALLOW_CROSS_REGION_NETWORKING
        parameters = {
          "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"],
        }
      } },
      { "41ngl8m5c4eb1myoz0t707n7h" = { # AWS-GR_DISALLOW_VPC_INTERNET_ACCESS
        parameters = {
          "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"],
        }
      } },
      ...
    ],
    organizational_unit_ids = ["ou-2222-22222222"...]
  }
]
```

**Berechtigungen mit den geringsten Rechten für die IAM-Rolle**

Dieses Muster erfordert, dass Sie eine IAM-Rolle im Verwaltungskonto annehmen. Es hat sich bewährt, eine Rolle mit temporären Berechtigungen anzunehmen und die Berechtigungen nach dem Prinzip der geringsten Rechte einzuschränken. Die folgende Beispielrichtlinie ermöglicht die Mindestaktionen, die zum Aktivieren oder Deaktivieren von AWS Control Tower Steuerelementen erforderlich sind.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "controltower:EnableControl",
                "controltower:DisableControl",
                "controltower:GetControlOperation",
                "controltower:ListEnabledControls",
                "organizations:AttachPolicy",
                "organizations:CreatePolicy",
                "organizations:DeletePolicy",
                "organizations:DescribeOrganization",
                "organizations:DetachPolicy",
                "organizations:ListAccounts",
                "organizations:ListAWSServiceAccessForOrganization",
                "organizations:ListChildren",
                "organizations:ListOrganizationalUnitsForParent",
                "organizations:ListParents",
                "organizations:ListPoliciesForTarget",
                "organizations:ListRoots",
                "organizations:UpdatePolicy"
            ],
            "Resource": "*"
        }
    ]
}
```