AWS IAM Identity Center-Berechtigungssätze mithilfe von AWS als Code verwalten CodePipeline - 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.

AWS IAM Identity Center-Berechtigungssätze mithilfe von AWS als Code verwalten CodePipeline

Erstellt von Andre Cavalcante (AWS) und Claison Amorim (AWS)

Quellcode-Repository: -pipeline aws-iam-identity-center

Umgebung: Produktion

Technologien: Sicherheit, Identität, Einhaltung von Vorschriften; DevOps

AWS-Dienste: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AWS IAM-Identitätszentrum

Übersicht

Mit AWS IAM Identity Center (Nachfolger von AWS Single Sign-On) können Sie den Single Sign-On (SSO) -Zugriff auf all Ihre AWS-Konten und -Anwendungen zentral verwalten. Sie können Benutzeridentitäten in IAM Identity Center erstellen und verwalten, oder Sie können eine Verbindung zu einer vorhandenen Identitätsquelle herstellen, z. B. einer Microsoft Active Directory-Domäne oder einem externen Identitätsanbieter (IdP). IAM Identity Center bietet eine einheitliche Administrationserfahrung, mit der Sie mithilfe von Berechtigungssätzen einen detaillierten Zugriff auf Ihre AWS-Umgebung definieren, anpassen und zuweisen können. Berechtigungssätze gelten für die verbundenen Benutzer und Gruppen aus Ihrem AWS IAM Identity Center-Identitätsspeicher oder Ihrem externen IdP.

Dieses Muster hilft Ihnen, IAM Identity Center-Berechtigungssätze als Code in Ihrer Umgebung mit mehreren Konten zu verwalten, die als Organisation in AWS Organizations verwaltet wird. Mit diesem Muster können Sie Folgendes erreichen:

  • Berechtigungssätze erstellen, löschen und aktualisieren

  • Erstellen, aktualisieren oder löschen Sie Berechtigungssatz-Zuweisungen für AWS-Zielkonten, Organisationseinheiten (OUs) oder Ihren Organisationsstamm.

Um IAM Identity Center-Berechtigungen und -Zuweisungen als Code zu verwalten, stellt diese Lösung eine CI/CD-Pipeline (Continuous Integration and Continuous Delivery) bereit, die AWS CodeCommit, AWS und AWS verwendet. CodeBuild CodePipeline Sie verwalten die Berechtigungssätze und Zuweisungen in JSON-Vorlagen, die Sie im Repository speichern. CodeCommit Wenn EventBridge Amazon-Regeln eine Änderung am Repository oder Änderungen an den Konten in der Ziel-OU erkennen, wird eine AWS Lambda Lambda-Funktion gestartet. Die Lambda-Funktion initiiert die CI/CD-Pipeline, die die Berechtigungssätze und Zuweisungen in IAM Identity Center aktualisiert.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Eine Umgebung mit mehreren Konten, die als Organisation in AWS Organizations verwaltet wird. Weitere Informationen finden Sie unter Organisation erstellen.

  • IAM Identity Center, aktiviert und konfiguriert mit einer Identitätsquelle. Weitere Informationen finden Sie unter Erste Schritte in der IAM Identity Center-Dokumentation.

  • Ein Mitgliedskonto, das als delegierter Administrator für IAM Identity Center registriert ist. Anweisungen finden Sie in der IAM Identity Center-Dokumentation unter Ein Mitgliedskonto registrieren.

  • Berechtigungen zur Bereitstellung von CloudFormation AWS-Stacks im delegierten IAM Identity Center-Administratorkonto und im Verwaltungskonto der Organisation. Weitere Informationen finden Sie in der Dokumentation unter Zugriffskontrolle. CloudFormation

  • Ein Amazon Simple Storage Service (Amazon S3) -Bucket im Identity Center hat den Administrator beauftragt, den Artefaktcode hochzuladen. Anweisungen finden Sie unter Bucket erstellen.

  • Die Konto-ID des Verwaltungskontos der Organisation. Anweisungen finden Sie unter Finden Ihrer AWS-Konto-ID.

Einschränkungen

  • Dieses Muster kann nicht verwendet werden, um Berechtigungssätze für Umgebungen mit einem Konto oder für Konten, die nicht als Organisation in AWS Organizations verwaltet werden, zu verwalten oder zuzuweisen.

  • Namen von Berechtigungssätzen, Zuweisungs-IDs und IAM Identity Center-Prinzipaltypen und -IDs können nach der Bereitstellung nicht geändert werden.

  • Dieses Muster hilft Ihnen bei der Erstellung und Verwaltung benutzerdefinierter Berechtigungen. Sie können dieses Muster nicht verwenden, um vordefinierte Berechtigungen zu verwalten oder zuzuweisen.

  • Dieses Muster kann nicht verwendet werden, um einen Berechtigungssatz für das Verwaltungskonto der Organisation zu verwalten.

Architektur

Technologie-Stack

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWS Identity Center

  • AWS Lambda

  • AWS Organizations

Zielarchitektur

Verwendung der CI/CD-Pipeline und des CodeCommit AWS-Repos zur Verwaltung von Berechtigungssätzen im AWS IAM Identity Center.

Das Diagramm zeigt den folgenden Workflow:

  1. Ein Benutzer nimmt eine der folgenden Änderungen vor:

    1. Übergibt eine oder mehrere Änderungen am Repository CodeCommit

    2. Ändert die Konten in der Organisationseinheit (OU) in AWS Organizations

  2. Wenn der Benutzer eine Änderung am CodeCommit Repository festgeschrieben hat, erkennt die CodeChange EventBridge Regel die Änderung und startet eine Lambda-Funktion im delegierten Administratorkonto von IAM Identity Center. Die Regel reagiert nicht auf Änderungen an bestimmten Dateien im Repository, z. B. an der Datei. README.md

    Wenn der Benutzer die Konten in der Organisationseinheit geändert hat, erkennt die MoveAccount EventBridge Regel die Änderung und startet eine Lambda-Funktion im Verwaltungskonto der Organisation.

  3. Die initiierte Lambda-Funktion startet die CI/CD-Pipeline in. CodePipeline

  4. CodePipeline startet das Projekt. CodebuildTemplateValidation CodeBuild

  5. Das CodebuildTemplateValidation CodeBuild Projekt verwendet ein Python-Skript im CodeCommit Repository, um die Berechtigungssatz-Vorlagen zu validieren. CodeBuild validiert Folgendes:

    • Die Namen der Berechtigungssätze sind eindeutig.

    • Die IDs (Sid) der Zuweisungsanweisung sind eindeutig.

    • Richtliniendefinitionen sind im CustomPolicy Parameter enthalten und gültig. (Diese Validierung verwendet AWS Identity and Access Management Access Analyzer.)

    • Die Amazon-Ressourcennamen (ARNs) der verwalteten Richtlinien sind gültig.

  6. Das CodebuildPermissionSet CodeBuild Projekt verwendet das AWS SDK for Python (Boto3), um die Berechtigungssätze in IAM Identity Center zu löschen, zu erstellen oder zu aktualisieren. Nur Berechtigungssätze mit dem SSOPipeline:true Tag sind betroffen. Alle Berechtigungssätze, die über diese Pipeline verwaltet werden, haben dieses Tag.

  7. Das CodebuildAssignments CodeBuild Projekt verwendet Terraform, um die Zuweisungen im IAM Identity Center zu löschen, zu erstellen oder zu aktualisieren. Die Terraform-Backend-Statusdateien werden in einem S3-Bucket im selben Konto gespeichert.

  8. CodeBuild nimmt eine lookup IAM-Rolle im Verwaltungskonto der Organisation an. Es ruft die Organisations- und Identitystore-APIs auf, um die Ressourcen aufzulisten, die für die Erteilung oder den Widerruf von Berechtigungen erforderlich sind.

  9. CodeBuild aktualisiert die Berechtigungssätze und Zuweisungen in IAM Identity Center.

Automatisierung und Skalierung

Da alle neuen Konten in einer Umgebung mit mehreren Konten in eine bestimmte Organisationseinheit in AWS Organizations verschoben werden, wird diese Lösung automatisch ausgeführt und gewährt allen Konten, die Sie in den Zuweisungsvorlagen angeben, die erforderlichen Berechtigungssätze. Es sind keine zusätzlichen Automatisierungen oder Skalierungsmaßnahmen erforderlich.

In großen Umgebungen kann die Anzahl der API-Anfragen an IAM Identity Center dazu führen, dass diese Lösung langsamer ausgeführt wird. Terraform und Boto3 verwalten die Drosselung automatisch, um Leistungseinbußen zu minimieren.

Tools

AWS-Services

  • AWS CloudFormation hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.

  • AWS CodeBuild ist 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 CodeCommit ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.

  • AWS CodePipeline hilft 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.

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

  • Mit AWS IAM Identity Center können Sie den Single Sign-On (SSO) -Zugriff auf all Ihre AWS-Konten und Cloud-Anwendungen zentral verwalten.

  • AWS Organizations ist ein Kontoverwaltungsservice, mit dem Sie mehrere AWS-Konten in einer Organisation konsolidieren können, die Sie erstellen und zentral verwalten.

  • Das AWS-SDK für Python (Boto3) ist ein Software-Entwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript in AWS-Services integrieren können.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

Code-Repository

Der Code für dieses Muster ist im Repository aws-iam-identity-center-pipeline verfügbar. Der Vorlagenordner im Repository enthält Beispielvorlagen für Berechtigungssätze und Zuweisungen. Es enthält auch CloudFormation AWS-Vorlagen für die Bereitstellung der CI/CD-Pipeline und AWS-Ressourcen in den Zielkonten.

Bewährte Methoden

  • Bevor Sie mit der Änderung des Berechtigungssatzes und der Zuweisungsvorlagen beginnen, empfehlen wir Ihnen, Berechtigungssätze für Ihre Organisation zu planen. Überlegen Sie, wie die Berechtigungen aussehen sollen, für welche Konten oder Organisationseinheiten der Berechtigungssatz gelten soll und für welche IAM Identity Center-Prinzipale (Benutzer oder Gruppen) der Berechtigungssatz gelten soll. Namen von Berechtigungssätzen, Zuordnungs-IDs und IAM Identity Center-Prinzipaltypen und -IDs können nach der Bereitstellung nicht geändert werden.

  • Halten Sie sich an das Prinzip der geringsten Rechte und gewähren Sie nur 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

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Repository

Geben Sie in einer Bash-Shell den folgenden Befehl ein. Dadurch wird das aws-iam-identity-center-pipeline Repository von geklont. GitHub

git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git
DevOps Ingenieur

Definieren Sie die Berechtigungssätze.

  1. Navigieren Sie im geklonten Repository zu dem templates/permissionsets Ordner und öffnen Sie dann eine der verfügbaren Vorlagen.

  2. Geben Sie im Name Parameter einen Namen für den Berechtigungssatz ein. Dieser Wert muss eindeutig sein und kann nach der Bereitstellung nicht geändert werden.

  3. Beschreiben Sie im Description Parameter kurz den Berechtigungssatz, z. B. seinen Anwendungsfall.

  4. Geben Sie im SessionDuration Parameter an, wie lange ein Benutzer bei einem AWS-Konto angemeldet sein kann. Verwenden Sie das ISO-8601-Dauerformat (Wikipedia), z. B. PT4H für 4 Stunden. Wenn kein Wert definiert ist, ist der Standardwert in IAM Identity Center 1 Stunde.

  5. Passen Sie die Richtlinien im Berechtigungssatz an. Alle folgenden Parameter sind optional und können nach der Bereitstellung geändert werden. Sie müssen mindestens einen der Parameter verwenden, um die Richtlinien im Berechtigungssatz zu definieren:

    • Geben Sie im ManagedPolicies Parameter die ARNs aller von AWS verwalteten Richtlinien ein, die Sie zuweisen möchten.

    • Geben Sie im CustomerManagedPolicies Parameter die Namen aller vom Kunden verwalteten Richtlinien ein, die Sie zuweisen möchten. Verwenden Sie den ARN nicht.

    • Gehen Sie im PermissionBoundary Parameter wie folgt vor, um eine Berechtigungsgrenze zuzuweisen:

      • Wenn Sie eine von AWS verwaltete Richtlinie als Berechtigungsgrenze verwendenPolicyType, geben Sie inAWS, und inPolicy, den ARN der Richtlinie ein.

      • Wenn Sie eine vom Kunden verwaltete Richtlinie als Berechtigungsgrenze verwendenPolicyType, geben Sie inCustomer, und inPolicy, den Namen der Richtlinie ein. Verwenden Sie den ARN nicht.

    • Definieren Sie im CustomPolicy Parameter alle benutzerdefinierten Richtlinien im JSON-Format, die Sie zuweisen möchten. Weitere Informationen zur JSON-Richtlinienstruktur finden Sie unter Überblick über JSON-Richtlinien.

  6. Speichern und schließen Sie die Vorlage für den Berechtigungssatz. Es wird empfohlen, die Datei unter einem Namen zu speichern, der dem Namen des Berechtigungssatzes entspricht.

  7. Wiederholen Sie diesen Vorgang, um so viele Berechtigungssätze zu erstellen, wie für Ihre Organisation erforderlich sind, und löschen Sie alle Beispielvorlagen, die nicht benötigt werden.

DevOps Ingenieur

Definieren Sie die Aufgaben.

  1. Navigieren Sie im geklonten Repository zu dem templates/assignments Ordner, und öffnen iam-identitycenter-assigments.json Sie ihn. In dieser Datei wird beschrieben, wie Sie die Berechtigungssätze AWS-Konten oder Organisationseinheiten zuweisen möchten.

  2. Geben Sie im SID Parameter eine Kennung für die Zuweisung ein. Dieser Wert muss eindeutig sein und kann nach der Bereitstellung nicht geändert werden.

  3. Definieren Sie im Target Parameter die Konten oder Organisationen, auf die Sie den Berechtigungssatz anwenden möchten. Gültige Werte sind Konto-IDs, OU-IDs, OU-Namen oderroot. rootweist den Berechtigungssatz allen Mitgliedskonten in der Organisation zu, mit Ausnahme des Verwaltungskontos. Geben Sie die Werte in doppelte Anführungszeichen ein und trennen Sie mehrere Werte durch Kommas. Anweisungen zum Auffinden von IDs finden Sie unter Kontodetails anzeigen oder Details einer Organisationseinheit anzeigen.

  4. Geben Sie im PrincipalType Parameter den Typ des IAM Identity Center-Prinzipals ein, auf den sich der Berechtigungssatz auswirkt. Gültige Werte sind USER oder GROUP. Dieser Wert kann nach der Bereitstellung nicht geändert werden.

  5. Geben Sie im PrincipalID Parameter den Namen des Benutzers oder der Gruppe im IAM Identity Center-Identitätsspeicher ein, für den der Berechtigungssatz gelten soll. Dieser Wert kann nach der Bereitstellung nicht geändert werden.

  6. Geben Sie im PermissionSetName Parameter den Namen des Berechtigungssatzes ein, den Sie zuweisen möchten.

  7. Wiederholen Sie die Schritte 2—6, um in dieser Datei so viele Aufgaben wie nötig zu erstellen. In der Regel gibt es für jeden Berechtigungssatz eine Zuweisung. Löschen Sie alle Beispielzuweisungen, die nicht erforderlich sind.

  8. Speichern und schließen Sie die Datei iam-identitycenter-assigments.json.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Laden Sie die Dateien in einen S3-Bucket hoch.

  1. Komprimieren Sie das geklonte Repository in eine ZIP-Datei.

  2. Melden Sie sich mit dem delegierten IAM Identity Center-Administratorkonto an.

  3. Öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/.

  4. Wählen Sie im linken Navigationsbereich Buckets aus.

  5. Wählen Sie den Bucket aus, den Sie für die Bereitstellung dieser Lösung verwenden möchten.

  6. Laden Sie die ZIP-Datei in den Ziel-S3-Bucket hoch. Eine Anleitung finden Sie unter Hochladen von Objekten.

DevOps Ingenieur

Stellen Sie Ressourcen im delegierten Administratorkonto von IAM Identity Center bereit.

  1. Öffnen Sie im delegierten IAM Identity Center-Administratorkonto die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

  2. Stellen Sie die Vorlage bereit. iam-identitycenter-pipeline.yaml Geben Sie dem Stack einen klaren und aussagekräftigen Namen und aktualisieren Sie die Parameter gemäß den Anweisungen. Anweisungen finden Sie in der Dokumentation unter Einen Stack erstellen. CloudFormation

DevOps Ingenieur

Stellen Sie Ressourcen im AWS-Organisationsverwaltungskonto bereit.

  1. Melden Sie sich beim Verwaltungskonto der Organisation an.

  2. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

  3. Wählen Sie in der Navigationsleiste den Namen der aktuell angezeigten AWS-Region aus. Wählen Sie dann die us-east-1 Region aus. Diese Region ist erforderlich, damit die MoveAccount EventBridge Regel CloudTrail AWS-Ereignisse im Zusammenhang mit Organisationsänderungen erkennen kann.

  4. Stellen Sie die iam-identitycenter-organization Vorlage bereit. Geben Sie dem Stack einen klaren und aussagekräftigen Namen und aktualisieren Sie die Parameter gemäß den Anweisungen. Anweisungen finden Sie in der Dokumentation unter Einen Stack erstellen. CloudFormation

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Aktualisieren Sie die Berechtigungssätze und Zuweisungen.

Wenn die MoveAccount EventBridge Amazon-Regel Änderungen an den Konten in der Organisation feststellt, startet die CI/CD-Pipeline automatisch und aktualisiert die Berechtigungssätze. Wenn Sie beispielsweise ein Konto zu einer in der JSON-Datei für Zuweisungen angegebenen Organisationseinheit hinzufügen, wendet die CI/CD-Pipeline den Berechtigungssatz auf das neue Konto an.

Wenn Sie die bereitgestellten Berechtigungssätze und Zuweisungen ändern möchten, aktualisieren Sie die JSON-Dateien und übertragen Sie sie dann in das CodeCommit Repository im delegierten Administratorkonto von IAM Identity Center. Anweisungen finden Sie in der Dokumentation unter Einen Commit erstellen. CodeCommit

Beachten Sie Folgendes, wenn Sie die CI/CD-Pipeline verwenden, um zuvor bereitgestellte Berechtigungssätze und Zuordnungen zu verwalten:

  • Wenn Sie den Namen eines Berechtigungssatzes ändern, löscht die CI/CD-Pipeline den ursprünglichen Berechtigungssatz und erstellt einen neuen.

  • Diese Pipeline verwaltet nur Berechtigungssätze, die das Tag enthalten. SSOPipeline:true

  • Sie können mehrere Berechtigungssätze und Vorlagen für Zuweisungen in demselben Ordner im Repository haben.

  • Wenn Sie eine Vorlage löschen, löscht die Pipeline die Zuweisung oder den Berechtigungssatz.

  • Wenn Sie einen gesamten JSON-Block für eine Zuweisung löschen, löscht die Pipeline die Zuweisung aus dem IAM Identity Center.

  • Sie können keinen Berechtigungssatz löschen, der einem AWS-Konto zugewiesen ist. Zunächst müssen Sie die Zuweisung des Berechtigungssatzes aufheben.

DevOps Ingenieur

Fehlerbehebung

ProblemLösung

Fehler aufgrund einer Zugriffsverweigerung

Vergewissern Sie sich, dass Sie über die erforderlichen Berechtigungen verfügen, um die CloudFormation Vorlagen und die darin definierten Ressourcen bereitzustellen. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter Zugriffskontrolle.

Pipeline-Fehler in der Validierungsphase

Dieser Fehler tritt auf, wenn der Berechtigungssatz oder die Zuweisungsvorlagen Fehler enthalten.

  1. Sehen Sie CodeBuild sich unter die Build-Details an.

  2. Suchen Sie im Build-Log nach dem Validierungsfehler, der weitere Informationen darüber enthält, was zum Fehlschlagen des Builds geführt hat.

  3. Aktualisieren Sie den Berechtigungssatz oder die Zuweisungsvorlagen, und übertragen Sie sie anschließend in das Repository.

  4. Die CI/CD-Pipeline startet das Projekt neu. CodeBuild Überwachen Sie den Status, um sicherzustellen, dass der Validierungsfehler behoben wurde.

Zugehörige Ressourcen