Einsatz des Control Tower (CT) - Automatisierte Sicherheitsreaktion auf AWS

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)

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

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

Informationen zum Anpassen Ihrer landing zone finden Sie unter: Anpassen Ihrer Landezone

Informationen zum Starten und Bereitstellen Ihrer landing zone finden Sie unter: Leitfaden zur Bereitstellung von Landezonen

Überblick über den Einsatz

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

Schritt 1: S3-Bucket erstellen und bereitstellen

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

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

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::<execute_account_id>:role/<iam_role_name>" } } } ] }

Ändern Sie die Asset-S3-Bucket-Richtlinie, sodass sie auch Berechtigungen enthält. 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.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<asset bucket name>-<region>/*", "arn:aws:s3:::<asset bucket name>-<region>" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "<org id>" } } }, { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::<asset bucket name>-<region>/*", "arn:aws:s3:::<asset bucket name>-<region>" ], "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<execute_account_id>:role/<iam_role_name>" } } } ] }
4. Vorbereitung des Builds

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

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, sodass es auf die neue Version verweist, und lösen Sie dann den Pipeline-Lauf aus, siehe: Controltower-Bereitstellung

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 der CloudFormation Vorlagen

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: LoadSCAdminStack parameter_value: "yes" - parameter_key: LoadCIS120AdminStack parameter_value: "no" - parameter_key: TargetAccountIDsStrategy parameter_value: "INCLUDE" - 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: TargetAccountIDs parameter_value: "ALL" - 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