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.
AWS Organizations Richtlinien mithilfe AWS CodePipeline von Amazon Bedrock als Code verwalten
Erstellt von Andre Cavalcante (AWS) und Mariana Pessoa de Queiroz (AWS)
Übersicht
Sie können Autorisierungsrichtlinien verwenden, AWS Organizations um den Zugriff für Prinzipale und Ressourcen in Ihren Mitgliedskonten zentral zu konfigurieren und zu verwalten. Richtlinien zur Servicesteuerung (SCPs) definieren die maximal verfügbaren Berechtigungen für die AWS Identity and Access Management (IAM-) Rollen und Benutzer in Ihrer Organisation. Richtlinien zur Ressourcenkontrolle (RCPs) definieren die maximal verfügbaren Berechtigungen für Ressourcen in Ihrer Organisation.
Dieses Muster hilft Ihnen bei der Verwaltung SCPs und RCPs als Infrastructure as Code (IaC), die Sie über eine CI/CD-Pipeline (Continuous Integration and Continuous Deployment) bereitstellen. Indem Sie unsere AWS CloudFormation Hashicorp Terraform zur Verwaltung dieser Richtlinien verwenden, können Sie den Aufwand reduzieren, der mit der Erstellung und Verwaltung mehrerer Autorisierungsrichtlinien verbunden ist.
Dieses Muster umfasst die folgenden Funktionen:
Sie erstellen, löschen und aktualisieren die Autorisierungsrichtlinien mithilfe von Manifestdateien (
scp-management.json
undrcp-management.json
).Sie arbeiten mit Leitplanken statt mit Richtlinien. Sie definieren Ihre Leitplanken und ihre Ziele in den Manifestdateien.
Die Pipeline, die AWS CodeBuild und verwendet AWS CodePipeline, führt die Leitplanken in den Manifestdateien zusammen und optimiert sie. Für jede Anweisung in der Manifestdatei fasst die Pipeline die Guardrails zu einem einzigen SCP oder RCP zusammen und wendet sie dann auf die definierten Ziele an.
AWS Organizations wendet die Richtlinien auf Ihre Ziele an. Bei einem Ziel kann es sich um eine Organisationseinheit (OU), eine Umgebung (bei der es sich um eine Gruppe von Konten handelt oder OUs die Sie in der
environments.json
Datei definieren) oder um eine Gruppe von Konten mit einem gemeinsamen AWS Tag handeln. AWS-KontoAmazon Bedrock liest die Pipeline-Protokolle und fasst alle Richtlinienänderungen zusammen.
Die Pipeline erfordert eine manuelle Genehmigung. Der Genehmiger kann die von Amazon Bedrock erstellte Zusammenfassung lesen, die ihm hilft, die Änderungen zu verstehen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Mehrere AWS-Konten , die als Organisation verwaltet werden in. AWS Organizations Weitere Informationen finden Sie unter Organisation erstellen.
Die SCP- und RCP-Funktionen sind in aktiviert. AWS Organizations Weitere Informationen finden Sie unter Einen Richtlinientyp aktivieren.
Wenn Sie diese Lösung nicht über eine Terraform-Pipeline bereitstellen, muss die Terraform-Statusdatei in einem Amazon Simple Storage Service (Amazon S3) -Bucket gespeichert
werden, in AWS-Konto dem Sie die Policy-Management-Pipeline bereitstellen.
Einschränkungen
Sie können dieses Muster nicht verwenden, um Objekte zu verwalten SCPs RCPs , die außerhalb dieser CI/CD-Pipeline erstellt wurden. Sie können jedoch vorhandene Richtlinien über die Pipeline neu erstellen. Weitere Informationen finden Sie unter Migrieren vorhandener Richtlinien zur Pipeline im Abschnitt Zusätzliche Informationen dieses Musters.
Die Anzahl der Konten und die Richtlinien in jedem Konto unterliegen den Kontingenten und Dienstlimits für AWS Organizations. OUs
Dieses Muster kann nicht zur Konfiguration von Verwaltungsrichtlinien wie Backup-Richtlinien, Tag-Richtlinien, Chat-Anwendungsrichtlinien oder deklarativen Richtlinien verwendet werden. AWS Organizations
Architektur
Das folgende Diagramm zeigt den Arbeitsablauf der Richtlinienverwaltungspipeline und der zugehörigen Ressourcen.

Das Diagramm zeigt den folgenden Workflow:
Ein Benutzer überträgt Änderungen an den Dateien
scp-management.json
oder denrcp-management.json
Manifestdateien im Hauptzweig des Remote-Repositorys.Durch die Änderung des
main
Zweigs wird der Pipeline-Eingang initiiert. AWS CodePipelineCodePipeline startet das
Validate-Plan
CodeBuild Projekt. Dieses Projekt verwendet ein Python-Skript im Remote-Repository, um Richtlinien und die Richtlinienmanifestdateien zu validieren. Dieses CodeBuild Projekt macht Folgendes:Überprüft, ob die SCP- und RCP-Manifestdateien eine eindeutige Anweisung IDs ()
Sid
enthalten.Verwendet die
rcp-policy-processor/main.py
Python-Skriptescp-policy-processor/main.py
und, um Guardrails im Guardrails-Ordner zu einer einzigen RCP- oder SCP-Richtlinie zu verketten. Es kombiniert Leitplanken, die dieselben, und haben.Resource
Action
Condition
Wird verwendet AWS Identity and Access Management Access Analyzer , um die endgültige, optimierte Richtlinie zu validieren. Falls irgendwelche Ergebnisse vorliegen, wird die Pipeline gestoppt.
Erstellt
scps.json
rcps.json
Dateien, die Terraform verwendet, um Ressourcen zu erstellen.Führt den
terraform plan
Befehl aus, der einen Terraform-Ausführungsplan erstellt.
(Optional) Das
Validate-Plan
CodeBuild Projekt verwendet dasbedrock-prompt/prompt.py
Skript, um eine Aufforderung an Amazon Bedrock zu senden. Sie definieren die Aufforderung in derbedrock-prompt/prompt.txt
Datei. Amazon Bedrock verwendet Anthropic Claude Sonnet 3.5, um durch die Analyse der Terraform- und Python-Protokolle eine Zusammenfassung der vorgeschlagenen Änderungen zu generieren.CodePipeline verwendet ein Amazon Simple Notification Service (Amazon SNS) -Thema, um Genehmiger darüber zu informieren, dass Änderungen überprüft werden müssen. Wenn Amazon Bedrock eine Änderungszusammenfassung generiert hat, enthält die Benachrichtigung diese Zusammenfassung.
Ein Policy-Genehmiger genehmigt die Maßnahme in. CodePipeline Wenn Amazon Bedrock eine Änderungszusammenfassung generiert hat, kann der Genehmiger die Zusammenfassung CodePipeline vor der Genehmigung überprüfen.
CodePipeline startet das Projekt.
Apply
CodeBuild Dieses Projekt verwendet Terraform, um die RCP- und SCP-Änderungen in anzuwenden. AWS Organizations
Die mit dieser Architektur verknüpfte IaC-Vorlage stellt außerdem die folgenden Ressourcen bereit, die die Richtlinienverwaltungspipeline unterstützen:
Ein Amazon S3 S3-Bucket zum Speichern von CodePipeline Artefakten und Skripten wie
scp-policy-processor/main.py
undbedrock-prompt/prompt.py
Ein AWS Key Management Service (AWS KMS) -Schlüssel, der die von dieser Lösung erstellten Ressourcen verschlüsselt
Tools
AWS-Services
Amazon Bedrock ist ein vollständig verwalteter KI-Service, der viele leistungsstarke Basismodelle über eine einheitliche API zur Nutzung verfügbar macht.
AWS CodeBuildist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
AWS CodePipelinehilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
AWS Organizationsist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.
AWS SDK für Python (Boto3)
ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services. Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
Andere Tools
HashiCorp Terraform
ist ein IaC-Tool, mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
Code-Repository
Der Code für dieses Muster ist im organizations-policy-pipelinesample-repository
Ordner enthalten sind:
environments.json
Enthält in demenvironments
Ordner eine Liste von Umgebungen. Umgebungen sind eine Gruppe von Zielen, und sie können Organisationseinheiten (OUs) enthalten AWS-Konto IDs .Im
rcp-management
Ordner:Der
guardrails
Ordner enthält die einzelnen Leitplanken für Ihre RCPsDer
policies
Ordner enthält die einzelnen RCPsDie
rcp-management.json
Manifestdatei hilft Ihnen bei der Verwaltung von RCP-Guardrails RCPs, Full und den zugehörigen Zielen.
Im Ordner:
scp-management
Der
guardrails
Ordner enthält die einzelnen Leitplanken für Ihre SCPsDer
policies
Ordner enthält die einzelnen SCPsDie
scp-management.json
Manifestdatei hilft Ihnen bei der Verwaltung von SCP-Guardrails SCPs, Full und den zugehörigen Zielen.
Der
utils
Ordner enthält Skripts, mit denen Sie Ihre aktuellen Dateien migrieren SCPs und RCPs sie über die Pipeline verwalten können. Weitere Informationen finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.
Bewährte Methoden
Bevor Sie die Pipeline einrichten, empfehlen wir Ihnen, sich zu vergewissern, dass Sie die Grenzwerte Ihrer AWS Organizations Kontingente nicht erreicht haben.
Wir empfehlen, das AWS Organizations Verwaltungskonto nur für Aufgaben zu verwenden, die in diesem Konto ausgeführt werden müssen. Weitere Informationen finden Sie unter Bewährte Methoden für das Verwaltungskonto.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein -Repository. | Erstellen Sie ein Repository, von dem aus Ihr Security Operations Team die Richtlinien verwaltet. Verwenden Sie einen der Drittanbieter für Repositorys, der dies AWS CodeConnections unterstützt. | DevOps Ingenieur |
Delegieren Sie die Richtlinienverwaltung. | Delegieren Sie die Verwaltung der AWS Organizations Richtlinien an das Mitgliedskonto, für das Sie die Pipeline bereitstellen. Anweisungen finden Sie unter Erstellen einer ressourcenbasierten Delegierungsrichtlinie mit. AWS Organizations Ein Beispiel für eine Richtlinie finden Sie unter Beispiel für eine ressourcenbasierte Delegierungsrichtlinie im Abschnitt Zusätzliche Informationen dieses Musters. | AWS-Administrator |
(Optional) Aktivieren Sie das Foundation-Modell. | Wenn Sie Zusammenfassungen der Richtlinienänderungen erstellen möchten, aktivieren Sie den Zugriff auf das Anthropic Claude 3.5 Sonnet Foundation-Modell in Amazon Bedrock in dem Land, in AWS-Konto dem Sie die Pipeline bereitstellen. Anweisungen finden Sie unter Zugriff auf Amazon Bedrock Foundation-Modelle hinzufügen oder entfernen. | Allgemeines AWS |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Repository | Geben Sie den folgenden Befehl ein, um das organizations-policy-pipeline
| DevOps Ingenieur |
Definieren Sie Ihre Bereitstellungsmethode. |
| DevOps Ingenieur |
Stellen Sie die Pipeline bereit. |
| DevOps Ingenieur, Terraform |
Connect zum Remote-Repository her. | Im vorherigen Schritt hat Terraform eine CodeConnections Verbindung zum Repository eines Drittanbieters hergestellt. Ändern Sie in der AWS Developer Tools-Konsole | AWS DevOps |
Abonnieren Sie das Amazon-SNS-Thema. | Terraform hat ein Amazon SNS SNS-Thema erstellt. Abonnieren Sie einen Endpunkt für das Thema und bestätigen Sie das Abonnement, damit die Genehmiger Benachrichtigungen über ausstehende Genehmigungsaktionen in der Pipeline erhalten. Anweisungen finden Sie unter Erstellen eines Abonnements für ein Amazon SNS SNS-Abonnement. | Allgemeines AWS |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Füllen Sie das Remote-Repository auf. | Kopieren Sie den Inhalt des | DevOps Ingenieur |
Definieren Sie Ihre Umgebungen. |
| DevOps Ingenieur |
Definiere deine Leitplanken. |
| DevOps Ingenieur |
Definieren Sie Ihre Richtlinien. |
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Konfigurieren Sie die Manifestdateien. |
| DevOps Ingenieur |
Starte die Pipeline. | Übernehmen Sie die Änderungen und übertragen Sie sie in den Zweig des Remote-Repositorys, den Sie in der | DevOps Ingenieur |
Genehmigen Sie die Änderungen. | Wenn das
| Allgemeines AWS, Richtliniengenehmiger |
Validieren Sie die Bereitstellung. |
| Allgemeines AWS |
Fehlerbehebung
Problem | Lösung |
---|---|
Manifeste Dateifehler in der | Wenn die ODER-Dateien Fehler enthalten, wird in der Pipeline-Ausgabe die Meldung „Pipeline-Fehler in der Überprüfungs
|
Ergebnisse des IAM Access Analyzer in der | Die Meldung „Ergebnisse in IAM Access Analyzer während der Überprüfungs- und Planungsphase“ wird in der Pipeline-Ausgabe angezeigt, wenn Fehler in der Guardrail- oder Policy-Definition vorliegen. Dieses Muster verwendet IAM Access Analyzer, um die endgültige Richtlinie zu validieren. Gehen Sie wie folgt vor:
|
Zugehörige Ressourcen
Referenz zum JSON-Richtlinienelement (IAM-Dokumentation)
Richtlinien zur Ressourcenkontrolle (AWS Organizations Dokumentation)
Richtlinien zur Servicesteuerung (AWS Organizations Dokumentation)
Zugriff auf Amazon Bedrock Foundation-Modelle hinzufügen oder entfernen (Amazon Bedrock-Dokumentation)
Genehmigen oder lehnen Sie eine Genehmigungsaktion in CodePipeline (Dokumentation) CodePipeline ab
Zusätzliche Informationen
Beispiel für eine ressourcenbasierte Delegierungsrichtlinie
Im Folgenden finden Sie ein Beispiel für eine ressourcenbasierte Delegierungsrichtlinie für. AWS Organizations Sie ermöglicht dem delegierten Administratorkonto die Verwaltung SCPs und RCPs für die Organisation. Ersetzen Sie den Wert in der folgenden Beispielrichtlinie <MEMBER_ACCOUNT_ID>
durch die ID des Kontos, für das Sie die Richtlinienverwaltungspipeline bereitstellen.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegationToAudit", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<MEMBER_ACCOUNT_ID>:root" }, "Action": [ "organizations:ListTargetsForPolicy", "organizations:CreatePolicy", "organizations:DeletePolicy", "organizations:AttachPolicy", "organizations:DetachPolicy", "organizations:DisablePolicyType", "organizations:EnablePolicyType", "organizations:UpdatePolicy", "organizations:DescribeEffectivePolicy", "organizations:DescribePolicy", "organizations:DescribeResourcePolicy" ], "Resource": "*" } ] }
Migrieren vorhandener Richtlinien in die Pipeline
Wenn Sie bereits über diese Pipeline verfügen SCPs oder RCPs die Sie über diese Pipeline migrieren und verwalten möchten, können Sie die Python-Skripte im sample-repository/utils
Ordner des Code-Repositorys verwenden. Zu diesen Skripten gehören:
check-if-scp-exists-in-env.py
— Dieses Skript prüft, ob eine angegebene Richtlinie für Ziele in einer bestimmten Umgebung gilt, die Sie in derenvironments.json
Datei definieren. Geben Sie den folgenden Befehl ein, um dieses Skript auszuführen:python3 check-if-scp-exists-in-env.py \ --policy-type <POLICY_TYPE> \ --policy-name <POLICY_NAME> \ --env-id <ENV_ID>
Ersetzen Sie in diesem Befehl Folgendes:
<POLICY_TYPE>
istscp
oderrcp
<POLICY_NAME>
ist der Name des SCP oder RCP<ENV_ID>
ist die ID der Umgebung, die Sie in der Datei definiert habenenvironments.json
create-environments.py
— Dieses Skript erstellt eine environments.json-Datei, die auf der aktuellen SCPs und RCPs in Ihrer Umgebung basiert. Es schließt Richtlinien aus, die über bereitgestellt werden. AWS Control Tower Geben Sie den folgenden Befehl ein, um dieses Skript auszuführen, wobei<POLICY_TYPE>
es sich umscp
oderrcp
handelt:python create-environments.py --policy-type <POLICY_TYPE>
verify-policies-capacity.py
— Dieses Skript überprüft jede von Ihnen definierte Umgebung, um festzustellen, wie viel Kapazität für jedes AWS Organizations richtlinienbezogene Kontingent noch übrig ist. Sie definieren die Umgebungen, in die die Datei eingecheckt werden soll.environments.json
Geben Sie den folgenden Befehl ein, um dieses Skript auszuführen, wobei<POLICY_TYPE>
es sich umscp
oder handeltrcp
:python verify-policies-capacity.py --policy-type <POLICY_TYPE>