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: | 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
Ein Aktiv AWS-Konto mit aktiviertem AWS CloudTrail Trail.
IAMBerechtigungen 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 (Dokumentation zu Step Functions).
AWS Lambda Funktionen erstellen. Weitere Informationen finden Sie unter Ausführungsrolle und Benutzerberechtigungen (Lambda-Dokumentation).
IAMRollen erstellen. Weitere Informationen finden Sie unter Eine Rolle erstellen, um Berechtigungen an einen IAM Benutzer zu delegieren (IAMDokumentation).
npm ist installiert. Weitere Informationen finden Sie unter Node.js und npm herunterladen und installieren (npm-Dokumentation
). Wenn Sie diese Lösung mit AWS CDK (Option 1) bereitstellen:
AWS CDK Toolkit, installiert und konfiguriert. Weitere Informationen finden Sie unter Installieren 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 Install CDK for Terraform
(CDKTFDokumentation). Terraform, installiert und konfiguriert. Weitere Informationen finden Sie unter Erste Schritte
(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 (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
Zielarchitektur
![Der Step Functions Functions-Workflow generiert eine neue Richtlinie und speichert sie in CodeCommit.](images/pattern-img/cb9ee0c9-3fe0-43d9-9dd2-1aedb705c78f/images/eb13a5db-f803-40b1-9a8c-4ef13d584cd4.png)
Eine regelmäßig geplante EventBridge Amazon-Ereignisregel startet einen Step Functions Functions-Workflow. Sie definieren diesen Regenerierungsplan im Rahmen der Einrichtung dieser Lösung.
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.
Im nächsten Workflow-Schritt wird IAM Access Analyzer aufgerufenAPI, um mit der Generierung der Richtlinie zu beginnen.
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.
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.
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.
Eine Amazon S3 S3-Ereignisbenachrichtigung startet eine Lambda-Funktion.
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
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Repo. | Mit dem folgenden Befehl wird das Automated IAM Access Analyzer Role Policy Generator
| App-Developer |
Installieren Sie Lerna. | Der folgende Befehl installiert Lerna.
| App-Developer |
Richten Sie die Abhängigkeiten ein. | Der folgende Befehl installiert die Abhängigkeiten für das Repository.
| App-Developer |
Erstellen Sie den Code. | Der folgende Befehl testet, erstellt und bereitet die Zip-Pakete der Lambda-Funktionen vor.
| 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
| |
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 |
Aufgabe | Beschreibung | Erforderliche 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:
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 |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Synthetisieren Sie die Terraform-Vorlage. | Der folgende Befehl synthetisiert die Terraform-Vorlage.
| App-Developer |
Stellen Sie die Terraform-Vorlage bereit. | Der folgende Befehl navigiert zu dem Verzeichnis, das die -definierte Infrastruktur enthält. CDKTF
Mit dem folgenden Befehl wird die Infrastruktur im Ziel bereitgestellt. AWS-Konto Legen Sie die folgenden Parameter fest:
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