

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.

# Einsatz des Control Tower (CT)
<a name="cfctdeployment"></a>

Der Leitfaden Customizations for AWS Control Tower (cFCT) richtet sich an Administratoren, DevOps Fachleute, unabhängige Softwareanbieter, IT-Infrastrukturarchitekten und Systemintegratoren, die ihre AWS Control Tower Tower-Umgebungen für ihr Unternehmen und ihre Kunden anpassen und erweitern möchten. Es enthält Informationen zur Anpassung und Erweiterung der AWS Control Tower Tower-Umgebung mit dem cFCT-Anpassungspaket.

 **Zeit für die Bereitstellung: Ungefähr 30** Minuten

## Voraussetzungen
<a name="cfctprerequisites"></a>

Stellen Sie vor der Bereitstellung dieser Lösung sicher, dass sie für **AWS Control Tower Tower-Administratoren** vorgesehen ist.

Wenn Sie bereit sind, Ihre landing zone mit der AWS Control Tower Tower-Konsole einzurichten APIs, oder gehen Sie wie folgt vor:

Informationen zu den ersten Schritten mit AWS Control Tower finden Sie unter: [Erste Schritte mit AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html) 

Informationen zum Anpassen Ihrer landing zone finden Sie unter: [Anpassen Ihrer Landezone](https://docs.aws.amazon.com/controltower/latest/userguide/customize-landing-zone.html) 

Informationen zum Starten und Bereitstellen Ihrer landing zone finden Sie unter: [Leitfaden zur Bereitstellung von Landezonen](https://docs.aws.amazon.com/controltower/latest/userguide/deployment.html) 

## Überblick über den Einsatz
<a name="cfctdeployment-overview"></a>

Gehen Sie wie folgt vor, um diese Lösung auf AWS bereitzustellen.

 [Schritt 1: S3-Bucket erstellen und bereitstellen](#step-1-cfn) 

**Anmerkung**  
S3-Bucket-Konfiguration — nur für ADMIN. Dies ist ein einmaliger Einrichtungsschritt und sollte von Endbenutzern nicht wiederholt werden. Die S3-Buckets speichern das Bereitstellungspaket, einschließlich der CloudFormation AWS-Vorlage und des Lambda-Codes, die für die Ausführung von ASR erforderlich sind. Diese Ressourcen werden mit oder bereitgestellt. CfCt StackSet

**1. Konfigurieren Sie den S3-Bucket**  
Richten Sie den S3-Bucket ein, der zum Speichern und Bereitstellen Ihrer Bereitstellungspakete verwendet wird.

**2. Einrichten der -Umgebung**  
Bereiten Sie die erforderlichen Umgebungsvariablen, Anmeldeinformationen und Tools vor, die für den Build- und Bereitstellungsprozess erforderlich sind.

**3. Konfigurieren Sie S3-Bucket-Richtlinien**  
Definieren und wenden Sie die entsprechenden Bucket-Richtlinien an, um den Zugriff und die Berechtigungen zu kontrollieren.

**4. Bereiten Sie den Build vor**  
Kompilieren, verpacken oder bereiten Sie Ihre Anwendung oder Ressourcen auf andere Weise für die Bereitstellung vor.

**5. Stellen Sie Pakete auf S3 bereit**  
Laden Sie die vorbereiteten Build-Artefakte in den dafür vorgesehenen S3-Bucket hoch.

 [Schritt 2: Stack-Bereitstellung auf AWS Control Tower](#step-2-cfn) 

**1. Erstellen Sie ein Build-Manifest für ASR-Komponenten**  
Definieren Sie ein Build-Manifest, das alle ASR-Komponenten, ihre Versionen, Abhängigkeiten und Build-Anweisungen auflistet.

**2. Aktualisieren Sie das CodePipeline**  
Ändern Sie die CodePipeline AWS-Konfiguration so, dass sie die neuen Build-Schritte, Artefakte oder Stufen enthält, die für die Bereitstellung der ASR-Komponenten erforderlich sind.

## Schritt 1: Erstellen und Bereitstellen im S3-Bucket
<a name="step-1-cfn"></a>

AWS-Lösungen verwenden zwei Buckets: einen Bucket für den globalen Zugriff auf Vorlagen, auf den über HTTPS zugegriffen wird, und regionale Buckets für den Zugriff auf Ressourcen innerhalb der Region, wie z. B. Lambda-Code.

**1. Konfigurieren Sie den S3-Bucket**  
Wählen Sie einen eindeutigen Bucket-Namen, z. B. asr-staging. Legen Sie zwei Umgebungsvariablen auf Ihrem Terminal fest. Eine sollte der Basis-Bucket-Name mit -reference als Suffix sein, die andere mit der gewünschten Einsatzregion als Suffix:

```
export BASE_BUCKET_NAME=asr-staging-$(date +%s)
export TEMPLATE_BUCKET_NAME=$BASE_BUCKET_NAME-reference
export REGION=us-east-1
export ASSET_BUCKET_NAME=$BASE_BUCKET_NAME-$REGION
```

**2. Einrichtung der Umgebung**  
Erstellen Sie in Ihrem AWS-Konto zwei Buckets mit diesen Namen, z. B. asr-staging-reference und asr-staging-us-east -1. (Der Referenz-Bucket enthält die CloudFormation Vorlagen, der regionale Bucket enthält alle anderen Assets wie das Lambda-Code-Bundle.) Ihre Buckets sollten verschlüsselt sein und keinen öffentlichen Zugriff zulassen

```
aws s3 mb s3://$TEMPLATE_BUCKET_NAME/
aws s3 mb s3://$ASSET_BUCKET_NAME/
```

**Anmerkung**  
Achten Sie bei der Erstellung Ihrer Buckets darauf, dass sie nicht öffentlich zugänglich sind. Verwenden Sie zufällige Bucket-Namen. Deaktivieren Sie den öffentlichen Zugriff. Verwenden Sie die KMS-Verschlüsselung. Und überprüfen Sie vor dem Hochladen, ob Sie den Bucket besitzen.

**3. Einrichtung der S3-Buckets-Richtlinie**  
Aktualisieren Sie die S3-Bucket-Richtlinie $TEMPLATE\_BUCKET\_NAME so, dass sie die Berechtigungen für die Ausführungskonto-ID enthält PutObject . Weisen Sie diese Berechtigung einer IAM-Rolle innerhalb des Execute-Kontos zu, die berechtigt ist, in den Bucket zu schreiben. Durch diese Konfiguration können Sie vermeiden, dass der Bucket im Verwaltungskonto erstellt wird.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::template-bucket-name/*",
                "arn:aws:s3:::template-bucket-name"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "org-id"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::template-bucket-name/*",
                "arn:aws:s3:::template-bucket-name"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:PrincipalArn": "arn:aws:iam::account-id:role/iam-role-name"
                }
            }
        }
    ]
}
```

Ändern Sie die Asset-S3-Bucket-Richtlinie so, dass sie Berechtigungen einbezieht. Weisen Sie diese Berechtigung einer IAM-Rolle innerhalb des Execute-Kontos zu, das berechtigt ist, in den Bucket zu schreiben. Wiederholen Sie dieses Setup für jeden regionalen Asset-Bucket (z. B. asr-staging-us-east -1, asr-staging-eu-west -1 usw.), sodass Bereitstellungen in mehreren Regionen möglich sind, ohne dass die Buckets im Management-Konto erstellt werden müssen.

**4. Vorbereitung des Builds**
+ Voraussetzungen:
  + AWS-CLI Version 2
  + Python 3.11\+ mit Pip
  + AWS CDK 2.171.1\+
  + Node.js 20\+ mit npm
  + Poetry v2 mit Plugin zum Exportieren
+ Git-Klon [https://github.com/aws-solutions/automated-security-response-on-aws.git](https://github.com/aws-solutions/automated-security-response-on-aws.git) 

Stellen Sie zunächst sicher, dass Sie npm install im Quellordner ausgeführt haben.

Führen Sie als Nächstes im Bereitstellungsordner in Ihrem geklonten Repo build-s3-dist.sh aus und übergeben Sie dabei den Stammnamen Ihres Buckets (z. B. mybucket) und die Version, die Sie erstellen (z. B. v1.0.0). Wir empfehlen, eine Semver-Version zu verwenden, die auf der heruntergeladenen Version basiert (z. B. GitHub GitHub: v1.0.0, dein Build: v1.0.0.mybuild)

```
chmod +x build-s3-dist.sh
export SOLUTION_NAME=automated-security-response-on-aws
export SOLUTION_VERSION=v1.0.0.mybuild
./build-s3-dist.sh -b $BASE_BUCKET_NAME -v $SOLUTION_VERSION
```

 **5. Pakete auf S3 bereitstellen** 

```
cd deployment
aws s3 cp global-s3-assets/  s3://$TEMPLATE_BUCKET_NAME/$SOLUTION_NAME/$SOLUTION_VERSION/ --recursive --acl bucket-owner-full-control
aws s3 cp regional-s3-assets/  s3://$ASSET_BUCKET_NAME/$SOLUTION_NAME/$SOLUTION_VERSION/ --recursive --acl bucket-owner-full-control
```

## Schritt 2: Stack-Bereitstellung auf AWS Control Tower
<a name="step-2-cfn"></a>

**1. Erstellen Sie ein Manifest für ASR-Komponenten**  
[Nachdem Sie ASR-Artefakte in den S3-Buckets bereitgestellt haben, aktualisieren Sie das Control Tower [Tower-Pipeline-Manifest](https://docs.aws.amazon.com/controltower/latest/userguide/cfcn-byo-customizations.html), sodass es auf die neue Version verweist, und lösen Sie dann den Pipeline-Lauf aus, siehe: Controltower-Bereitstellung](https://docs.aws.amazon.com/controltower/latest/userguide/deployment.html) 

**Wichtig**  
Um die korrekte Bereitstellung der ASR-Lösung sicherzustellen, finden Sie in der offiziellen AWS-Dokumentation detaillierte Informationen zur Übersicht der CloudFormation Vorlagen und zur Beschreibung der Parameter. Links zu den Informationen finden Sie unten: Leitfaden zur [Übersicht über die Parameter](https://docs.aws.amazon.com/solutions/latest/automated-security-response-on-aws/deployment.html) der [CloudFormation Vorlagen](https://docs.aws.amazon.com/en_us/solutions/latest/automated-security-response-on-aws/aws-cloudformation-template.html) 

Das Manifest für die ASR-Komponenten sieht wie folgt aus:

```
region: us-east-1 #<HOME_REGION_NAME>
version: 2021-03-15

# Control Tower Custom CloudFormation Resources
resources:
  - name: <ADMIN STACK NAME>
    resource_file: s3://<ADMIN TEMPLATE BUCKET path>
    parameters:
      - parameter_key: UseCloudWatchMetricsAlarms
        parameter_value: "yes"
      - parameter_key: TicketGenFunctionName
        parameter_value: ""
      - parameter_key: ShouldDeployWebUI
        parameter_value: "yes"
      - parameter_key: AdminUserEmail
        parameter_value: "<YOUR EMAIL ADDRESS>"
      - parameter_key: LoadSCAdminStack
        parameter_value: "yes"
      - parameter_key: LoadCIS120AdminStack
        parameter_value: "no"
      - parameter_key: LoadCIS300AdminStack
        parameter_value: "no"
      - parameter_key: UseCloudWatchMetrics
        parameter_value: "yes"
      - parameter_key: LoadNIST80053AdminStack
        parameter_value: "no"
      - parameter_key: LoadCIS140AdminStack
        parameter_value: "no"
      - parameter_key: ReuseOrchestratorLogGroup
        parameter_value: "yes"
      - parameter_key: LoadPCI321AdminStack
        parameter_value: "no"
      - parameter_key: RemediationFailureAlarmThreshold
        parameter_value: "5"
      - parameter_key: LoadAFSBPAdminStack
        parameter_value: "no"
      - parameter_key: EnableEnhancedCloudWatchMetrics
        parameter_value: "no"
    deploy_method: stack_set
    deployment_targets:
     accounts: # :type: list
        - <ACCOUNT_NAME> # and/or
        - <ACCOUNT_NUMBER>
    regions:
      - <REGION_NAME>

  - name:  <ROLE MEMBER STACK NAME>
    resource_file: s3://<ROLE MEMBER TEMPLATE BUCKET path>
    parameters:
      - parameter_key: SecHubAdminAccount
        parameter_value: <ADMIN_ACCOUNT_NAME>
      - parameter_key: Namespace
        parameter_value: <NAMESPACE>
    deploy_method: stack_set
    deployment_targets:
      organizational_units:
        - <ORG UNIT>

  - name:  <MEMBER STACK NAME>
    resource_file: s3://<MEMBER TEMPLATE BUCKET path>
    parameters:
      - parameter_key: SecHubAdminAccount
        parameter_value: <ADMIN_ACCOUNT_NAME>
      - parameter_key: LoadCIS120MemberStack
        parameter_value: "no"
      - parameter_key: LoadNIST80053MemberStack
        parameter_value: "no"
      - parameter_key: Namespace
        parameter_value: <NAMESPACE>
      - parameter_key: CreateS3BucketForRedshiftAuditLogging
        parameter_value: "no"
      - parameter_key: LoadAFSBPMemberStack
        parameter_value: "no"
      - parameter_key: LoadSCMemberStack
        parameter_value: "yes"
      - parameter_key: LoadPCI321MemberStack
        parameter_value: "no"
      - parameter_key: LoadCIS140MemberStack
        parameter_value: "no"
      - parameter_key: EnableCloudTrailForASRActionLog
        parameter_value: "no"
      - parameter_key: LogGroupName
        parameter_value: <LOG_GROUP_NAME>
      - parameter_key: LoadCIS300MemberStack
        parameter_value: "no"
    deploy_method: stack_set
    deployment_targets:
     accounts: # :type: list
        - <ACCOUNT_NAME> # and/or
        - <ACCOUNT_NUMBER>
    organizational_units:
      - <ORG UNIT>
    regions: # :type: list
      - <REGION_NAME>
```

**2. Aktualisierung der Code-Pipeline**  
Fügen Sie einer custom-control-tower-configuration ZIP-Datei eine Manifestdatei hinzu und führen Sie eine aus CodePipeline, siehe: [Code-Pipeline-Übersicht](https://docs.aws.amazon.com/controltower/latest/userguide/cfct-codepipeline-overview.html) 