Dynamisches Generieren einer IAM Richtlinie mit IAM Access Analyzer mithilfe von Step Functions - AWS Prescriptive Guidance

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

Erstellt von Thomas Scott (AWS), Adil El Kanabi (), Koen van Blijderveen (AWS) und Rafal Pawlaszek () AWS AWS

IAMCode-Repository: Automated Access Analyzer Rollenrichtlinien-Generator

Umgebung: PoC oder Pilotprojekt

Technologien: Sicherheit, Identität, Compliance; Serverlos

AWSDienste: AWS IAM Access Analyzer; AWS Lambda; AWS Step Functions; AWS Identity and Access Management

Übersicht

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 Benutzer des Kontos 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 für 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

Voraussetzungen

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

Zielarchitektur

Der Step Functions Functions-Workflow generiert eine neue Richtlinie und speichert sie in CodeCommit.
  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.

  2. 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.

  3. Im nächsten Workflow-Schritt wird IAM Access Analyzer aufgerufenAPI, um mit der Generierung der Richtlinie zu beginnen.

  4. IAMAccess Analyzer verwendet den Amazon-Ressourcennamen (ARN) der Rolle, die Sie bei der Einrichtung angegeben haben, und analysiert 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.

  5. 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 den IAM Access Analyzer aufzurufen API und die neue IAM Richtlinie abzurufen. IAMAccess Analyzer gibt die Richtlinie als JSON Datei zurück.

  6. Im nächsten Workflow-Schritt wird die Datei < IAM role name>/policy.json in einem Amazon Simple Storage Service (Amazon S3) -Bucket abgelegt. Sie definieren diesen S3-Bucket als Teil der Einrichtung dieser Lösung.

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

  8. 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

AWS -Services

  • AWS Cloud Development Kit (AWS CDK)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.

  • AWS CDK Toolkit ist ein Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS Cloud Development Kit (AWS CDK) App interagieren können.

  • AWS CloudTrailhilft Ihnen bei der Prüfung der Unternehmensführung, der Einhaltung von Vorschriften und der betrieblichen Risiken Ihres AWS-Konto.

  • AWS CodeCommitist 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) 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) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden. Dieses Muster verwendet IAMAccess Analyzer, eine Funktion vonIAM, zur Analyse Ihrer CloudTrail Protokolle, 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 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) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • AWS Step Functionsist 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 SDKServiceintegrationen in Step Functions, um API Serviceaktionen aus Ihrem Workflow heraus aufzurufen.

Andere Tools

  • CDKfor Terraform (CDKTF) hilft Ihnen dabei, Infrastruktur als Code (IaC) zu definieren, indem Sie gängige Programmiersprachen wie Python und Typescript verwenden.

  • Lerna ist ein Build-System zum Verwalten und Veröffentlichen mehrerer JavaScript Pakete aus demselben Repository. TypeScript

  • Node.js ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde.

  • 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-Repository verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Repo.

Mit dem folgenden Befehl wird das Automated IAM Access Analyzer Role Policy Generator (GitHub) -Repository geklont.

git clone https://github.com/aws-samples/automated-iam-access-analyzer.git
App-Developer

Installieren Sie Lerna.

Der folgende Befehl installiert Lerna.

npm i -g lerna
App-Developer

Richten Sie die Abhängigkeiten ein.

Der folgende Befehl installiert die Abhängigkeiten für das Repository.

cd automated-iam-access-analyzer/ npm install && npm run bootstrap
App-Developer

Erstellen Sie den Code.

Der folgende Befehl testet, erstellt und bereitet die Zip-Pakete der Lambda-Funktionen vor.

npm run test:code npm run build:code npm run pack:code
App-Developer

Erstellen Sie die Konstrukte.

Mit dem folgenden Befehl wird die Infrastruktur erstellt, indem Anwendungen für sowohl als auch AWS CDK synthetisiert werden. CDKTF

npm run build:infra

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.

AWSAdministrator, App-Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie den AWS CDK Stack bereit.

Mit dem folgenden Befehl wird die Infrastruktur über AWS CloudFormation bereitgestellt. Legen Sie die folgenden Parameter fest:

  • <NAME_OF_ROLE>— Die ARN IAM Rolle, für die Sie eine neue Richtlinie erstellen.

  • <TRAIL_ARN>— Der ARN CloudTrail Pfad, in dem die Rollenaktivität gespeichert ist.

  • <CRON_EXPRESSION_TO_RUN_SOLUTION>— Der Cron-Ausdruck, der den Regenerierungsplan für die Richtlinie definiert. Der Step Functions Functions-Workflow wird nach diesem Zeitplan ausgeführt.

  • <TRAIL_LOOKBACK>— Der Zeitraum in Tagen, für den Sie bei der Bewertung der Rollenberechtigungen zurückblicken müssen.

cd infra/cdk cdk deploy —-parameters roleArn=<NAME_OF_ROLE> \ —-parameters trailArn=<TRAIL_ARN> \ --parameters schedule=<CRON_EXPRESSION_TO_RUN_SOLUTION> \ [ --parameters trailLookBack=<TRAIL_LOOKBACK> ]

Hinweis: 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.

AWSAdministrator

Überprüfen Sie die generierte Richtlinie manuell.

Überprüfen Sie in Ihrem CodeCommit Repository die generierte Datei < ROLE _ ARN >.json, um sicherzustellen, dass die Berechtigungen „Zulassen“ und „Verweigern“ für die Rolle geeignet sind.

AWSAdministrator
AufgabeBeschreibungErforderliche Fähigkeiten

Synthetisieren Sie die Terraform-Vorlage.

Der folgende Befehl synthetisiert die Terraform-Vorlage.

lerna exec cdktf synth --scope @aiaa/tfm
App-Developer

Stellen Sie die Terraform-Vorlage bereit.

Der folgende Befehl navigiert zu dem Verzeichnis, das die -definierte Infrastruktur enthält. CDKTF

cd infra/cdktf

Mit dem folgenden Befehl wird die Infrastruktur im Ziel bereitgestellt. AWS-Konto Legen Sie die folgenden Parameter fest:

  • <account_ID>— Die ID des Zielkontos.

  • <region>- Das Ziel AWS-Region.

  • <selected_role_ARN>— Die ARN IAM Rolle, für die Sie eine neue Richtlinie erstellen.

  • <trail_ARN>— Der ARN CloudTrail Pfad, in dem die Rollenaktivität gespeichert ist.

  • <schedule_expression>— Der Cron-Ausdruck, der den Regenerierungsplan für die Richtlinie definiert. Der Step Functions Functions-Workflow wird nach diesem Zeitplan ausgeführt.

  • <trail_look_back>— Der Zeitraum in Tagen, für den Sie bei der Bewertung der Rollenberechtigungen zurückblicken müssen.

TF_VAR_accountId=<account_ID> \ TF_VAR_region=<region> \ TF_VAR_roleArns=<selected_role_ARN> \ TF_VAR_trailArn=<trail_ARN> \ TF_VAR_schedule=<schedule_expression> \ [ TF_VAR_trailLookBack=<trail_look_back> ] \ cdktf deploy

Hinweis: 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.

AWSAdministrator

Überprüfen Sie die generierte Richtlinie manuell.

Überprüfen Sie in Ihrem CodeCommit Repository die generierte Datei < ROLE _ ARN >.json, um sicherzustellen, dass die Berechtigungen „Zulassen“ und „Verweigern“ für die Rolle geeignet sind.

AWSAdministrator

Zugehörige Ressourcen

AWS Ressourcen

Sonstige Ressourcen