Steuern Sie Berechtigungssätze für mehrere Konten mithilfe von Account Factory for Terraform - 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.

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

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-Konten

  • aft-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 Organisation

  • PermissionSetArn— Der ARN des Berechtigungssatzes

  • PrincipalId— 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.

Ablauf der Aktualisierung von Berechtigungssätzen, wenn ein Konto erstellt oder aktualisiert wird.

Das Diagramm zeigt den folgenden Arbeitsablauf bei der Erstellung neuer Konten:

  1. Ein Benutzer überträgt eine custom_fields Änderung an das aft-account-request Repository.

  2. AWS CodePipeline startet einen AWS CodeBuild Job, der die benutzerdefinierten Metadaten in der aft-request-audit Amazon DynamoDB-Tabelle aufzeichnet. Diese Tabelle enthält Attribute zum Aufzeichnen benutzerdefinierter Metadaten. Das ddb_event_name Attribut definiert die Art der AFT-Operation:

    • Wenn der Wert lautetINSERT, weist die Lösung den Zielidentitäten die bei der Erstellung der neuen AWS-Konto Identität festgelegten Berechtigungen zu.

    • Wenn der Wert lautetUPDATE, weist die Lösung den Zielidentitäten die festgelegten Berechtigungen zu, nachdem die erstellt wurde. AWS-Konto

  3. Amazon DynamoDB Streams initiiert die aft_alternate_sso_extract Lambda-Funktion.

  4. Die aft_alternate_sso_extract Lambda-Funktion übernimmt eine AWS Identity and Access Management (IAM-) Rolle im AWS Control Tower Verwaltungskonto.

  5. 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-audit Amazon DynamoDB-Tabelle ab.

  6. 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-customizations Repository 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

  • Python ist eine Allzweck-Computerprogrammiersprache.

  • Terraform ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

Code-Repository

Das Code-Repository für AFT ist im GitHub AWS Control Tower Account Factory for Terraform-Repository verfügbar. Der Code für dieses Muster ist im Repository Govern SSO Assignments for AWS-Konten Using Account Factory for Terraform (AFT) verfügbar.

Bewährte Methoden

Epen

AufgabeBeschreibungErforderliche 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:

  1. Laden Sie die AFTCrossAccountRole.tf Datei aus dem GitHub Code-Repository herunter.

  2. Ändern Sie die AFTCrossAccountRole.tf Datei nach Bedarf für Ihre AWS Umgebung.

  3. Geben Sie in Terraform die folgenden Befehle ein, um diese IAM-Rolle zu erstellen:

    terraform init terraform plan terraform apply
  4. Stellen Sie sicher, dass die Rolle erfolgreich bereitgestellt wurde und über den erwarteten kontoübergreifenden Zugriff verfügt.

AWS DevOps, Cloud-Architekt

Passen Sie die Lösung an Ihre Umgebung an.

  1. Geben Sie den folgenden Befehl ein, um das Repository Govern SSO Assignments for AWS-Konten Using Account Factory for Terraform (AFT) auf Ihre lokale Workstation zu klonen.

    git clone https://github.com/aws-samples/aft-custom-sso-assignment.git
  2. Öffnen Sie die aft-account-provisioning-customizations/terraform Datei in dem variables.tf Ordner.

  3. Ändern Sie die Variablen nach Bedarf für Ihre Umgebung.

  4. Speichern und schließen Sie die Datei variables.tf.

  5. Öffnen Sie die account-request.tf Datei in Ihrem aft-account-request Repository.

  6. Ändern Sie die custom_fields Parameter, um die Berechtigungssätze und die Zielbenutzer und -gruppen zu definieren. Weitere Informationen finden Sie im Abschnitt Architektur dieses Musters.

  7. Speichern und schließen Sie die Datei account-request.tf.

AWS DevOps, Cloud-Architekt

Stellen Sie die Lösung bereit.

  1. Kopieren Sie im geklonten Repository den Inhalt des terraform Ordners und fügen Sie ihn dann in den terraform Ordner im aft-account-provisioning-customizations Repository ein.

  2. Starten Sie die ct-aft-account-provisioning-customizations Pipeline im AFT-Verwaltungskonto. Dadurch wird die benutzerdefinierte Lösung bereitgestellt. Anweisungen finden Sie unter Eine Pipeline starten in CodePipeline.

  3. Stellen Sie sicher, dass die Ressourcen erfolgreich im AFT-Verwaltungskonto bereitgestellt wurden.

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

  1. Öffnen Sie die AWS IAM Identity Center -Konsole.

  2. Wählen Sie in der Liste der Konten das neu erstellte Konto aus.

  3. Stellen Sie sicher, dass Berechtigungssätze zugewiesen wurden, um den Zielbenutzern und -gruppen Zugriff zu gewähren.

AWS DevOps, Cloud-Architekt

Fehlerbehebung

ProblemLö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 integrieren mit. GitHub Informationen zu ServiceNow Konnektoren finden Sie unter Integrieren mit. GitHub Sie können sogar benutzerdefinierte Lösungen erstellen, bei denen Benutzer im Rahmen der Genehmigung von Pull-Requests eine Ticket-ID angeben müssen. Wenn eine Anfrage zur Erstellung eines neuen Objekts mithilfe AWS-Konto von AFT genehmigt wird, könnte dieses Ereignis einen Workflow einleiten, der benutzerdefinierte Felder zum aft-account-request GitHub Repository hinzufügt. Sie können jeden benutzerdefinierten Workflow entwerfen, der die Anforderungen Ihres Anwendungsfalls erfüllt.

Workflow, der GitHub Aktionen und ein Ticketverwaltungstool verwendet.

Das Diagramm zeigt den folgenden Workflow:

  1. Benutzer fordern in einem Ticketverwaltungstool wie Jira eine benutzerdefinierte Zuweisung von Berechtigungssätzen an.

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

  3. Operatoren senden den Terraform-Code mit den aktualisierten Berechtigungssatzparametern an das aft-account-request Repository in einen Entwicklungs- oder Feature-Branch.

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

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

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

  7. Wenn die Pull-Requests den Standards entsprechen, startet GitHub Actions den AFT-Produkt-Workflow. Es verwendet die ct-aft-account-request Pipeline in AWS CodePipeline. Diese Pipeline startet die aft-account-provisioning-framework benutzerdefinierte Zustandsmaschine in Step Functions. Diese Zustandsmaschine funktioniert wie zuvor im Abschnitt Lösungsübersicht dieses Musters beschrieben.