S3 Access Grants und Unternehmensverzeichnisidentitäten - Amazon Simple Storage Service

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.

S3 Access Grants und Unternehmensverzeichnisidentitäten

Sie können Amazon S3 Access Grants verwenden, um Zugriff auf AWS Identity and Access Management (IAM-) Principals (Benutzer oder Rollen) zu gewähren, sowohl für dieselben als auch für AWS-Konto andere. Häufig handelt es sich jedoch bei der Entität, die auf die Daten zugreift, um Endbenutzer in Ihrem Unternehmensverzeichnis. Anstatt IAM-Prinzipalen Zugriff zu gewähren, können Sie mit S3 Access Grants Unternehmensbenutzern und -gruppen direkt Zugriff gewähren. Mit S3 Access Grants müssen Sie Ihre Unternehmensidentitäten nicht mehr zwischengeschalteten IAM-Prinzipalen zuordnen, um über Unternehmensanwendungen auf S3-Daten zuzugreifen.

Diese neue Funktionalität — Unterstützung für den Zugriff auf Daten mithilfe von Endbenutzeridentitäten — wird bereitgestellt, indem Sie Ihre S3 Access Grants-Instance mit einer Instance verknüpfen. AWS IAM Identity Center IAM Identity Center unterstützt standardbasierte Identitätsanbieter und ist die zentrale Anlaufstelle AWS für alle Dienste oder Funktionen, einschließlich S3 Access Grants, die Endbenutzeridentitäten unterstützen. IAM Identity Center unterstützt über die Funktion für die vertrauenswürdige Weitergabe von Identitäten die Authentifizierung von Unternehmensidentitäten. Weitere Informationen finden Sie unter Vertrauenswürdige Identitätsweitergabe über Anwendungen hinweg.

Um mit der Unterstützung von Benutzeridentitäten in S3 Access Grants zu beginnen, müssen Sie zunächst in IAM Identity Center die Identitätsbereitstellung zwischen den Identitätsanbieter Ihres Unternehmens und IAM Identity Center konfigurieren. IAM Identity Center unterstützt Unternehmensidentitätsanbieter wie Okta, Microsoft Entra ID (früherAzure Active Directory) und jeden anderen externen Identitätsanbieter (IdP), der das Protokoll „System for Cross-domain Identity Management (SCIM)“ unterstützt. Wenn Sie IAM Identity Center mit Ihrem IdP verbinden und die automatische Bereitstellung aktivieren, werden die Benutzer und Gruppen im IdP mit dem Identitätsspeicher in IAM Identity Center synchronisiert. Nach diesem Schritt verfügt IAM Identity Center über eine eigene Ansicht Ihrer Benutzer und Gruppen, sodass Sie mithilfe anderer AWS-Services Funktionen wie S3 Access Grants auf sie verweisen können. Weitere Informationen zur Konfiguration der automatischen Bereitstellung über IAM Identity Center finden Sie unter Automatische Bereitstellung im AWS IAM Identity Center -Benutzerhandbuch.

IAM Identity Center ist integriert, AWS Organizations sodass Sie Berechtigungen für mehrere Benutzer zentral verwalten können, AWS-Konten ohne jedes Ihrer Konten manuell konfigurieren zu müssen. In einer typischen Organisation konfiguriert der Identitätsadministrator eine einzelne IAM-Identity-Center-Instance für die gesamte Organisation, die als zentrale Punkt der Identitätssynchronisierung dient. Diese IAM Identity Center-Instanz wird in der Regel in einer dedizierten Instanz AWS-Konto in Ihrer Organisation ausgeführt. In dieser allgemeinen Konfiguration können Sie in S3 Access Grants von jedem beliebigen AWS-Konto Mitglied der Organisation auf Benutzer- und Gruppenidentitäten verweisen.

Wenn Ihr AWS Organizations Administrator jedoch noch keine zentrale IAM Identity Center-Instanz konfiguriert hat, können Sie eine lokale Instanz in demselben Konto wie Ihre S3 Access Grants-Instanz erstellen. Eine solche Konfiguration ist für proof-of-concept Anwendungsfälle in der lokalen Entwicklung üblicher. In allen Fällen muss sich die IAM Identity Center-Instanz in derselben Umgebung befinden AWS-Region wie die S3 Access Grants-Instanz, der sie zugeordnet wird.

Im folgenden Diagramm einer IAM-Identity-Center-Konfiguration mit einem externen IdP wurde der IdP mit SCIM konfiguriert, um den Identitätsspeicher des IdP mit dem Identitätsspeicher in IAM Identity Center zu synchronisieren.

IAM-Identity-Center-Integration mit einem externen Identitätsspeicher über die automatische Bereitstellung

Gehen Sie wie folgt vor, um Ihre Unternehmensverzeichnisidentitäten mit S3 Access Grants zu verwenden:

Zugriff auf S3-Daten über Verzeichnisidentitäten

Angenommen, es gibt Unternehmensverzeichnisbenutzer, die über eine Unternehmensanwendung auf Ihre S3-Daten zugreifen müssen, z. B. eine Anwendung zur Dokumentenanzeige, die mit Ihrem externen IdP integriert ist (z. B. Okta), um Benutzer zu authentifizieren. Die Authentifizierung des Benutzers in diesen Anwendungen erfolgt in der Regel über Weiterleitungen im Webbrowser des Benutzers. Da es sich bei den Benutzern im Verzeichnis nicht um IAM-Prinzipale handelt, benötigt Ihre Anwendung IAM-Anmeldeinformationen, um die S3-Access-Grants-API-Operation GetDataAccess aufzurufen und im Namen der Benutzer Anmeldeinformationen für den Zugriff auf S3-Daten abzurufen. Im Gegensatz zu IAM-Benutzern und -Rollen, die Anmeldeinformationen selbst erhalten, muss Ihre Anwendung einen Verzeichnisbenutzer darstellen, der keiner IAM-Rolle zugeordnet ist, damit dieser Benutzer über S3 Access Grants Zugriff auf die Daten erhalten kann.

Dieser Wechsel vom authentifizierten Verzeichnisbenutzer zu einem IAM-Aufrufer, der im Namen des Verzeichnisbenutzers Anforderungen an S3 Access Grants senden kann, erfolgt über die IAM-Identity-Center-Funktion für vertrauenswürdige Token-Aussteller. Die Anwendung besitzt nach der Authentifizierung des Verzeichnisbenutzers ein Identitätstoken des IdP (z. B.Okta), das den Verzeichnisbenutzer gemäß Okta darstellt. Über die Konfiguration des vertrauenswürdigen Token-Ausstellers in IAM Identity Center kann die Anwendung dieses Okta-Token (der Okta-Mandant ist als „vertrauenswürdiger Aussteller“ konfiguriert) durch ein anderes Identitätstoken von IAM Identity Center ersetzen, das den Verzeichnisbenutzer in AWS-Services auf sichere Weise darstellt. Die Datenanwendung übernimmt anschließend eine IAM-Rolle und stellt das Token des Verzeichnisbenutzers aus dem IAM Identity Center als zusätzlichen Kontext bereit. Die Anwendung kann die resultierende IAM-Sitzung verwenden, um S3 Access Grants aufzurufen. Das Token stellt sowohl die Identität der Anwendung (den IAM-Prinzipal selbst) als auch die Identität des Verzeichnisbenutzers dar.

Der Hauptschritt dieses Wechsels ist der Token-Austausch. Die Anwendung führt diesen Token-Austausch über den Aufruf der API-Operation CreateTokenWithIAM in IAM Identity Center auf. Natürlich handelt es sich auch hier um einen AWS API-Aufruf, für dessen Unterzeichnung ein IAM-Principal erforderlich ist. Der IAM-Prinzipal, der diese Anforderung sendet, ist in der Regel eine IAM-Rolle, die der Anwendung zugeordnet ist. Wenn die Anwendung beispielsweise in Amazon EC2 ausgeführt wird, wird die Anforderung CreateTokenWithIAM in der Regel von der IAM-Rolle ausgeführt, die der EC2-Instance zugeordnet ist, auf der die Anwendung ausgeführt wird. Das Ergebnis eines erfolgreichen CreateTokenWithIAM Aufrufs ist ein neues Identitätstoken, das darin AWS-Services erkannt wird.

Bevor die Anwendung im Namen des Verzeichnisbenutzers GetDataAccess aufrufen kann, muss die Anwendung als Nächstes eine IAM-Sitzung abrufen, die die Identität des Verzeichnisbenutzers enthält. Die Anwendung tut dies mit einer AWS Security Token Service (AWS STS) AssumeRole -Anforderung, die auch das IAM Identity Center-Token für den Verzeichnisbenutzer als zusätzlichen Identitätskontext enthält. Dieser zusätzliche Kontext ermöglicht IAM Identity Center, die Identität des Verzeichnisbenutzers an den nächsten Schritt weiterzugeben. Die IAM-Rolle, die die Anwendung annimmt, ist die Rolle, die IAM-Berechtigungen benötigt, um die GetDataAccess-Operation aufzurufen.

Nach der Übernahme der IAM-Rolle des Identitätsträgers mit dem IAM-Identity-Center-Token des Verzeichnisbenutzers als zusätzlichem Kontext, besitzt die Anwendung nun alle nötigen Komponenten, um im Namen des authentifizierten Verzeichnisbenutzers eine signierte Anforderung an GetDataAccess zu senden.

Die Token-Weitergabe basiert auf den folgenden Schritten:

Erstellen einer IAM-Identity-Center-Anwendung

Erstellen Sie zunächst eine neue Anwendung in IAM Identity Center. Diese Anwendung verwendet eine Vorlage, mit der IAM Identity Center feststellen kann, welche Art von Anwendungseinstellungen Sie verwenden können. Für den Befehl zum Erstellen der Anwendung müssen Sie den Amazon Resource Name (ARN) der IAM-Identity-Center-Instance, einen Anwendungsnamen und den Anwendungsanbieter-ARN angeben. Der Anwendungsanbieter ist der SAML- oder OAuth-Anwendungsanbieter, den die Anwendung für Aufrufe an das IAM Identity Center verwendet.

Wenn Sie den folgenden Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch eigenen Daten:

aws sso-admin create-application \ --instance-arn "arn:aws:sso:::instance/ssoins-ssoins-1234567890abcdef" \ --application-provider-arn "arn:aws:sso::aws:applicationProvider/custom" \ --name MyDataApplication

Antwort:

{ "ApplicationArn": "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" }

Erstellen eines vertrauenswürdigen Token-Ausstellers

Da Sie jetzt Ihre IAM-Identity-Center-Anwendung besitzen, besteht der nächste Schritt in der Konfiguration eines vertrauenswürdigen Token-Ausstellers, der für den Austausch der IdToken-Werte Ihres IdP gegen IAM-Identity-Center-Token verwendet wird. In diesem Schritt müssen Sie die folgenden Elemente bereitstellen:

  • URL des Identitätsanbieter-Ausstellers

  • Name des vertrauenswürdigen Token-Ausstellers

  • Pfad zum Anforderungsattribut

  • Pfad zum Identitätsspeicherattribut

  • JSON Web Key Set (JWKS)-Abrufoption

Der Pfad zum Anforderungsattribut ist das Identitätsanbieterattribut, das für die Zuordnung zum Identitätsspeicherattribut verwendet wird. Normalerweise ist der Pfad zum Anforderungsattribut die E-Mail-Adresse des Benutzers. Sie können jedoch auch andere Attribute für die Zuordnung verwenden.

Erstellen Sie eine Datei mit dem Namen oidc-configuration.json und den folgenden Informationen. Wenn Sie diese Datei verwenden möchten, ersetzen Sie user input placeholders durch eigene Daten.

{ "OidcJwtConfiguration": { "IssuerUrl": "https://login.microsoftonline.com/a1b2c3d4-abcd-1234-b7d5-b154440ac123/v2.0", "ClaimAttributePath": "preferred_username", "IdentityStoreAttributePath": "userName", "JwksRetrievalOption": "OPEN_ID_DISCOVERY" } }

Führen Sie den folgenden Befehl aus, um den vertrauenswürdigen Token-Aussteller zu erstellen. Wenn Sie diesen Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre Informationen.

aws sso-admin create-trusted-token-issuer \ --instance-arn "arn:aws:sso:::instance/ssoins-1234567890abcdef" \ --name MyEntraIDTrustedIssuer \ --trusted-token-issuer-type OIDC_JWT \ --trusted-token-issuer-configuration file://./oidc-configuration.json

Antwort

{ "TrustedTokenIssuerArn": "arn:aws:sso::123456789012:trustedTokenIssuer/ssoins-1234567890abcdef/tti-43b4a822-1234-1234-1234-a1b2c3d41234" }

Verbinden der IAM-Identity-Center-Anwendung mit dem vertrauenswürdigen Token-Aussteller

Für den vertrauenswürdigen Token-Aussteller sind einige weitere Konfigurationseinstellungen erforderlich, um zu funktionieren. Legen Sie die Zielgruppe fest, der der vertrauenswürdige Token-Aussteller vertrauen soll. Die Zielgruppe ist der Wert im IdToken, der durch den Schlüssel identifiziert wird und in den Einstellungen des Identitätsanbieters zu finden ist. Beispielsweise:

1234973b-abcd-1234-abcd-345c5a9c1234

Erstellen Sie eine Datei mit dem Namen grant.json mit dem folgenden Inhalt. Um diese Datei zu verwenden, ändern Sie die Zielgruppe entsprechend den Einstellungen des Identitätsanbieters und geben den ARN des vertrauenswürdigen Token-Ausstellers an, der vom vorherigen Befehl zurückgegeben wurde.

{ "JwtBearer": { "AuthorizedTokenIssuers": [ { "TrustedTokenIssuerArn": "arn:aws:sso::123456789012:trustedTokenIssuer/ssoins-1234567890abcdef/tti-43b4a822-1234-1234-1234-a1b2c3d41234", "AuthorizedAudiences": [ "1234973b-abcd-1234-abcd-345c5a9c1234" ] } ] } }

Führen Sie den folgenden Beispielbefehl aus. Zur Verwendung dieses Befehls ersetzen Sie user input placeholders durch eigene Informationen.

aws sso-admin put-application-grant \ --application-arn "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \ --grant-type "urn:ietf:params:oauth:grant-type:jwt-bearer" \ --grant file://./grant.json \

Mit diesem Befehl werden die Konfigurationseinstellungen des vertrauenswürdigen Token-Ausstellers so festgelegt, dass er der Zielgruppe in der Datei grant.json vertraut und diese Zielgruppe mit der Anwendung verknüpft, die im ersten Schritt für den Austausch von Token des Typs jwt-bearer erstellt wurde. Die Zeichenfolge urn:ietf:params:oauth:grant-type:jwt-bearer ist keine willkürliche Zeichenfolge. Sie ist ein registrierter Namespace in OAuth JSON Web Token (JWT)-Zusicherungsprofilen. Weitere Informationen zu diesem Namespace finden Sie in RFC 7523.

Verwenden Sie als Nächstes den folgenden Befehl, um festzulegen, welche Bereiche der vertrauenswürdige Token-Aussteller beim Austausch von IdToken-Werten Ihres Identitätsanbieters einbezieht. Für S3 Access Grants ist der Wert für den Parameter --scope s3:access_grants:read_write.

aws sso-admin put-application-access-scope \ --application-arn "arn:aws:sso::111122223333:application/ssoins-ssoins-111122223333abcdef/apl-abcd1234a1b2c3d" \ --scope "s3:access_grants:read_write"

Der letzte Schritt besteht in der Anfügung einer Ressourcenrichtlinie an die IAM-Identity-Center-Anwendung. Diese Richtlinie ermöglicht der IAM-Rolle Ihrer Anwendung das Senden von Anforderungen an die API-Operation sso-oauth:CreateTokenWithIAM und den Erhalt von IdToken-Werten aus dem IAM Identity Center.

Erstellen Sie eine Datei mit dem Namen authentication-method.json mit folgendem Inhalt. Ersetzen Sie 123456789012 durch Ihre Konto-ID.

{ "Iam": { "ActorPolicy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/webapp" }, "Action": "sso-oauth:CreateTokenWithIAM", "Resource": "*" } ] } } }

Führen Sie zum Anfügen der Richtlinie an die IAM-Identity-Center-Anwendung den folgenden Befehl aus:

aws sso-admin put-application-authentication-method \ --application-arn "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \ --authentication-method-type IAM \ --authentication-method file://./authentication-method.json

Damit sind die Konfigurationseinstellungen für die Verwendung von S3 Access Grants mit Verzeichnisbenutzern über eine Webanwendung abgeschlossen. Sie können diese Einrichtung direkt in der Anwendung testen oder die API-Operation CreateTokenWithIAM aufrufen, indem Sie den folgenden Befehl aus einer zugelassenen IAM-Rolle in der IAM-Identity-Center-Anwendungsrichtlinie verwenden:

aws sso-oidc create-token-with-iam \ --client-id "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \ --grant-type urn:ietf:params:oauth:grant-type:jwt-bearer \ --assertion IdToken

Die Antwort wird sieht ungefähr wie folgt aus:

{ "accessToken": "<suppressed long string to reduce space>", "tokenType": "Bearer", "expiresIn": 3600, "refreshToken": "<suppressed long string to reduce space>", "idToken": "<suppressed long string to reduce space>", "issuedTokenType": "urn:ietf:params:oauth:token-type:refresh_token", "scope": [ "sts:identity_context", "s3:access_grants:read_write", "openid", "aws" ] }

Wenn Sie den mit base64 kodierten IdToken-Wert dekodieren, können Sie die Schlüssel-Wert-Paare im JSON-Format anzeigen. Der Schlüssel sts:identity_context enthält den Wert, den Ihre Anwendung in der sts:AssumeRole-Anforderung senden muss, um die Identitätsinformationen des Verzeichnisbenutzers einzuschließen. Dies ist ein Beispiel für das dekodierte IdToken:

{ "aws:identity_store_id": "d-996773e796", "sts:identity_context": "AQoJb3JpZ2luX2VjEOTtl;<SUPRESSED>", "sub": "83d43802-00b1-7054-db02-f1d683aacba5", "aws:instance_account": "123456789012", "iss": "https://identitycenter.amazonaws.com/ssoins-1234567890abcdef", "sts:audit_context": "AQoJb3JpZ2luX2VjEOT<SUPRESSED>==", "aws:identity_store_arn": "arn:aws:identitystore::232642235904:identitystore/d-996773e796", "aud": "abcd12344U0gi7n4Yyp0-WV1LWNlbnRyYWwtMQ", "aws:instance_arn": "arn:aws:sso:::instance/ssoins-6987d7fb04cf7a51", "aws:credential_id": "EXAMPLEHI5glPh40y9TpApJn8...", "act": { "sub": "arn:aws:sso::232642235904:trustedTokenIssuer/ssoins-6987d7fb04cf7a51/43b4a822-1020-7053-3631-cb2d3e28d10e" }, "auth_time": "2023-11-01T20:24:28Z", "exp": 1698873868, "iat": 1698870268 }

Sie können den Wert aus sts:identity_context abrufen und diese Informationen in einem sts:AssumeRole-Aufruf weitergeben. Dies ist ein CLI-Beispiel für die Syntax. Bei der Rolle, die übernommen werden soll, handelt es sich um eine temporäre Rolle mit Berechtigungen für den Aufruf von s3:GetDataAccess.

aws sts assume-role \ --role-arn "arn:aws:iam::123456789012:role/temp-role" \ --role-session-name "TempDirectoryUserRole" \ --provided-contexts ProviderArn="arn:aws:iam::aws:contextProvider/IdentityCenter",ContextAssertion="value from sts:identity_context"

Sie können nun die bei diesem Aufruf erhaltenen Anmeldeinformationen verwenden, um die API-Operation s3:GetDataAccess aufzurufen und die endgültigen Anmeldeinformationen für den Zugriff auf Ihre S3-Ressourcen zu erhalten.