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.
Steuern Sie Berechtigungssätze für mehrere Konten mithilfe von Account Factory for Terraform
Anand Krishna Varanasi und Siamak Heshmati, Amazon Web Services
Übersicht
Dieses Muster hilft Ihnen bei der Integration von AWS Control Tower Account Factory Terraform (AFT), um Berechtigungen für mehrere AWS-Konten Benutzer AWS IAM Identity Centerin großem Umfang zu konfigurieren. Bei diesem Ansatz werden benutzerdefinierte AWS Lambda Funktionen verwendet, um die Zuweisung von Berechtigungssätzen an Personen zu automatisieren AWS-Konten , die als Organisation verwaltet werden. Dadurch wird der Prozess rationalisiert, da kein manuelles Eingreifen Ihres Plattform-Engineering-Teams erforderlich ist. Diese Lösung kann die betriebliche Effizienz, Sicherheit und Konsistenz verbessern. Sie fördert einen sicheren und standardisierten Onboarding-Prozess für AWS Control Tower und ist daher unverzichtbar für Unternehmen, die Agilität und Zuverlässigkeit ihrer Cloud-Infrastruktur priorisieren.
Voraussetzungen und Einschränkungen
Voraussetzungen
AWS-Konten, verwaltet durch. AWS Control Tower Weitere Informationen finden Sie unter Erste Schritte mit AWS Control Tower.
Account Factory für Terraform, bereitgestellt in einem speziellen Konto in Ihrer Umgebung. Weitere Informationen finden Sie unter Deploy AWS Control Tower Account Factory for Terraform.
Eine IAM Identity Center-Instanz, die in Ihrer Umgebung eingerichtet ist. Weitere Informationen finden Sie unter Erste Schritte mit IAM Identity Center.
Eine aktive, konfigurierte IAM Identity Center-Gruppe. Weitere Informationen finden Sie unter Hinzufügen von Gruppen zu Ihrer IAM-Identity-Center-Verzeichnis.
Python Version 3.9 oder höher, installiert
Einschränkungen
Diese Lösung kann nur mit Konten verwendet werden, die über verwaltet werden AWS Control Tower. Diese Lösung wird mithilfe von Account Factory for Terraform bereitgestellt.
Dieses Muster enthält keine Anweisungen zum Einrichten eines Identitätsverbunds mit einer Identitätsquelle. Weitere Informationen zum Abschließen dieser Einrichtung finden Sie in den Tutorials zu IAM Identity Center-Identitätsquellen in der IAM Identity Center-Dokumentation.
Architektur
Überblick über AFT
AFT richtet eine Terraform-Pipeline ein, mit der Sie Ihre Konten bereitstellen und anpassen können. AWS Control Tower AFT folgt einem GitOps Modell, das die Prozesse der Kontobereitstellung in automatisiert. AWS Control Tower Sie erstellen eine Terraform-Datei mit Kontoanforderung und übertragen sie in das Repository. Dadurch wird der AFT-Workflow für die Kontobereitstellung initiiert. Nach Abschluss der Kontobereitstellung kann AFT automatisch weitere Anpassungsschritte ausführen. Weitere Informationen finden Sie in der AWS Control Tower Dokumentation unter AFT-Architektur.
AFT stellt die folgenden Hauptrepositorys bereit:
aft-account-request— Dieses Repository enthält Terraform-Code zum Erstellen oder Aktualisieren. AWS-Kontenaft-account-customizations— Dieses Repository enthält Terraform-Code zum Erstellen oder Anpassen von Ressourcen pro Konto.aft-global-customizations— Dieses Repository enthält Terraform-Code zum Erstellen oder Anpassen von Ressourcen für alle Konten in großem Umfang.aft-account-provisioning-customizations— Dieses Repository verwaltet Anpassungen, die nur auf bestimmte Konten angewendet werden, die von AFT erstellt und mit AFT verwaltet werden. Sie können dieses Repository beispielsweise verwenden, um Benutzer- oder Gruppenzuweisungen in IAM Identity Center anzupassen oder Kontoschließungen zu automatisieren.
Überblick über die Lösung
Diese maßgeschneiderte Lösung umfasst eine AWS Step Functions Zustandsmaschine und eine AWS Lambda Funktion, mit der Benutzern und Gruppen Berechtigungssätze für mehrere Konten zugewiesen werden. Die über dieses Muster bereitgestellte Zustandsmaschine arbeitet in Verbindung mit einer bereits vorhandenen aft_account_provisioning_customizations AFT-Zustandsmaschine. Ein Benutzer sendet entweder bei der Erstellung eines neuen AWS-Konto Kontos oder nach der Erstellung des Kontos eine Anfrage zur Aktualisierung der Benutzer- und Gruppenzuweisungen für IAM Identity Center. Sie tun dies, indem sie eine Änderung in das aft-account-request Repository übertragen. Die Anforderung, ein Konto zu erstellen oder zu aktualisieren, initiiert einen Stream in Amazon DynamoDB Streams. Dadurch wird die Lambda-Funktion gestartet, die IAM Identity Center-Benutzer und -Gruppen für das Ziel aktualisiert. AWS-Konten
Im Folgenden finden Sie ein Beispiel für die Parameter, die Sie in der Lambda-Funktion für die Zuweisung von Berechtigungssätzen an Zielbenutzer und -gruppen angeben können:
custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }
Die folgenden Parameter sind in dieser Anweisung enthalten:
InstanceArn— Der Amazon-Ressourcenname (ARN) der OrganisationPermissionSetArn— Der ARN des BerechtigungssatzesPrincipalId— Die ID eines Benutzers oder einer Gruppe in IAM Identity Center, auf den der Berechtigungssatz angewendet werden soll
Anmerkung
Sie müssen den Zielberechtigungssatz, die Benutzer und Gruppen erstellen, bevor Sie diese Lösung ausführen können.
Der InstanceArn Wert muss zwar konsistent bleiben, Sie können die Lambda-Funktion jedoch ändern, um mehreren Zielidentitäten mehrere Berechtigungssätze zuzuweisen. Die Parameter für Berechtigungssätze müssen auf endenPermissionSetArn, und die Parameter für Benutzer und Gruppen müssen auf enden. PrincipalId Sie müssen beide Attribute definieren. Im Folgenden finden Sie ein Beispiel dafür, wie Sie mehrere Berechtigungssätze definieren und Benutzer und Gruppen gezielt ansprechen können:
custom_fields = { "InstanceArn" = "<Organization ID>", "AdminAccessPermissionSetArn" = "<Admin privileges permission set ARN>", "AdminAccessPrincipalId" = "<Admin principal ID>", "ReadOnlyAccessPermissionSetArn" = "<Read-only privileges permission set ARN>", "ReadOnlyAccessPrincipalId" = "<Read-only principal ID>", }
Das folgende Diagramm zeigt einen step-by-step Workflow, der zeigt, wie die Lösung die Berechtigungssätze für Benutzer und Gruppen in der Zielumgebung in AWS-Konten großem Umfang aktualisiert. Wenn der Benutzer eine Anfrage zur Kontoerstellung initiiert, initiiert AFT die aft-account-provisioning-framework Step Functions-Zustandsmaschine. Diese Zustandsmaschine startet die extract-alternate-sso Lambda-Funktion. Die Lambda-Funktion weist Benutzern und Gruppen im Ziel Berechtigungssätze zu. AWS-Konten Diese Benutzer oder Gruppen können aus jeder konfigurierten Identitätsquelle in IAM Identity Center stammen. Beispiele für Identitätsquellen sind Okta, Active Directory oder Ping Identity.

Das Diagramm zeigt den folgenden Arbeitsablauf bei der Erstellung neuer Konten:
Ein Benutzer überträgt eine
custom_fieldsÄnderung an dasaft-account-requestRepository.AWS CodePipeline startet einen AWS CodeBuild Job, der die benutzerdefinierten Metadaten in der
aft-request-auditAmazon DynamoDB-Tabelle aufzeichnet. Diese Tabelle enthält Attribute zum Aufzeichnen benutzerdefinierter Metadaten. Dasddb_event_nameAttribut definiert die Art der AFT-Operation:Wenn der Wert lautet
INSERT, weist die Lösung den Zielidentitäten die bei der Erstellung der neuen AWS-Konto Identität festgelegten Berechtigungen zu.Wenn der Wert lautet
UPDATE, weist die Lösung den Zielidentitäten die festgelegten Berechtigungen zu, nachdem die erstellt wurde. AWS-Konto
Amazon DynamoDB Streams initiiert die
aft_alternate_sso_extractLambda-Funktion.Die
aft_alternate_sso_extractLambda-Funktion übernimmt eine AWS Identity and Access Management (IAM-) Rolle im AWS Control Tower Verwaltungskonto.Die Lambda-Funktion weist die Berechtigungssätze den Zielbenutzern und -gruppen zu, indem sie einen AWS SDK für Python (Boto3) create_account_assignment-API-Aufruf an das IAM Identity Center durchführt
. Es ruft den Berechtigungssatz und die Identitätszuweisungen aus der aft-request-auditAmazon DynamoDB-Tabelle ab.Wenn der Step Functions Functions-Workflow abgeschlossen ist, werden die Berechtigungssätze den Zielidentitäten zugewiesen.
Automatisierung und Skalierung
AFT arbeitet skalierbar und verwendet AWS-Services DynamoDB und Lambda, die hochgradig skalierbar sind. CodePipeline AWS CodeBuild Für zusätzliche Automatisierung können Sie diese Lösung in ein Ticket- oder Issue-Management-System wie Jira integrieren. Weitere Informationen finden Sie im Abschnitt Zusätzliche Informationen dieses Musters.
Tools
AWS-Services
Account Factory for Terraform (AFT) ist das Haupttool dieser Lösung. Das
aft-account-provisioning-customizationsRepository enthält den Terraform-Code für die Erstellung von Anpassungen AWS-Konten, z. B. für benutzerdefinierte IAM Identity Center-Benutzer- oder Gruppenzuweisungen.Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
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 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.
Andere Tools
Code-Repository
Das Code-Repository für AFT ist im GitHub AWS Control Tower Account Factory for Terraform-Repository
Bewährte Methoden
Machen Sie sich mit dem Modell der AWS gemeinsamen Verantwortung vertraut
. Folgen Sie den Sicherheitsempfehlungen für AWS Control Tower. Weitere Informationen finden Sie unter Sicherheit in AWS Control Tower.
Folgen Sie dem Prinzip der geringsten Rechte. Weitere Informationen finden Sie unter Anwendung von geringsten Berechtigungen.
Erstellen Sie spezifische und zielgerichtete Berechtigungssätze und IAM-Rollen für Gruppen und Geschäftsbereiche.
Epen
| Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
|---|---|---|
Erstellen Sie eine IAM-Rolle. | Verwenden Sie im AWS Control Tower Verwaltungskonto Terraform, um eine IAM-Rolle zu erstellen. Diese Rolle verfügt über kontoübergreifenden Zugriff und eine Vertrauensrichtlinie, die den Verbundzugriff durch den Identitätsanbieter ermöglicht. Sie verfügt auch über Berechtigungen, um anderen Konten Zugriff zu gewähren. AWS Control Tower Die Lambda-Funktion wird diese Rolle übernehmen. Gehen Sie wie folgt vor:
| AWS DevOps, Cloud-Architekt |
Passen Sie die Lösung an Ihre Umgebung an. |
| AWS DevOps, Cloud-Architekt |
Stellen Sie die Lösung bereit. |
| AWS DevOps, Cloud-Architekt |
Richten Sie eine Code-Repository-Verbindung ein. | Richten Sie eine Verbindung zwischen dem Code-Repository, in dem Sie die Konfigurationsdateien speichern werden, und Ihrem ein AWS-Konto. Anweisungen finden Sie in der AWS CodePipeline Dokumentation unter Hinzufügen von Drittanbietern zu Pipelines mithilfe CodeConnections. | AWS DevOps, Cloud-Architekt |
| Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
|---|---|---|
Starten Sie die AFT-Pipeline, um ein neues Konto bereitzustellen. | Folgen Sie den Anweisungen unter Bereitstellen eines neuen Kontos bei AFT, um die Pipeline zu starten, die ein neues Konto AWS-Konto in Ihrer AWS Control Tower Umgebung erstellt. Warten Sie, bis der Vorgang zur Kontoerstellung abgeschlossen ist. | AWS DevOps, Cloud-Architekt |
Bestätigen Sie die Änderungen. |
| AWS DevOps, Cloud-Architekt |
Fehlerbehebung
| Problem | Lösung |
|---|---|
Die Zuweisung von Berechtigungssätzen funktioniert nicht. | Stellen Sie sicher, dass die Parameter Gruppen-ARN, Organisations-ID und Lambda korrekt sind. Beispiele finden Sie im Abschnitt Lösungsübersicht dieses Musters. |
Durch das Aktualisieren von Code im Repository wird die Pipeline nicht gestartet. | Dieses Problem hängt mit der Konnektivität zwischen Ihnen AWS-Konto und dem Repository zusammen. Überprüfen Sie in der AWS Management Console, ob die Verbindung aktiv ist. Weitere Informationen finden Sie in der AWS CodePipeline Dokumentation unter GitHub Verbindungen. |
Zusätzliche Informationen
Integration mit einem Ticketverwaltungstool
Sie können wählen, ob Sie diese Lösung in ein Ticket- oder Issue-Management-Tool wie Jira oder ServiceNow integrieren möchten. Das folgende Diagramm zeigt einen Beispiel-Workflow für diese Option. Sie können das Ticketverwaltungstool mithilfe der Konnektoren Ihres Tools in die Repositorys der AFT-Lösung integrieren. Informationen zu Jira-Konnektoren finden Sie unter Jira integrierenaft-account-request GitHub Repository hinzufügt. Sie können jeden benutzerdefinierten Workflow entwerfen, der die Anforderungen Ihres Anwendungsfalls erfüllt.

Das Diagramm zeigt den folgenden Workflow:
Benutzer fordern in einem Ticketverwaltungstool wie Jira eine benutzerdefinierte Zuweisung von Berechtigungssätzen an.
Nachdem der Fall genehmigt wurde, beginnt ein Workflow mit der Aktualisierung der Zuweisung des Berechtigungssatzes. (Optional) Sie können Plugins für die benutzerdefinierte Automatisierung dieses Schritts verwenden.
Operatoren senden den Terraform-Code mit den aktualisierten Berechtigungssatzparametern an das
aft-account-requestRepository in einen Entwicklungs- oder Feature-Branch.GitHub Aktionen werden AWS CodeBuild mithilfe eines OpenID Connect (OIDC) -Aufrufs initiiert. CodeBuild führt mithilfe von Tools wie tfsec und checkov Sicherheitsscans (Infrastructure as Code, IaC) durch.
Es warnt die Betreiber vor Sicherheitsverstößen. Wenn keine Verstöße festgestellt werden, erstellt GitHub Actions eine automatisierte Pull-Anfrage und weist den Code-Besitzern eine Code-Überprüfung zu. Außerdem wird ein Tag für den Pull-Request erstellt.
Wenn der Codeinhaber die Codeüberprüfung genehmigt, wird ein weiterer GitHub Aktions-Workflow gestartet. Er überprüft Pull-Request-Standards, darunter:
Wenn der Titel der Pull-Anfrage die Anforderungen erfüllt.
Wenn der Text der Pull-Anfrage genehmigte Fallnummern enthält.
Wenn der Pull-Request ordnungsgemäß markiert ist.
Wenn die Pull-Requests den Standards entsprechen, startet GitHub Actions den AFT-Produkt-Workflow. Es verwendet die
ct-aft-account-requestPipeline in AWS CodePipeline. Diese Pipeline startet dieaft-account-provisioning-frameworkbenutzerdefinierte Zustandsmaschine in Step Functions. Diese Zustandsmaschine funktioniert wie zuvor im Abschnitt Lösungsübersicht dieses Musters beschrieben.