IAM-Tutorial: Verwenden einer Vorlage von CloudFormation zum Erstellen eines SAML-Identitätsanbieters (IDP) und einer mit SAML verbundenen IAM-Rolle
Um sich mit dem SAML-Verbund und seinen Funktionen vertraut zu machen, verwenden Sie eine Vorlage von CloudFormation, um einen SAML-Identitätsanbieter (IDP) und die zugehörige verbundene IAM-Rolle einzurichten. In diesem Tutorial erfahren Sie, wie Sie beide Ressourcen zusammen in einem einzigen Stack erstellen.
Die Vorlage erstellt einen SAML-IDP, der für den Verbundzugriff auf AWS-Ressourcen verwendet werden kann, zusammen mit einer IAM-Rolle, die dem SAML-Anbieter vertraut. Benutzer, die von Ihrem externen IDP authentifiziert wurden, können diese Rolle übernehmen, um auf AWS-Ressourcen zuzugreifen.
Die bereitgestellten Ressourcen enthalten Folgendes:
-
Einen SAML-IDP, der mit dem Metadatendokument Ihres IDP konfiguriert wurde.
-
Eine verbundene IAM-Rolle, die dem SAML-IDP vertraut und von authentifizierten Benutzern übernommen werden kann.
-
Konfigurierbare verwaltete Richtlinien, die der Rolle zugeordnet werden können, um bestimmte Berechtigungen zu gewähren.
Voraussetzungen
In diesem Tutorial wird davon ausgegangen, dass Folgendes bereits vorhanden ist:
-
Python 3.6 oder höher ist auf Ihrem lokalen Computer installiert, um den Python-Befehl auszuführen, der in diesem Tutorial zum Formatieren der XML-Datei für die SAML-Metadaten Ihres IDP verwendet wird.
-
Ein SAML-Metadatendokument von Ihrem externen IDP, das als XML-Datei gespeichert wurde.
Erstellen eines SAML-IDP und einer Rolle mithilfe von CloudFormation
Um den SAML-IDP und die verbundene Rolle zu erstellen, erstellen Sie eine CloudFormation-Vorlage und verwenden diese, um einen Stack mit beiden Ressourcen zu erstellen.
Erstellen der -Vorlage
Erstellen Sie zunächst die CloudFormation-Vorlage.
-
Klicken Sie im Abschnitt „Vorlage“ auf das Kopiersymbol auf der Registerkarte JSON oder YAML, um den Inhalt der Vorlage zu kopieren.
-
Fügen Sie den Inhalt der Vorlage in eine neue Datei ein.
-
Speichern Sie die Datei lokal.
Erstellen Sie den -Stack
Verwenden Sie als Nächstes die Vorlage, die Sie gespeichert haben, um einen CloudFormation-Stack bereitzustellen.
-
Öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation
. -
Auf der Seite Stacks wählen Sie im Menü Stack erstellen die Option Mit neuen Ressourcen (Standard) aus.
-
Festlegen der Vorlage:
-
Wählen Sie unter Voraussetzung die Option Vorhandene Vorlage wählen aus.
-
Wählen Sie unter Vorlage angeben die Option Eine Vorlagendatei hochladen aus.
-
Klicken Sie auf Datei auswählen, navigieren Sie zur gewünschten Vorlagendatei und wählen Sie diese aus.
-
Wählen Sie Weiter aus.
-
-
Geben Sie die folgenden Stack-Details an:
-
Geben Sie einen Stack-Namen ein.
-
Sie können das Feld IdentityProviderName leer lassen, um automatisch einen Namen basierend auf dem Stack-Namen zu generieren, oder einen benutzerdefinierten Namen für Ihren SAML-IDP eingeben.
Beispiel:
CompanyIdPoderEnterpriseSSO -
Für IdentityProviderSAMLMetadataDocument müssen Sie Ihre XML-Datei für die SAML-Metadaten als einzelne Zeile formatieren, bevor Sie sie in dieses Feld einfügen. Dies ist erforderlich, da die CloudFormation-Konsole XML-Inhalte als eine einzelne Zeile erwartet, wenn sie über Konsolenparameter übergeben werden.
Formatieren Sie Ihre XML-Datei mit dem folgenden Python-Befehl neu:
python3 -c "import sys, re; content=open(sys.argv[1]).read(); print(re.sub(r'>\s+<', '><', content.replace('\n', '').replace('\r', '').strip()))"saml-metadata.xmlAnmerkung
Das SAML-Metadatendokument des IDP muss für die Eingabe von Konsolenparametern als einzelne Zeile formatiert werden. Der Python-Befehl entfernt Zeilenumbrüche und überflüssige Leerzeichen, um das erforderliche Format zu erstellen und gleichzeitig den ursprünglichen Inhalt und die ursprüngliche Struktur beizubehalten.
Kopieren Sie die Ausgabe des Python-Befehls und fügen Sie sie in das Feld IdentityProviderSAMLMetadataDocument ein.
Beispiel eines formatierten SAML-Metadatendokuments (gekürzt):
<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://portal.sso.example.com/saml/assertion/CompanyIdP"><md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:KeyDescriptor use="signing"><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:X509Data><ds:X509Certificate>MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiIMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV...</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://portal.sso.example.com/saml/logout/CompanyIdP"/><md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://portal.sso.example.com/saml/assertion/CompanyIdP"/></md:IDPSSODescriptor></md:EntityDescriptor> -
Sie können das Feld RoleName leer lassen, um automatisch einen Namen basierend auf dem Stack-Namen zu generieren, oder einen benutzerdefinierten Namen für die verbundene IAM-Rolle eingeben.
Beispiel:
SAML-Developer-AccessoderSAML-ReadOnly-Role -
Akzeptieren Sie für andere Parameter die Standardwerte oder geben Sie je nach Ihren Anforderungen Ihre eigenen ein:
-
IdentityProviderAddPrivateKey – Optionaler privater Schlüssel zum Entschlüsseln von SAML-Assertionen
-
IdentityProviderAssertionEncryptionMode – Verschlüsselungsmodus für SAML-Assertionen
Beispielwerte:
Allowed,Requiredoder leer lassen für keine Verschlüsselung -
RoleSessionDuration – Maximale Sitzungsdauer in Sekunden (3 600–43 200, Standard 7 200)
Beispiel:
14400(4 Stunden) -
RolePermissionsBoundary – Optionaler ARN einer Berechtigungsgrenzen-Richtlinie
Beispiel:
arn:aws:iam::123456789012:policy/DeveloperBoundary -
RolePath – Pfad für die IAM-Rolle (Standard ist „/“)
Beispiel:
/saml-roles/ -
RoleManagedPolicy1-5 – Optionale ARNs mit bis zu 5 verwalteten Richtlinien zum Anfügen
Beispiel für RoleManagedPolicy1:
arn:aws:iam::aws:policy/ReadOnlyAccessBeispiel für RoleManagedPolicy2:
arn:aws:iam::123456789012:policy/CustomPolicy
-
-
Wählen Sie Weiter aus.
-
-
Konfigurieren der Stack-Optionen:
-
Wählen Sie unter Optionen für Stack-Fehler die Option Löschen aller neu erstellten Ressourcen aus.
Anmerkung
Durch Auswahl dieser Option vermeiden Sie möglicherweise anfallende Kosten für Ressourcen, deren Löschrichtlinie deren Beibehaltung auch bei einem Fehler bei der Stack-Erstellung vorsieht.
-
Akzeptieren Sie alle anderen Standardwerte.
-
Aktivieren Sie unter Funktionen das Kontrollkästchen, um zu bestätigen, dass CloudFormation IAM-Ressourcen in Ihrem Konto erstellen darf.
-
Wählen Sie Weiter aus.
-
-
Überprüfen Sie die Stack-Details und klicken Sie auf Absenden.
CloudFormation erstellt den Stack. Sobald die Stack-Erstellung abgeschlossen ist, können die Stack-Ressourcen verwendet werden. Auf der Registerkarte Ressourcen der Stack-Detailseite können Sie die in Ihrem Konto bereitgestellten Ressourcen anzeigen.
Der Stack gibt die folgenden Werte aus, die Sie auf der Registerkarte Ausgaben einsehen können:
-
RoleARN: Der ARN der erstellten IAM-Rolle (z. B.
arn:aws:iam::123456789012:role/SAML-Developer-Accessoderarn:aws:iam::123456789012:role/stack-name-a1b2c3d4bei Verwendung eines automatisch generierten Namens). -
IdentityProviderARN: Der ARN des erstellten SAML-IDP (z. B.
arn:aws:iam::123456789012:saml-provider/CompanyIdP).
Sie benötigen beide ARNs, um Ihren IDP so zu konfigurieren, dass er die entsprechenden SAML-Attribute für die Rollenübernahme sendet.
Testen des SAML-Verbunds
Nachdem der SAML-IDP und die Verbundrolle erstellt wurden, können Sie die Verbundeinrichtung testen.
-
Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Identitätsanbieter.
Ihr neu erstellter SAML-IDP sollte in der Liste angezeigt werden.
-
Wählen Sie den IDP-Namen aus, um die Details anzuzeigen.
Auf der IDP-Detailseite sehen Sie das SAML-Metadatendokument und weitere Konfigurationsdetails.
-
Wählen Sie im Navigationsbereich Rollen.
-
Suchen Sie Ihre neu erstellte verbundene Rolle und wählen Sie sie aus.
Auf der Rollendetailseite sehen Sie die Vertrauensrichtlinie, die es dem SAML-IDP ermöglicht, diese Rolle zu übernehmen.
-
Wählen Sie die Registerkarte Vertrauensstellungen, um die Vertrauensrichtlinie zu überprüfen.
Die Vertrauensrichtlinie sollte anzeigen, dass der SAML-IDP berechtigt ist, diese Rolle zu übernehmen, sofern die SAML-Zielgruppe (
SAML:aud) mithttps://signin.aws.amazon.com/samlübereinstimmt.
Bereinigung: Ressourcen löschen
Im letzten Schritt löschen Sie den Stack und die darin enthaltenen Ressourcen.
-
Öffnen Sie die CloudFormation-Konsole.
-
Wählen Sie auf der Seite Stacks den aus der Vorlage erstellten Stack aus und klicken Sie auf Löschen. Bestätigen Sie dann Löschen.
CloudFormation initiiert nun das Löschen des Stacks und aller darin enthaltenen Ressourcen.
Details zur CloudFormation-Vorlage
Ressourcen
Die Vorlage von CloudFormation für dieses Tutorial erstellt die folgenden Ressourcen in Ihrem Konto:
-
AWS::IAM::SAMLProvider: Ein SAML-IDP, der eine Vertrauensbasis zwischen AWS und Ihrem externen IDP aufbaut. -
AWS::IAM::Role: Eine verbundene IAM-Rolle, die von Benutzern übernommen werden kann, die sich über den SAML-IDP authentifiziert haben.
Konfiguration
Die Vorlage enthält die folgenden konfigurierbaren Parameter:
-
IdentityProviderName – Name des SAML-IDP (leer lassen für automatisch generierten Namen)
-
IdentityProviderSAMLMetadataDocument – SAML-Metadatendokument Ihres IDP (erforderlich)
-
IdentityProviderAddPrivateKey – Optionaler privater Schlüssel zum Entschlüsseln von SAML-Assertionen
-
IdentityProviderAssertionEncryptionMode – Verschlüsselungsmodus für SAML-Assertionen
-
RoleName – Name der IAM-Rolle (leer lassen für automatisch generierten Namen)
-
RolePath – Pfad für die IAM-Rolle (Standard: /)
-
RolePermissionsBoundary – Optionaler ARN einer Berechtigungsgrenzen-Richtlinie
-
RoleSessionDuration – Maximale Sitzungsdauer in Sekunden (3 600–43 200, Standard 7 200)
-
RoleManagedPolicy1-5 – Optionale ARNs mit bis zu 5 verwalteten Richtlinien zum Anfügen
CloudFormation-Vorlage
Speichern Sie den folgenden JSON- oder YAML-Code als separate Datei, um ihn als CloudFormation-Vorlage für dieses Tutorial zu verwenden.