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 Verwalten von AWS Berechtigungssätzen mithilfe von Terraform
Vinicius Elias und Marcos Vinicius Pinto Jordão, Amazon Web Services
Übersicht
AWS IAM Identity Center erweitert AWS Identity and Access Management (IAM) durch die Bereitstellung eines zentralen Hubs für die Verwaltung des Single Sign-On-Zugriffs auf und Cloud-Anwendungen. AWS-Konten Die manuelle Verwaltung von IAM Identity Center-Berechtigungssätzen kann jedoch mit dem Wachstum Ihres Unternehmens immer komplexer und fehleranfälliger werden. Diese Komplexität kann zu potenziellen Sicherheitslücken und administrativem Aufwand führen.
Diese Lösung ermöglicht Ihnen die Verwaltung von Berechtigungssätzen über Infrastructure as Code (IaC) mithilfe einer systemeigenen Pipeline für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD). AWS-Services Es ermöglicht eine nahtlose Integration des Mechanismus zur Zuweisung von Berechtigungssätzen mit AWS Control Tower Lebenszyklusereignissen oder einer Account Factory for Terraform (AFT) -Umgebung. Dieser Ansatz bietet dynamische Identitätskonfigurationen sowohl für neue als auch für bestehende. AWS-Konten
Die EventBridge Amazon-Regeln überwachen die AWS-Konto Erstellung und Aktualisierung, sodass Ihre Identitätskonfigurationen mit Ihrer Organisationsstruktur synchronisiert bleiben. Nach dem Erstellen oder Aktualisieren von Konten in AWS Control Tower oder AFT wird die Pipeline ausgelöst. Sie wertet eine Reihe von JSON-Dateien mit Definitionen von Berechtigungssätzen und Zuweisungsregeln aus. Anschließend wendet die Pipeline die Einstellungen an und synchronisiert sie für alle Konten.
Dieser Ansatz bietet die folgenden Vorteile:
Konsistenz — Eliminiert manuelle Konfigurationsabweichungen in Ihrem AWS Unternehmen
Überprüfbarkeit — Führt einen vollständigen Verlauf aller Änderungen im Identitätsmanagement
Skalierbarkeit — Wendet Konfigurationen automatisch an, wenn Ihre AWS Umgebung wächst
Sicherheit — Reduziert menschliche Fehler bei der Zuweisung von Berechtigungen
Compliance — Erleichtert die Einhaltung gesetzlicher Anforderungen durch dokumentierte Änderungen und Zuweisungsregeln
Voraussetzungen und Einschränkungen
Eine Umgebung mit mehreren Konten mit AWS Control Tower und AWS Organizations Einrichtung. Optional können Sie AFT mit AWS Control Tower verwenden.
Ein Administrator wurde von IAM Identity Center mit dem Empfang der Lösung AWS-Konto beauftragt. Weitere Informationen finden Sie unter Delegierte Administration in der IAM Identity Center-Dokumentation.
Ein Repository für das Versionskontrollsystem (VCS) zur Verwaltung des Hauptcodes. Ein Beispiel finden Sie im GitHub Repository
der Lösung. Erforderliche AWS Ressourcen für das Terraform-Backend-Management, z. B. ein Amazon Simple Storage Service (Amazon S3) -Bucket und eine Amazon DynamoDB-Tabelle.
Einschränkungen
Die Pipeline verwendet AWS native Ressourcen und Open-Source-Terraform. Die Pipeline ist nicht bereit, Ökosysteme von Drittanbietern aufzurufen.
Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWS Dienste nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
Das folgende Diagramm zeigt die Komponenten und den Arbeitsablauf für dieses Muster.

AWS Control Tower Ablauf von Ereignissen
Die Lösung beginnt mit der Integration von Ereignissen, die entweder von AFT AWS Control Tower oder von AFT kommen. Die Wahl zwischen dem einen oder dem anderen Dienst wird bei der Implementierung anhand einer Variablendefinition getroffen. Unabhängig von der verwendeten Methode wird die Pipeline immer dann ausgelöst, wenn ein Konto erstellt oder aktualisiert wird. Die Pipeline gleicht die im Repository zur Verwaltung von Berechtigungssätzen gespeicherten Richtlinien ab.
Im Folgenden sind die AWS Control Tower Lebenszyklusereignisse aufgeführt:
CreateManagedAccount
— Wenn ein neues Konto erstellt wirdUpdateManagedAccount
— Wenn ein vorhandenes Konto aktualisiert wird
Weiterleitung von Ereignissen
EventBridge dient als zentraler Dienst zur Ereignisverarbeitung und erfasst Ereignisse, die im AWS Control Tower Konto generiert wurden. Wenn Ereignisse auftreten, werden sie EventBridge intelligent an einen zentralen Ereignisbus im Lösungskonto weitergeleitet. AWS Control Tower Lebenszyklusereignisse folgen unterschiedlichen Routingmustern. Wenn AFT als Ereignisquelle definiert ist, verarbeitet das AFT-Verwaltungskonto die Ereignisse und nicht das AWS Control Tower Konto. Diese ereignisgesteuerte Architektur ermöglicht automatisierte Reaktionen auf organisatorische Änderungen ohne manuelles Eingreifen.
AFT-Integrationsprozess
Wenn AWS Control Tower Lebenszyklusereignisse das AFT-Verwaltungskonto erreichen, lösen sie automatisch mehrere nachgelagerte Prozesse aus, die für AFT typisch sind. Nachdem der Workflow zur AFT-Kontoanpassung abgeschlossen ist, wird eine Nachricht zum speziellen Thema aft-notifications
Amazon Simple Notification Service (Amazon SNS) veröffentlicht. Dieses Thema löst die aft-new-account-forward-event
AWS Lambda Funktion aus, die durch diese Lösung implementiert wird. Die Lambda-Funktion sendet das Ereignis an den Eventbus des Lösungskontos, wo es zum Starten der Pipeline verwendet wird.
Infrastruktur als Code-Pipeline
Die Lösungspipeline funktioniert als vollautomatischer Bereitstellungsmechanismus. Der AWS CodePipeline Service überwacht das Repository kontinuierlich auf Änderungen. Sobald neue Commits erkannt werden, initiiert er automatisch den Bereitstellungs-Workflow und leitet einen sequentiellen Prozess ein, der Validierungs- und Ausführungsphasen umfasst. Das System führt plan
Terraform-Operationen aus, um vorgeschlagene Änderungen zu identifizieren, gefolgt von apply
Terraform-Befehlen, um diese Änderungen in der Umgebung zu implementieren. AWS Insbesondere läuft die Pipeline ohne manuelle Genehmigungen. Dieser Ansatz ermöglicht eine schnelle Implementierung von Infrastrukturänderungen bei gleichzeitiger Wahrung der Überprüfbarkeit anhand von Pipeline-Protokollen und Terraform-Statusdateien.
Die Pipeline nutzt die Möglichkeit AWS CodeBuild , Terraform-Operationen in einer kontrollierten Umgebung mit entsprechenden Berechtigungen auszuführen. Durch diesen IaC-Ansatz kann die Pipeline umfassende Berechtigungsverwaltungsvorgänge durchführen, darunter:
Neue Berechtigungssätze erstellen.
Aktualisieren Sie bestehende Berechtigungssätze.
Entfernen Sie unnötige Berechtigungssätze.
Verwalten Sie die Zuweisung dieser Berechtigungen für Konten und Gruppen innerhalb der AWS Organisationen.
Um die Konsistenz der Infrastruktur aufrechtzuerhalten und widersprüchliche Änderungen zu vermeiden, implementiert die Lösung das Terraform-Backend-Statusverwaltungssystem mithilfe eines Amazon S3 S3-Buckets und einer dedizierten Amazon DynamoDB-Tabelle. Dieser Ansatz bietet einen dauerhaften Speicherort für Terraform-Statusdateien und Zustandssperrmechanismen, um gleichzeitige Änderungen an denselben Ressourcen zu verhindern.
Der Terraform-Hauptcode verwendet das offizielle Terraform-Modul. AWS permission-sets
Dieses Modul kann Berechtigungssätze in IAM Identity Center dynamisch verwalten, basierend auf Vorlagen für Berechtigungssätze.
Verwaltung der Quellcodeverwaltung
Die Berechtigungssatz-Vorlagen (JSON-Dateien) befinden sich in einem externen Versionskontrollsystem GitHub, das beispielsweise ein zentrales Repository für Identitätsverwaltungskonfigurationen bereitstellt. Dieser Ansatz schafft eine zentrale Informationsquelle für Definitionen von Berechtigungssätzen und ermöglicht gleichzeitig die gemeinsame Entwicklung durch standardmäßige Verfahren zur Codeüberprüfung. Autorisierte Benutzer können im Anschluss an die organisatorischen Change-Management-Prozesse Änderungen an diesen Vorlagen vornehmen. Diese Commits dienen als primärer Auslöser für die automatisierte Bereitstellungspipeline und leiten den Aktualisierungsprozess der Infrastruktur ein.
Ein Beispiel für die Konfiguration der Berechtigungssätze mithilfe der JSON-Datei im Repository finden Sie unter Zusätzliche Informationen.
Tools
AWS-Services
AWS CodeBuildist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
AWS CodeConnectionsermöglicht AWS Ressourcen und Dienste, z. B. CodePipeline das Herstellen einer Verbindung zu externen Code-Repositorys, wie GitHub z.
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 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 Control Towerhilft Ihnen bei der Einrichtung und Verwaltung einer Umgebung AWS mit mehreren Konten und folgt dabei den vorgeschriebenen Best Practices.
Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
Amazon EventBridge ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
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.
AWS IAM Identity Centerhilft Ihnen dabei, den Single Sign-On (SSO) -Zugriff auf all Ihre Anwendungen AWS-Konten und Cloud-Anwendungen zentral zu verwalten.
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.
AWS Organizationsist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.
Amazon Simple Notification Service (Amazon SNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen. Es ermöglicht Push-Benachrichtigungen für Ereignisse in der Kontoverwaltung und stellt so sicher, dass die relevanten Parteien über wichtige Änderungen oder Aktionen innerhalb des Systems informiert werden.
Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
Andere Tools
Terraform
ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
Code-Repository
Der Code für dieses Muster ist in der AWS Samples-Organisation GitHub im Repository sample-terraform-aws-permission-sets-pipeline
Bewährte Methoden
Stecken Sie immer die Versionen der Terraform-Module und -Anbieter fest, die zur Ausführung von Code in der Produktion verwendet werden.
Verwenden Sie ein statisches Codeanalyse-Tool wie Checkov
, um Ihren Code zu scannen und dann die Sicherheitsprobleme zu lösen. Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter Gewährung der geringsten Rechte und bewährte Methoden zur Sicherheit.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie Terraform-Backend-Ressourcen. | Wenn Sie Ihre AWS Terraform-Backend-Ressourcen noch nicht erstellt haben, gehen Sie wie folgt vor, um einen Amazon S3 S3-Bucket (
| AWS-Administrator |
Erstellen Sie eine kontoübergreifende Rolle. | Sie müssen in der
In diesem Beispiel wird die AWS verwaltete IAM-Richtlinie verwendet. AdministratorAccess Wenn Sie möchten, können Sie eine spezifischere Richtlinie verwenden. | AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein spezielles Repository. | Bei dieser Aufgabe wird davon ausgegangen, dass Sie verwenden GitHub. Erstellen Sie ein spezielles Repository zum Speichern des Terraform-Hauptcodes und der JSON-Vorlagendateien für den Berechtigungssatz. | DevOps Ingenieur |
Bereiten Sie den Code für den Berechtigungssatz vor. | Informationen dazu, wie Sie die folgenden Dateien strukturieren können, finden Sie im Beispielcode √─ main.tf √─ gibt aus.tf √─ providers.jinja ── Vorlagen Kopieren Sie den Inhalt, behalten Sie die | DevOps Ingenieur |
Bestätigen Sie Ihre Änderungen. | Übernehmen Sie die Änderungen und übertragen Sie sie in das Repository, das Sie zuvor erstellt haben. Speichern Sie den Namen des Repositorys und seine GitHub Organisation, zum Beispiel | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Laden Sie den Inhalt herunter. | Laden Sie den Inhalt aus dem Lösungs-Repository herunter (klonen) Sie ihn | DevOps Ingenieur |
Erfülle die Variablen. | Erstellen Sie eine
Informationen zu zusätzlichen Variablenoptionen finden Sie in der Datei variables.tf | DevOps Ingenieur |
Passen Sie die Terraform-Backend-Konfiguration an. | Ersetzen Sie in der
Wenn Sie möchten, können Sie Ihre eigene Terraform-Backend-Konfiguration verwenden. | DevOps Ingenieur |
Passen Sie die Terraform-Anbieterkonfiguration an. | Ersetzen Sie in der
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Wählen Sie die AWS-Konto. | Wir empfehlen, die Lösung im delegierten Administratorkonto von IAM Identity Center bereitzustellen. Sie können sie jedoch auch im AWS Organizations Verwaltungskonto bereitstellen. Um sich bei dem ausgewählten Konto in derselben Region wie die IAM Identity Center-Instanz anzumelden, verwenden Sie den AWS CLI. Stellen Sie sicher, dass die von Ihnen verwendete IAM-Rolle berechtigt ist, die Rolle anzunehmen, die in den vorherigen Schritten für den | AWS-Administrator |
Führen Sie Terraform manuell aus. | Um die Konfigurationen zu initialisieren, zu planen und anzuwenden, führen Sie die folgenden Terraform-Befehle in der angegebenen Reihenfolge aus:
| DevOps Ingenieur |
Überprüfen Sie die Bereitstellungsergebnisse. | Überprüfen Sie im delegierten Administratorkonto von IAM Identity Center, ob die | AWS DevOps |
Beenden Sie die CodeConnections Konfiguration. | Gehen Sie wie folgt vor, um die CodeConnections Konfiguration abzuschließen:
Die Pipeline sollte jetzt Zugriff auf das Berechtigungssatz-Repository haben. Ausführliche Anweisungen finden Sie in der Dokumentation zur Developer Tools-Konsole unter Aktualisieren einer ausstehenden Verbindung. | AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie die Pipeline durch AWS Control Tower oder durch AFT-Updates aus. | Nachdem ein Konto mithilfe von oder AFT erstellt AWS Control Tower oder geändert wurde (abhängig von der Art der ausgewählten Lebenszyklusereignisse), wird die Pipeline gestartet. | AWS-Administrator |
Führen Sie die Pipeline aus, indem Sie den Code ändern. | Nachdem Sie den Code geändert und an den | AWS DevOps |
Führen Sie die Pipeline manuell aus. | Um die Pipeline manuell zu starten, verwenden Sie die Funktion zum Ändern der Version in AWS CodePipeline. | AWS DevOps |
Fehlerbehebung
Problem | Lösung |
---|---|
Zugriff verweigert | Stellen Sie sicher, dass Sie über die für die Bereitstellung der Lösung erforderlichen Berechtigungen verfügen. |
CodeConnections Probleme |
|
Probleme bei der Pipeline-Ausführung |
|
Probleme bei der Bereitstellung von Berechtigungssätzen |
|
Zugehörige Ressourcen
AWS-Service Dokumentation
AWS-Konten Mit Berechtigungssätzen verwalten (IAM Identity Center-Dokumentation)
Sonstige Ressourcen
AWS Modul „Berechtigungssätze
“ (Terraform)
Zusätzliche Informationen
JSON-Datei mit Beispiel-Berechtigungssatz
Das folgende Beispiel zeigt, wie ein Berechtigungssatz mithilfe der JSON-Datei im Repository konfiguriert wird:
{ "Name": "ps-billing", // Permission set identifier "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set "Description": "Billing access in AWS", // Detailed description "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format) "ManagedPolicies": [ // List of AWS IAM managed policies "arn:aws:iam::aws:policy/job-function/Billing", "arn:aws:iam::aws:policy/job-function/SupportUser", "arn:aws:iam::aws:policy/AWSSupportAccess", "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess" ], "CustomerPolicies": [], // References to IAM policies previously created "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set "PermissionBoundary": { // AWS or customer managed IAM policy to be used as boundary "ManagedPolicy": "", "CustomerPolicy": "" }, "Assignments": [ // Define the assignment rules { "all_accounts": true, // Apply to ALL active AWS accounts in organization "principal": "G_BILLING_USERS", // Group/user name in Identity Center "type": "GROUP", // Can be "GROUP" or "USER" "account_id": [], // List of AWS account ID (empty since all_accounts=true) "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags } ] }
Weitere Informationen finden Sie im JSON-Schema in der Dokumentation zum Modul AWS Permission Sets
Tipps
Sie können Terraform-Importblöcke
verwenden, um einen vorhandenen Berechtigungssatz in die Lösung zu importieren. Sie können AFT verwenden, um die AWS Berechtigungssatz-Pipeline in einem delegierten Konto zu implementieren. Weitere Informationen finden Sie unter AFT-Blueprints
.