SAML2.0-Föderation - AWS Identitäts- und Zugriffsverwaltung

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.

SAML2.0-Föderation

AWS unterstützt den Identitätsverbund mit SAML2.0 (Security Assertion Markup Language 2.0), einem offenen Standard, den viele Identitätsanbieter (IdPs) verwenden. Diese Funktion ermöglicht föderiertes Single Sign-On (SSO), sodass sich Benutzer bei AWS API Vorgängen anmelden AWS Management Console oder Anrufe tätigen können, ohne dass Sie für jeden Benutzer in Ihrer Organisation einen IAM Benutzer erstellen müssen. Durch die Verwendung SAML können Sie die Konfiguration des Verbunds mit vereinfachen AWS, da Sie den Dienst des IdP verwenden können, anstatt einen benutzerdefinierten Identitätsproxycode zu schreiben.

Der IAM-Verbund unterstützt die folgenden Anwendungsfälle:

Verwenden Sie einen SAML basierten Verbund für den Zugriff auf API AWS

Gehen wir davon aus, Sie möchten Mitarbeitern die Möglichkeit bieten, Daten von ihren Computern in einen Sicherungsordner zu kopieren. Sie erstellen eine Anwendung, die Benutzer auf ihrem Computer ausführen können. Am Backend liest und schreibt die Anwendung Objekte in einen Amazon S3 S3-Bucket. Benutzer haben keinen direkten Zugriff auf AWS. Stattdessen wird der folgende Prozess verwendet:

Abrufen temporärer Sicherheitsanmeldedaten auf der Grundlage einer SAML Assertion
  1. Ein Benutzer in Ihrer Organisation verwendet eine Client-App, um eine Authentifizierung vom Identitätsanbieter Ihrer Organisation anzufordern.

  2. Der Identitätsanbieter authentifiziert den Benutzer anhand des Identitätsspeichers Ihrer Organisation.

  3. Der IdP erstellt eine SAML Assertion mit Informationen über den Benutzer und sendet die Assertion an die Client-App.

  4. Die Client-App ruft die auf AWS STS AssumeRoleWithSAMLAPIund übergibt die ARN des SAML Anbieters, die ARN der Rolle, die übernommen werden soll, und die SAML Assertion von IdP.

  5. Die API Antwort an die Client-App enthält temporäre Sicherheitsanmeldedaten.

  6. Die Client-App verwendet die temporären Sicherheitsanmeldedaten, um Amazon S3 API S3-Operationen aufzurufen.

Überblick über die Konfiguration eines SAML 2.0-basierten Verbunds

Bevor Sie den SAML 2.0-basierten Verbund wie im vorherigen Szenario und Diagramm beschrieben verwenden können, müssen Sie den IdP Ihrer Organisation und Sie so konfigurieren, AWS-Konto dass sie sich gegenseitig vertrauen. Der allgemeine Prozess für die Konfiguration dieses Vertrauens wird in den folgenden Schritten beschrieben. In Ihrer Organisation müssen Sie über einen IdP verfügen, der SAML 2.0 unterstützt, z. B. Microsoft Active Directory Federation Service (AD FS, Teil von Windows Server), Shibboleth oder einen anderen kompatiblen 2.0-Anbieter. SAML

Anmerkung

Um die Ausfallsicherheit des Verbunds zu verbessern, empfehlen wir Ihnen, Ihren IdP und den AWS Verbund so zu konfigurieren, dass mehrere SAML Anmeldeendpunkte unterstützt werden. Einzelheiten finden Sie im AWS Sicherheitsblogartikel How to use regional SAML endpoints for Failover.

Richten Sie den IdP Ihrer Organisation ein und vertrauen Sie AWS sich gegenseitig
  1. Registrieren Sie sich AWS als Service Provider (SP) beim IdP Ihrer Organisation. Verwenden Sie das SAML Metadaten-Dokument von https://region-code.signin.aws.amazon.com/static/saml-metadata.xml

    Für eine Liste möglicher region-code Werte finden Sie in der Spalte Region unter AWS Anmelde-Endpunkte.

    Sie können optional das SAML Metadatendokument von verwenden. https://signin.aws.amazon.com/static/saml-metadata.xml

  2. Mithilfe des IdP Ihrer Organisation generieren Sie eine entsprechende XML Metadatendatei, in der Ihr IdP als IAM Identitätsanbieter beschrieben werden kann. AWS Sie muss den Namen des Ausstellers, ein Erstellungsdatum, ein Ablaufdatum und Schlüssel enthalten, anhand derer die Authentifizierungsantworten (Assertionen) Ihrer Organisation validiert werden AWS können.

  3. In der IAM Konsole erstellen Sie einen SAML Identitätsanbieter. Im Rahmen dieses Vorgangs laden Sie das SAML Metadatendokument hoch, die vom IdP in Ihrer Organisation in erstellt wurden. Schritt 2 Weitere Informationen finden Sie unter Erstellen Sie einen SAML Identitätsanbieter in IAM.

  4. In IAM erstellen Sie eine oder mehrere IAM Rollen. In der Vertrauensrichtlinie der Rolle legen Sie den SAML Anbieter als Prinzipal fest, wodurch eine Vertrauensbeziehung zwischen Ihrer Organisation und hergestellt wird AWS. Die Berechtigungsrichtlinie der Rolle legt fest, wozu die Benutzer in Ihrer Organisation in AWS berechtigt sind. Weitere Informationen finden Sie unter Eine Rolle für einen externen Identitätsanbieter (Federation) erstellen.

    Anmerkung

    SAMLIDPsDie in einer Rolle verwendete Vertrauensrichtlinie muss sich in demselben Konto befinden, in dem sich die Rolle befindet.

  5. Im IdP Ihrer Organisation definieren Sie Assertionen, die Benutzer oder Gruppen in Ihrer Organisation den IAM Rollen zuordnen. Beachten Sie, dass verschiedene Benutzer und Gruppen in Ihrer Organisation möglicherweise unterschiedlichen IAM Rollen zugeordnet werden. Die genauen Schritte zur Durchführung des Mappings hängen davon ab, welche Identitätsanbieter Sie verwenden. Im früheren Szenario eines Amazon S3-Ordners für Benutzer ist es möglich, dass alle Benutzer derselben Rolle zugeordnet werden, die Amazon S3-Berechtigungen bieten. Weitere Informationen finden Sie unter SAMLAssertionen für die Authentifizierungsantwort konfigurieren.

    Wenn Ihr IdP SSO die AWS Konsole aktiviert, können Sie die maximale Dauer der Konsolensitzungen konfigurieren. Weitere Informationen finden Sie unter Aktivieren des Zugriffs von SAML 2.0-Verbundbenutzern auf AWS Management Console.

  6. In der Anwendung, die Sie erstellen, rufen Sie die auf und übergeben ihr die Angaben ARN des SAML Anbieters AWS Security Token Service AssumeRoleWithSAMLAPI, in dem Sie sie erstellt haben, die der RolleSchritt 3, ARN von der Sie annehmen sollen, dass Sie sie erstellt habenSchritt 4, und die SAML Assertion über den aktuellen Benutzer, die Sie von Ihrem IdP erhalten. AWS stellt sicher, dass die Anfrage zur Übernahme der Rolle von dem IdP stammt, auf den im SAML Anbieter verwiesen wird.

    Weitere Informationen finden Sie AssumeRoleWithSAMLin der AWS Security Token Service APIReferenz.

  7. Wenn die Anfrage erfolgreich ist, API gibt der einen Satz temporärer Sicherheitsanmeldedaten zurück, an die Ihre Anwendung signierte Anfragen richten kann AWS. Ihre Anwendung hat Informationen über den aktuellen Benutzer und kann auf benutzerspezifische Ordner in Amazon S3 zugreifen, wie im vorherigen Szenario beschrieben.

Überblick über die Rolle, die den SAML föderierten Zugriff auf Ihre Ressourcen ermöglicht AWS

Die Rolle oder Rollen, die Sie in erstellen, IAM definieren, in welchen Bereichen Verbundbenutzer aus Ihrer Organisation Zugriff haben. AWS Wenn Sie die Vertrauensrichtlinie für die Rolle erstellen, geben Sie den SAML Anbieter an, den Sie zuvor erstellt haben, als. Principal Sie können die Vertrauensrichtlinie zusätzlich mit a einschränkenCondition, sodass nur Benutzer, die bestimmten SAML Attributen entsprechen, auf die Rolle zugreifen können. Sie können beispielsweise festlegen, dass nur Benutzer, deren SAML Zugehörigkeit staff (wie unter https://openidp.feide.no bestätigt) angegeben ist, auf die Rolle zugreifen dürfen, wie in der folgenden Beispielrichtlinie veranschaulicht wird:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Federated": "arn:aws:iam::account-id:saml-provider/ExampleOrgSSOProvider"}, "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "saml:aud": "https://signin.aws.amazon.com/saml", "saml:iss": "https://openidp.feide.no" }, "ForAllValues:StringLike": {"saml:edupersonaffiliation": ["staff"]} } }] }
Anmerkung

SAMLIDPsDie in einer Rolle verwendete Vertrauensrichtlinie muss sich in demselben Konto befinden, in dem sich die Rolle befindet.

Weitere Informationen zu den SAML Schlüsseln, die Sie in einer Richtlinie einchecken können, finden Sie unterVerfügbare Schlüssel für den SAML basierten AWS STS Verbund.

Sie können unter https://region-code.signin.aws.amazon.com/static/saml-metadata.xml regionale Endpunkte für das saml:aud-Attribut einfügen. Eine Liste der möglichen region-code Werte finden Sie in der Spalte Region unter AWS Anmelde-Endpunkte.

Für die Berechtigungsrichtlinie in der Rolle geben Sie Berechtigungen wie bei jeder anderen Rolle auch an. Wenn Benutzer aus Ihrer Organisation beispielsweise Amazon Elastic Compute Cloud-Instances verwalten dürfen, müssen Sie EC2 Amazon-Aktionen in der Berechtigungsrichtlinie ausdrücklich zulassen, z. B. die Aktionen in der von Amazon EC2FullAccess verwalteten Richtlinie.

Eindeutige Identifizierung von Benutzern in einem SAML basierten Verbund

Wenn Sie Zugriffsrichtlinien in erstellenIAM, ist es oft nützlich, Berechtigungen auf der Grundlage der Benutzeridentität angeben zu können. Für Benutzer, die mit einem Verbund verbunden wurdenSAML, möchte eine Anwendung beispielsweise Informationen in Amazon S3 speichern und dabei eine Struktur wie die folgende verwenden:

myBucket/app1/user1 myBucket/app1/user2 myBucket/app1/user3

Sie können den Bucket (myBucket) und den Ordner (app1) über die Amazon S3 S3-Konsole oder die erstellen AWS CLI, da es sich um statische Werte handelt. Die benutzerspezifischen Ordner (user1, user2, user3usw.) muss jedoch mithilfe von Code zur Laufzeit erstellt werden, da der Wert, der den Benutzer identifiziert, erst bekannt wird, wenn sich der Benutzer das erste Mal über den Verbundprozess anmeldet.

Um Richtlinien zu schreiben, die als Teil eines Ressourcennamens auf benutzerspezifische Details verweisen, muss die Benutzeridentität in SAML Schlüsseln verfügbar sein, die in Richtlinienbedingungen verwendet werden können. Die folgenden Schlüssel sind für den SAML 2.0-basierten Verbund zur Verwendung in Richtlinien verfügbar. IAM Sie können die von den folgenden Schlüsseln zurückgegebenen Werte verwenden, um eindeutige Benutzerkennungen für Ressourcen wie Amazon S3-Ordner zu erstellen.

  • saml:namequalifier. Ein Hashwert, der auf der Verkettung des Issuer Antwortwerts (saml:iss) und einer Zeichenfolge mit der AWS Konto-ID und dem Anzeigenamen (dem letzten Teil vonARN) des SAML Anbieters in basiert. IAM Die Verkettung der Konto-ID und des Anzeigenamens des SAML Anbieters steht Richtlinien als Schlüssel zur Verfügung. IAM saml:doc Die Konto-ID und der Name des Anbieters müssen durch ein '/' getrennt werden, wie in "123456789012/anbieter_name". Weitere Informationen finden Sie im saml:doc-Schlüssel unter Verfügbare Schlüssel für den SAML basierten AWS STS Verbund.

    Die Kombination aus NameQualifier und Subject kann verwendet werden, um einen Verbundbenutzer eindeutig zu identifizieren. Die folgende Pseudocode zeigt, wie dieser Wert berechnet wird. In diesem Fall SHA1 steht der Pseudocode für + Verkettung, für eine Funktion, die mit SHA -1 einen Message Digest erzeugt, und für eine Funktion, die eine Base-64-kodierte Base64 Version der Hashausgabe erzeugt.

    Base64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) )

    Weitere Hinweise zu den Richtlinienschlüsseln, die für den basierten Verbund verfügbar sind, finden Sie unter. SAML Verfügbare Schlüssel für den SAML basierten AWS STS Verbund

  • saml:sub (string). Dies ist der Betreff des Antrags, der einen Wert enthält, der einen einzelnen Benutzer innerhalb einer Organisation eindeutig identifiziert (zum Beispiel _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

  • saml:sub_type (string). Bei diesem Schlüssel kann es sich um persistenttransient, oder um die vollständigen Format URI NameID Elemente Subject und handeln, die in Ihrer SAML Assertion verwendet wurden. Der Wert persistent gibt an, dass der Wert in saml:sub für einen Benutzer derselbe für alle Sessions ist. Wenn der Wert transient lautet, hat der Benutzer einen anderen saml:sub-Wert für jede Sitzung. Weitere Informationen zum NameID-Attribut des Format-Elements finden Sie unter SAMLAssertionen für die Authentifizierungsantwort konfigurieren.

Das folgende Beispiel zeigt eine Berechtigungsrichtlinie, die die oben genannten Schlüssel verwendet, um Berechtigungen für einen benutzerspezifischen Ordner in Amazon S3 zu gewähren. Die Richtlinie geht davon aus, dass die Amazon S3-Objekte mit einem Präfix identifiziert werden, das sowohl saml:namequalifier als auch saml:sub enthält. Beachten Sie, dass das Condition-Element einen Test umfasst, um sicherzustellen, dass saml:sub_type auf persistent festgelegt ist. Wenn er auf transient festgelegt ist, kann der saml:sub-Wert für den Benutzer für jede Sitzung unterschiedlich sein und die Kombination der Werte sollte nicht verwendet werden, um benutzerspezifische Ordner zu identifizieren.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::exampleorgBucket/backup/${saml:namequalifier}/${saml:sub}", "arn:aws:s3:::exampleorgBucket/backup/${saml:namequalifier}/${saml:sub}/*" ], "Condition": {"StringEquals": {"saml:sub_type": "persistent"}} } }

Weitere Informationen zum Mapping von Zusicherungen aus dem Identitätsanbieter zu Richtlinienschlüsseln finden Sie unter SAMLAssertionen für die Authentifizierungsantwort konfigurieren.