

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.

# Dynamisches Generieren einer IAM-Richtlinie mit IAM Access Analyzer mithilfe von Step Functions
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions"></a>

*Thomas Scott, Koen van Blijderveen, Adil El Kanabi und Rafal Pawlaszek, Amazon Web Services*

## Zusammenfassung
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-summary"></a>

*Least-Privilege ist die bewährte Sicherheitsmethode, bei der nur die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen* gewährt werden. Die Implementierung des Zugriffs mit den geringsten Rechten in einem bereits aktiven Amazon Web Services (AWS) -Konto kann schwierig sein, da Sie Benutzer nicht ungewollt daran hindern möchten, ihre Aufgaben zu erfüllen, indem Sie ihre Berechtigungen ändern. Bevor Sie AWS Identity and Access Management (IAM) -Richtlinienänderungen implementieren können, müssen Sie die Aktionen und Ressourcen verstehen, die die Kontonutzer ausführen.

Dieses Muster soll Ihnen helfen, das Prinzip des Zugriffs mit den geringsten Rechten anzuwenden, ohne die Teamproduktivität zu blockieren oder zu beeinträchtigen. Es beschreibt, wie Sie IAM Access Analyzer verwenden und AWS Step Functions dynamisch eine up-to-date IAM-Richtlinie für Ihre Rolle generieren, die auf den Aktionen basiert, die derzeit im Konto ausgeführt werden. Die neue Richtlinie ist so konzipiert, dass sie die aktuelle Aktivität zulässt, aber alle unnötigen, erhöhten Rechte entfernt. Sie können die generierte Richtlinie anpassen, indem Sie Regeln zum Zulassen und Verweigern definieren. Die Lösung integriert Ihre benutzerdefinierten Regeln.

Dieses Muster beinhaltet Optionen für die Implementierung der Lösung mit AWS Cloud Development Kit (AWS CDK) oder HashiCorp CDK for Terraform (CDKTF). Anschließend können Sie die neue Richtlinie mithilfe einer CI/CD-Pipeline (Continuous Integration and Continuous Delivery) der Rolle zuordnen. Wenn Sie über eine Architektur mit mehreren Konten verfügen, können Sie diese Lösung in jedem Konto einsetzen, für das Sie aktualisierte IAM-Richtlinien für die Rollen generieren möchten, wodurch die Sicherheit Ihrer gesamten Umgebung erhöht wird. AWS Cloud 

## Voraussetzungen und Einschränkungen
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-prereqs"></a>

**Voraussetzungen**
+ Ein Aktiv AWS-Konto mit aktiviertem AWS CloudTrail Trail.
+ IAM-Berechtigungen für Folgendes:
  + Erstellen und implementieren Sie Step Functions Functions-Workflows. Weitere Informationen finden Sie unter [Aktionen, Ressourcen und Bedingungsschlüssel für AWS Step Functions](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstepfunctions.html) (Dokumentation zu Step Functions).
  +  AWS Lambda Funktionen erstellen. Weitere Informationen finden Sie unter [Ausführungsrolle und Benutzerberechtigungen](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-permissions) (Lambda-Dokumentation).
  + Erstellen Sie IAM-Rollen. Weitere Informationen finden Sie unter [Erstellen einer Rolle zur Delegierung von Berechtigungen an einen IAM-Benutzer (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)).
+ npm ist installiert. Weitere Informationen finden Sie unter [Node.js und npm herunterladen und installieren (npm-Dokumentation](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)).
+ Wenn Sie diese Lösung mit AWS CDK (Option 1) bereitstellen:
  + AWS CDK Toolkit, installiert und konfiguriert. Weitere Informationen finden [Sie unter Installieren](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) von AWS CDK(AWS CDK Dokumentation).
+ Wenn Sie diese Lösung mit CDKTF (Option 2) bereitstellen:
  + CDKTF, installiert und konfiguriert. Weitere Informationen finden [Sie unter CDK for Terraform installieren (CDKTF-Dokumentation](https://learn.hashicorp.com/tutorials/terraform/cdktf-install?in=terraform/cdktf)).
  + Terraform, installiert und konfiguriert. Weitere Informationen finden Sie unter [Erste Schritte](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) (Terraform-Dokumentation).
+ AWS Command Line Interface (AWS CLI) lokal installiert und konfiguriert für Ihren. AWS-Konto Weitere Informationen finden Sie unter [Installation oder Aktualisierung der neuesten Version von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (AWS CLI Dokumentation).

**Einschränkungen**
+ Dieses Muster wendet die neue IAM-Richtlinie nicht auf die Rolle an. Am Ende dieser Lösung wird die neue IAM-Richtlinie in einem AWS CodeCommit Repository gespeichert. Sie können eine CI/CD Pipeline verwenden, um Richtlinien auf die Rollen in Ihrem Konto anzuwenden.

## Architektur
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-architecture"></a>

**Zielarchitektur**

![\[Der Step Functions Functions-Workflow generiert eine neue Richtlinie und speichert sie in CodeCommit.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/cb9ee0c9-3fe0-43d9-9dd2-1aedb705c78f/images/eb13a5db-f803-40b1-9a8c-4ef13d584cd4.png)


1. Eine regelmäßig geplante EventBridge Amazon-Ereignisregel startet einen Step Functions Functions-Workflow. Sie definieren diesen Regenerierungsplan im Rahmen der Einrichtung dieser Lösung.

1. Im Step Functions Functions-Workflow generiert eine Lambda-Funktion die Datumsbereiche, die bei der Analyse der Kontoaktivitäten in den CloudTrail Protokollen verwendet werden sollen.

1. Im nächsten Workflow-Schritt wird die IAM Access Analyzer-API aufgerufen, um mit der Generierung der Richtlinie zu beginnen.

1. Mithilfe des Amazon-Ressourcennamens (ARN) der Rolle, die Sie bei der Einrichtung angegeben haben, analysiert IAM Access Analyzer die CloudTrail Protokolle auf Aktivitäten innerhalb der angegebenen Datumsrate. Basierend auf der Aktivität generiert IAM Access Analyzer eine IAM-Richtlinie, die nur die Aktionen und Dienste zulässt, die von der Rolle im angegebenen Zeitraum genutzt wurden. Wenn dieser Schritt abgeschlossen ist, generiert dieser Schritt eine Job-ID.

1. Im nächsten Workflow-Schritt wird alle 30 Sekunden nach der Job-ID gesucht. Wenn die Job-ID erkannt wird, verwendet dieser Schritt die Job-ID, um die IAM Access Analyzer-API aufzurufen und die neue IAM-Richtlinie abzurufen. IAM Access Analyzer gibt die Richtlinie als JSON-Datei zurück.

1. Der nächste Workflow-Schritt platziert die <IAM role name>Datei **/policy.json** in einem Amazon Simple Storage Service (Amazon S3) -Bucket. Sie definieren diesen S3-Bucket im Rahmen der Einrichtung dieser Lösung.

1. Eine Amazon S3 S3-Ereignisbenachrichtigung startet eine Lambda-Funktion.

1. Die Lambda-Funktion ruft die Richtlinie aus dem S3-Bucket ab, integriert die benutzerdefinierten Regeln, die Sie in den Dateien **allow.json und **deny.json**** definieren, und überträgt dann die aktualisierte Richtlinie an. CodeCommit Sie definieren das CodeCommit Repository, den Branch und den Ordnerpfad im Rahmen der Einrichtung dieser Lösung.

## Tools
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) ist ein Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS Cloud Development Kit (AWS CDK) App interagieren können.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)hilft Ihnen bei der Prüfung der Unternehmensführung, der Einhaltung von Vorschriften und der betrieblichen Risiken Ihres AWS-Konto.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [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 AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden. Dieses Muster verwendet [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html), eine Funktion von IAM, um Ihre CloudTrail Protokolle zu analysieren, um Aktionen und Dienste zu identifizieren, die von einer IAM-Entität (Benutzer oder Rolle) verwendet wurden, und generiert dann eine IAM-Richtlinie, die auf dieser Aktivität basiert.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische AWS-Services Anwendungen zu erstellen. In diesem Muster verwenden Sie [AWS SDK-Dienstintegrationen](https://docs.aws.amazon.com/step-functions/latest/dg/supported-services-awssdk.html) in Step Functions, um Service-API-Aktionen aus Ihrem Workflow aufzurufen.

**Andere Tools**
+ [CDK for Terraform (CDKTF)](https://learn.hashicorp.com/collections/terraform/cdktf) unterstützt Sie bei der Definition von Infrastructure as Code (IaC) mithilfe gängiger Programmiersprachen wie Python und Typescript.
+ [Lerna ist ein](https://lerna.js.org/docs/introduction) Build-System zum Verwalten und Veröffentlichen mehrerer Pakete aus demselben Repository. JavaScript TypeScript 
+ [Node.js](https://nodejs.org) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde.
+ [npm](https://docs.npmjs.com/about-npm) ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Automated IAM Access Analyzer Role Policy Generator](https://github.com/aws-samples/automated-iam-access-analyzer) Repository verfügbar.

## Epen
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-epics"></a>

### Bereite dich auf den Einsatz vor
<a name="prepare-for-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repo. | Mit dem folgenden Befehl wird das [Automated IAM Access Analyzer Role Policy Generator () GitHub -Repository](https://github.com/aws-samples/automated-iam-access-analyzer) geklont.<pre>git clone https://github.com/aws-samples/automated-iam-access-analyzer.git</pre> | App-Developer | 
| Installieren Sie Lerna. | Der folgende Befehl installiert Lerna.<pre>npm i -g lerna</pre> | App-Developer | 
| Richten Sie die Abhängigkeiten ein. | Der folgende Befehl installiert die Abhängigkeiten für das Repository.<pre>cd automated-iam-access-analyzer/<br />npm install && npm run bootstrap</pre> | App-Developer | 
| Erstellen Sie den Code. | Der folgende Befehl testet, erstellt und bereitet die Zip-Pakete der Lambda-Funktionen vor.<pre>npm run test:code<br />npm run build:code<br />npm run pack:code</pre> | App-Developer | 
| Erstellen Sie die Konstrukte. | Der folgende Befehl erstellt die Infrastruktur, die Anwendungen synthetisiert, sowohl für CDKTF als auch für CDKTF AWS CDK .<pre>npm run build:infra</pre> |  | 
| Konfigurieren Sie alle benutzerdefinierten Berechtigungen. | Bearbeiten Sie im **Repo-Ordner** des geklonten Repositorys die Dateien **allow.json und **deny.json****, um alle benutzerdefinierten Berechtigungen für die Rolle zu definieren. Wenn die Dateien **allow.json und deny.json dieselbe** **Berechtigung enthalten, wird die Berechtigung „Deny**“ angewendet. | AWS-Administrator, App-Entwickler | 

### Option 1 — Stellen Sie die Lösung bereit mit AWS CDK
<a name="option-1-deploy-the-solution-using-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den AWS CDK Stack bereit. | Der folgende Befehl stellt die Infrastruktur bereit über AWS CloudFormation. Legen Sie die folgenden Parameter fest:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions.html)<pre>cd infra/cdk<br />cdk deploy —-parameters roleArn=<NAME_OF_ROLE> \<br />—-parameters trailArn=<TRAIL_ARN> \<br />--parameters schedule=<CRON_EXPRESSION_TO_RUN_SOLUTION> \<br />[ --parameters trailLookBack=<TRAIL_LOOKBACK> ]</pre>Die eckigen Klammern stehen für optionale Parameter. | App-Developer | 
| (Optional) Warten Sie auf die neue Richtlinie. | Wenn der Trail keine angemessene Menge an historischen Aktivitäten für die Rolle enthält, warten Sie, bis Sie sicher sind, dass genügend protokollierte Aktivitäten vorhanden sind, damit IAM Access Analyzer eine genaue Richtlinie generieren kann. Wenn die Rolle für einen ausreichenden Zeitraum im Konto aktiv war, ist diese Wartezeit möglicherweise nicht erforderlich. | AWS-Administrator | 
| Überprüfen Sie die generierte Richtlinie manuell. | Überprüfe in deinem CodeCommit Repository die generierte **.json-Datei**<ROLE\$1ARN>, um sicherzustellen, dass die Berechtigungen „Zulassen“ und „Verweigern“ für die Rolle geeignet sind. | AWS-Administrator | 

### Option 2 — Stellen Sie die Lösung mit CDKTF bereit
<a name="option-2-ndash-deploy-the-solution-using-cdktf"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Synthetisieren Sie die Terraform-Vorlage. | Der folgende Befehl synthetisiert die Terraform-Vorlage.<pre>lerna exec cdktf synth --scope @aiaa/tfm</pre> | App-Developer | 
| Stellen Sie die Terraform-Vorlage bereit. | Der folgende Befehl navigiert zu dem Verzeichnis, das die von CDKTF definierte Infrastruktur enthält.<pre>cd infra/cdktf</pre>Mit dem folgenden Befehl wird die Infrastruktur im Ziel bereitgestellt. AWS-Konto Legen Sie die folgenden Parameter fest:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions.html)<pre>TF_VAR_accountId=<account_ID> \<br /> TF_VAR_region=<region> \<br /> TF_VAR_roleArns=<selected_role_ARN> \<br /> TF_VAR_trailArn=<trail_ARN> \<br /> TF_VAR_schedule=<schedule_expression> \<br /> [ TF_VAR_trailLookBack=<trail_look_back> ] \ cdktf deploy</pre>Die eckigen Klammern stehen für optionale Parameter. | App-Developer | 
| (Optional) Warten Sie auf die neue Richtlinie. | Wenn der Trail keine angemessene Menge an historischen Aktivitäten für die Rolle enthält, warten Sie, bis Sie sicher sind, dass genügend protokollierte Aktivitäten vorhanden sind, damit IAM Access Analyzer eine genaue Richtlinie generieren kann. Wenn die Rolle für einen ausreichenden Zeitraum im Konto aktiv war, ist diese Wartezeit möglicherweise nicht erforderlich. | AWS-Administrator | 
| Überprüfen Sie die generierte Richtlinie manuell. | Überprüfe in deinem CodeCommit Repository die generierte **.json-Datei**<ROLE\$1ARN>, um sicherzustellen, dass die Berechtigungen „Zulassen“ und „Verweigern“ für die Rolle geeignet sind. | AWS-Administrator | 

## Zugehörige Ressourcen
<a name="dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions-resources"></a>

**AWS Ressourcen**
+ [Endpunkte und Kontingente von IAM Access Analyzer](https://docs.aws.amazon.com/general/latest/gr/access-analyzer.html)
+ [Konfiguration der AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Berechtigungen mit den geringsten Rechten](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)

**Sonstige Ressourcen**
+ [CDK für Terraform (Terraform-Website](https://www.terraform.io/cdktf))