

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.

# Automatisches Hinzufügen einer von AWS verwalteten Richtlinie für Systems Manager zu EC2 Instanzprofilen mithilfe von Cloud Custodian und AWS CDK
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk"></a>

*Ali Asfour und Aaron Lennon, Amazon Web Services*

## Zusammenfassung
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-summary"></a>

Sie können Amazon Elastic Compute Cloud (Amazon EC2) -Instances in AWS Systems Manager integrieren, um betriebliche Aufgaben zu automatisieren und für mehr Transparenz und Kontrolle zu sorgen. Für die Integration mit Systems Manager müssen für EC2 Instances ein installierter [AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) und eine `AmazonSSMManagedInstanceCore` AWS Identity and Access Management (IAM) -Richtlinie an ihre Instance-Profile angehängt sein. 

Wenn Sie jedoch sicherstellen möchten, dass allen EC2 Instance-Profilen die `AmazonSSMManagedInstanceCore` Richtlinie angehängt ist, kann es schwierig werden, neue EC2 Instances zu aktualisieren, die keine Instance-Profile haben, oder EC2 Instances, die ein Instance-Profil haben, aber nicht über die `AmazonSSMManagedInstanceCore` Richtlinie verfügen. Es kann auch schwierig sein, diese Richtlinie für mehrere Amazon Web Services (AWS) -Konten und AWS-Regionen hinzuzufügen.

Dieses Muster hilft bei der Lösung dieser Herausforderungen, indem es drei [Cloud Custodian-Richtlinien](https://cloudcustodian.io/) in Ihren AWS-Konten bereitstellt:
+ Die erste Cloud Custodian-Richtlinie sucht nach vorhandenen EC2 Instances, die über ein Instanzprofil, aber nicht über die `AmazonSSMManagedInstanceCore` Richtlinie verfügen. Die `AmazonSSMManagedInstanceCore` Richtlinie wird dann angehängt. 
+ Die zweite Cloud Custodian-Richtlinie sucht nach vorhandenen EC2 Instanzen ohne Instanzprofil und fügt ein Standard-Instanzprofil hinzu, dem die `AmazonSSMManagedInstanceCore` Richtlinie angehängt ist.
+ Die dritte Cloud Custodian-Richtlinie erstellt [AWS Lambda Lambda-Funktionen](https://cloudcustodian.io/docs/aws/lambda.html) in Ihren Konten, um die Erstellung von EC2 Instanzen und Instanzprofilen zu überwachen. Dadurch wird sichergestellt, dass die `AmazonSSMManagedInstanceCore` Richtlinie automatisch angehängt wird, wenn eine EC2 Instanz erstellt wird.

Dieses Muster verwendet [ DevOpsAWS-Tools](https://aws.amazon.com/devops/), um eine kontinuierliche, maßstabsgetreue Bereitstellung der Cloud Custodian-Richtlinien in einer Umgebung mit mehreren Konten zu erreichen, ohne eine separate Rechenumgebung bereitzustellen. 

## Voraussetzungen und Einschränkungen
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-prereqs"></a>

**Voraussetzungen**
+ Zwei oder mehr aktive AWS-Konten. Ein Konto ist das *Sicherheitskonto* und die anderen sind *Mitgliedskonten*.
+ Berechtigungen zur Bereitstellung von AWS-Ressourcen im Sicherheitskonto. Dieses Muster verwendet [Administratorberechtigungen](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), Sie sollten jedoch Berechtigungen entsprechend den Anforderungen und Richtlinien Ihrer Organisation gewähren.
+ Möglichkeit, vom Sicherheitskonto aus eine IAM-Rolle für Mitgliedskonten zu übernehmen und die erforderlichen IAM-Rollen zu erstellen. Weitere Informationen dazu finden Sie unter [Delegieren des Zugriffs auf AWS-Konten mithilfe von IAM-Rollen in der IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html).
+ 
**Wichtig**  
AWS-Befehlszeilenschnittstelle (AWS CLI), installiert und konfiguriert. Zu Testzwecken können Sie die AWS-CLI konfigurieren, indem Sie den `aws configure` Befehl verwenden oder Umgebungsvariablen festlegen. : Dies wird für Produktionsumgebungen nicht empfohlen und wir empfehlen, diesem Konto nur Zugriff mit den geringsten Rechten zu gewähren. Weitere Informationen dazu finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Die `devops-cdk-cloudcustodian.zip` Datei (angehängt), die auf Ihren lokalen Computer heruntergeladen wurde.
+ Vertrautheit mit Python.
+ Die erforderlichen Tools (Node.js, AWS Cloud Development Kit (AWS CDK) und Git) wurden installiert und konfiguriert. Sie können die `install-prerequisites.sh` Datei in der `devops-cdk-cloudcustodian.zip` Datei verwenden, um diese Tools zu**** installieren. ****Stellen Sie sicher, dass Sie diese Datei mit Root-Rechten ausführen. 

**Einschränkungen**
+ Dieses Muster kann zwar in einer Produktionsumgebung verwendet werden, stellen Sie jedoch sicher, dass alle IAM-Rollen und -Richtlinien den Anforderungen und Richtlinien Ihres Unternehmens entsprechen. 

**Versionen von Paketen**
+ Cloud Custodian Version 0.9 oder höher
+ TypeScript Version 3.9.7 oder höher
+ Node.js Version 14.15.4 oder höher
+ `npm`Version 7.6.1 oder höher
+ AWS CDK Version 1.96.0 oder höher

## Architektur
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-architecture"></a>

![](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/169a7bde-789e-4ebd-b4ca-80eb28ac9927/images/8ec0b6b4-d4b0-42e5-833d-24d1e6098fd9.png)


 

Das Diagramm zeigt den folgenden Workflow:

1. Cloud Custodian-Richtlinien werden in ein CodeCommit AWS-Repository im Sicherheitskonto übertragen. Eine Amazon CloudWatch Events-Regel initiiert automatisch die CodePipeline AWS-Pipeline.

1. Die Pipeline ruft den neuesten Code von CodeCommit und sendet ihn an den Continuous-Integration-Teil der von AWS verwalteten CI/CD-Pipeline (Continuous Integration and Continuous Delivery). CodeBuild

1. CodeBuild führt die vollständigen DevSecOps Aktionen aus, einschließlich der Überprüfung der Richtliniensyntax für die Cloud Custodian-Richtlinien, und führt diese Richtlinien im `--dryrun` Modus aus, um zu überprüfen, welche Ressourcen identifiziert wurden.

1. Wenn keine Fehler vorliegen, fordert die nächste Aufgabe einen Administrator auf, die Änderungen zu überprüfen und die Bereitstellung in den Mitgliedskonten zu genehmigen.

**Technologie-Stack**
+ AWS-CDK
+ CodeBuild
+ CodeCommit
+ CodePipeline
+ IAM
+ Cloud Custodian 

**Automatisierung und Skalierung**

Das AWS-CDK-Pipeline-Modul stellt eine CI/CD Pipeline bereit CodePipeline , mit der neben der Bereitstellung von AWS-Ressourcen mit CodeBuild AWS-Stacks auch die Erstellung und das Testen von Quellcode orchestriert werden. CloudFormation Sie können dieses Muster für alle Mitgliedskonten und Regionen in Ihrer Organisation verwenden. Sie können den `Roles creation` Stack auch erweitern, um andere IAM-Rollen in Ihren Mitgliedskonten bereitzustellen. 

## Tools
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-tools"></a>
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungsframework zur Definition der Cloud-Infrastruktur im Code und deren Bereitstellung über AWS. CloudFormation
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service in der Cloud.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Assets privat speichern und verwalten können.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ist ein Continuous Delivery Service, mit dem Sie die zur Veröffentlichung Ihrer Software erforderlichen Schritte modellieren, visualisieren und automatisieren können.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ist ein Webservice, mit dem Sie den Zugriff auf AWS-Ressourcen sicher kontrollieren können.
+ [Cloud Custodian](https://cloudcustodian.io/) ist ein Tool, das Dutzende von Tools und Skripten, die die meisten Unternehmen für die Verwaltung ihrer Public-Cloud-Konten verwenden, in einem Open-Source-Tool vereint.
+ [Node.js](https://nodejs.org/en/) ist eine JavaScript Runtime, die auf der V8-Engine von Google Chrome basiert. JavaScript 

**Code**

Eine detaillierte Liste der Module, Kontofunktionen, Dateien und Bereitstellungsbefehle, die in diesem Muster verwendet werden, finden Sie in der `README` Datei in der `devops-cdk-cloudcustodian.zip` Datei (angehängt).

## Epen
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-epics"></a>

### Richten Sie die Pipeline mit AWS CDK ein
<a name="set-up-the-pipeline-with-aws-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das CodeCommit Repository ein. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Weitere Informationen dazu finden Sie in der CodeCommit AWS-Dokumentation unter [Erstellen eines CodeCommit Repositorys](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html). | Developer | 
| Installieren Sie die erforderlichen Tools. | Verwenden Sie die `install-prerequisites.sh` Datei, um alle erforderlichen Tools auf Amazon Linux zu installieren. Dies beinhaltet nicht die AWS-CLI, da sie vorinstalliert ist.<br />Weitere Informationen dazu finden Sie im Abschnitt [Voraussetzungen](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_prerequisites) unter [Erste Schritte mit dem AWS-CDK in der AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html). | Developer | 
| Installieren Sie die erforderlichen AWS CDK-Pakete. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Die folgenden Pakete werden von AWS CDK benötigt und sind in der `requirements.txt` Datei enthalten:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 

### Konfigurieren Sie Ihre Umgebung
<a name="configure-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die erforderlichen Variablen. | Öffnen Sie die `vars.py` Datei im Stammordner Ihres CodeCommit Repositorys und aktualisieren Sie die folgenden Variablen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 
| Aktualisieren Sie die Datei account.yml mit den Informationen zum Mitgliedskonto. | Um das [c7n-org Cloud Custodian-Tool](https://cloudcustodian.io/docs/tools/c7n-org.html) für mehrere Konten auszuführen, müssen Sie die `accounts.yml` Konfigurationsdatei im Stammverzeichnis des Repositorys ablegen. Im Folgenden finden Sie ein Beispiel für eine Cloud Custodian-Konfigurationsdatei für AWS:<pre>accounts:<br />- account_id: '123123123123'<br />  name: account-1<br />  regions:<br />  - us-east-1<br />  - us-west-2<br />  role: arn:aws:iam::123123123123:role/CloudCustodian<br />  vars:<br />    charge_code: xyz<br />  tags:<br />  - type:prod<br />  - division:some division<br />  - partition:us<br />  - scope:pci</pre> | Developer | 

### Bootstrap der AWS-Konten
<a name="bootstrap-the-aws-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Boostrap das Sicherheitskonto. | Führen Sie den Bootstrap `deploy_account` mit der `cloudcustodian_stack` Anwendung aus, indem Sie den folgenden Befehl ausführen:<pre>cdk bootstrap -a 'python3 <br />cloudcustodian/cloudcustodian_stack.py</pre> | Developer | 
| Option 1 — Automatisches Bootstrapping der Mitgliedskonten. | Wenn die `cdk_bootstrap_member_accounts` Variable `True` in der `vars.py` Datei auf gesetzt ist, werden die in der `member_accounts` Variablen angegebenen Konten automatisch von der Pipeline gestartet.<br />Bei Bedarf können Sie `*cdk_bootstrap_role*` mit einer IAM-Rolle aktualisieren, die Sie vom Sicherheitskonto aus übernehmen können und die über die erforderlichen Berechtigungen für das Bootstrapping des AWS-CDK verfügt.<br />Neue Konten, die der `member_accounts ` Variablen hinzugefügt werden, werden automatisch von der Pipeline gestartet, sodass die erforderlichen Rollen bereitgestellt werden können. | Developer | 
| Option 2 — Manuelles Bootstrapping der Mitgliedskonten.  | Wir empfehlen zwar nicht, diesen Ansatz zu verwenden, Sie können jedoch den Wert `cdk_bootstrap_member_accounts` auf festlegen `False` und diesen Schritt manuell ausführen, indem Sie den folgenden Befehl ausführen:<pre>$ cdk bootstrap -a 'python3 cloudcustodian/member_account_roles_stack.py' \<br /><br />--trust {security_account_id} \<br /><br />--context assume-role-credentials:writeIamRoleName={role_name} \<br /><br />--context assume-role-credentials:readIamRoleName={role_name} \<br /><br />--mode=ForWriting \<br /><br />--context bootstrap=true \<br /><br />--cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess</pre>Stellen Sie sicher, dass Sie die `{role_name}` Werte `{security_account_id}` und mit dem Namen einer IAM-Rolle aktualisieren, die Sie vom Sicherheitskonto aus übernehmen können und die über die erforderlichen Berechtigungen für das Bootstrapping des AWS-CDK verfügt.<br />Sie können auch andere Methoden verwenden, um die Mitgliedskonten zu booten, z. B. mit AWS CloudFormation. Weitere Informationen dazu finden Sie unter [Bootstrapping](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) in der AWS CDK-Dokumentation. | Developer | 

### Stellen Sie die AWS-CDK-Stacks bereit
<a name="deploy-the-aws-cdk-stacks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die IAM-Rollen in den Mitgliedskonten. | Führen Sie den folgenden Befehl aus, um den `member_account_roles_stack` Stack bereitzustellen und die IAM-Rollen in den Mitgliedskonten zu erstellen:<pre>cdk deploy --all -a 'python3 cloudcustodian/member_account_roles_stack.py' --require-approval never</pre> | Developer | 
| Stellen Sie den Cloud Custodian-Pipeline-Stack bereit. | Führen Sie den folgenden Befehl aus, um die Cloud `cloudcustodian_stack.py` Custodian-Pipeline zu erstellen, die im Sicherheitskonto bereitgestellt wird:<pre>cdk deploy -a 'python3 cloudcustodian/cloudcustodian_stack.py'</pre> | Developer | 

## Zugehörige Ressourcen
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-resources"></a>
+ [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)

## Anlagen
<a name="attachments-169a7bde-789e-4ebd-b4ca-80eb28ac9927"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/169a7bde-789e-4ebd-b4ca-80eb28ac9927/attachments/attachment.zip)