Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Puoi utilizzare Amazon S3 Access Grants per concedere l'accesso ai principali AWS Identity and Access Management (utenti o ruoli) (IAM), sia nello stesso Account AWS che in altri. Tuttavia, in molti casi, l'entità che accede ai dati è un utente finale della directory aziendale. Invece di concedere l'accesso ai principali IAM, puoi utilizzare S3 Access Grants per concedere l'accesso direttamente agli utenti e ai gruppi aziendali. Con S3 Access Grants, non è più necessario mappare le identità aziendali a principali IAM intermedi per accedere ai dati S3 tramite le applicazioni aziendali.
Questa nuova funzionalità, il supporto per l'utilizzo delle identità degli utenti finali per l'accesso ai dati, viene fornita associando l'istanza S3 Access Grants a un'istanza. AWS IAM Identity Center IAM Identity Center supporta provider di identità basati su standard ed è l'hub di tutti i servizi o funzionalità, inclusi S3 Access Grants, che supportano le identità degli utenti finali AWS . Il Centro identità IAM fornisce supporto per l'autenticazione delle identità aziendali attraverso la sua funzionalità Propagazione delle identità attendibili. Per ulteriori informazioni, consulta la pagina Propagazione delle identità attendibili tra le applicazioni.
Prima di iniziare con il supporto delle identità della forza lavoro in S3 Access Grants, devi configurare il provisioning delle identità tra il tuo gestore delle identità aziendali e il Centro identità IAM, come prerequisito. IAM Identity Center supporta provider di identità aziendali come Okta, Microsoft Entra ID (in precedenza Azure Active Directory) o qualsiasi altro provider di identità esterno (IdP) che supporti il protocollo System for Cross-domain Identity Management (SCIM). Quando connetti il Centro identità IAM al tuo gestore dell'identità digitale (IdP) e abiliti il provisioning automatico, gli utenti e i gruppi del tuo IdP vengono sincronizzati nell'archivio di identità nel Centro identità IAM. Dopo questo passaggio, IAM Identity Center ha una propria visione degli utenti e dei gruppi, in modo che tu possa fare riferimento a loro utilizzando altre Servizi AWS funzionalità, come S3 Access Grants. Per ulteriori informazioni sulla configurazione del provisioning automatico del Centro identità IAM, consulta la sezione Provisioning automatico nella Guida per l'utente di AWS IAM Identity Center .
IAM Identity Center è integrato AWS Organizations in modo da poter gestire centralmente le autorizzazioni su più account Account AWS senza configurare manualmente ciascuno dei tuoi account. In un'organizzazione tipica, l'amministratore delle identità configura un'istanza del Centro identità IAM per l'intera organizzazione, come unico punto di sincronizzazione delle identità. Questa istanza di IAM Identity Center viene in genere eseguita in un ambiente dedicato Account AWS dell'organizzazione. In questa configurazione comune, puoi fare riferimento alle identità di utenti e gruppi in S3 Access Grants da qualsiasi Account AWS parte dell'organizzazione.
Tuttavia, se AWS Organizations l'amministratore non ha ancora configurato un'istanza centrale di IAM Identity Center, puoi crearne una locale nello stesso account dell'istanza S3 Access Grants. Tale configurazione è più comune per i nostri casi proof-of-concept d'uso di sviluppo locale. In tutti i casi, l'istanza IAM Identity Center deve essere la Regione AWS stessa dell'istanza S3 Access Grants a cui verrà associata.
Nel diagramma seguente di una configurazione del Centro identità IAM con un gestore dell'identità digitale (IdP) esterno, l'IdP è configurato con SCIM per sincronizzare l'archivio di identità dal gestore dell'IdP all'archivio di identità nel Centro identità IAM.

Per utilizzare le identità delle directory aziendali con S3 Access Grants, procedi come segue:
-
Configura il provisioning automatico nel Centro identità IAM per sincronizzare le informazioni su utenti e gruppi dal tuo gestore dell'identità digitale (IdP) nel Centro identità IAM.
-
Configura l'origine di identità esterna nel Centro identità IAM come emittente del token affidabile. Per ulteriori informazioni, consulta la pagina Propagazione delle identità attendibili tra le applicazioni nella Guida per l'utente di AWS IAM Identity Center .
-
Associa l'istanza S3 Access Grants all'istanza del Centro identità IAM. Puoi farlo quando crei la tua istanza S3 Access Grants. Se hai già creato la tua istanza S3 Access Grants, consulta Associazione o annullamento dell'associazione dell'istanza del Centro identità IAM.
In che modo le identità delle directory possono accedere ai dati S3
Supponiamo di avere utenti della directory aziendale che devono accedere ai dati S3 tramite un'applicazione aziendale, ad esempio un'applicazione di visualizzazione di documenti, integrata con il tuo IdP esterno (ad esempio, Okta) per autenticare gli utenti. L'autenticazione dell'utente in queste applicazioni viene in genere effettuata tramite reindirizzamenti nel browser web dell'utente. Poiché gli utenti presenti nella directory non sono principali IAM, l'applicazione necessita di credenziali IAM con cui richiamare l'operazione API GetDataAccess
S3 Access Grants per ottenere le credenziali di accesso ai dati S3 per conto degli utenti. A differenza degli utenti e dei ruoli IAM che ottengono le credenziali da soli, l'applicazione necessita di un modo per rappresentare un utente della directory, che non è mappato a un ruolo IAM, in modo che l'utente possa accedere ai dati tramite S3 Access Grants.
Questa transizione, da utente di directory autenticato a chiamante IAM in grado di effettuare richieste a S3 Access Grants per conto dell'utente della directory, viene effettuata dall'applicazione tramite la funzionalità Emittente del token affidabile del Centro identità IAM. L'applicazione, dopo aver autenticato l'utente della directory, dispone di un token di identità dell'IdP (ad esempio, Okta) che rappresenta l'utente della directory in base a Okta. La configurazione dell'emittente di token affidabile in IAM Identity Center consente all'applicazione di scambiarlo Okta token (il Okta il tenant è configurato come «emittente affidabile») per un token di identità diverso da IAM Identity Center che rappresenterà in modo sicuro l'utente della directory all'interno. Servizi AWS L'applicazione dati assumerà quindi un ruolo IAM, fornendo il token dell'utente della directory proveniente dal Centro identità IAM come contesto aggiuntivo. L'applicazione può utilizzare la sessione IAM risultante per chiamare S3 Access Grants. Il token rappresenta sia l'identità dell'applicazione (il principale IAM stesso) sia l'identità dell'utente della directory.
Il passaggio principale di questa transizione è lo scambio di token. L'applicazione esegue questo scambio di token chiamando l'operazione API CreateTokenWithIAM
nel Centro identità IAM. Naturalmente, anche questa è una chiamata AWS API e richiede che un preside IAM la firmi. Il principale IAM che effettua questa richiesta è in genere un ruolo IAM associato all'applicazione. Ad esempio, se l'applicazione viene eseguita su Amazon EC2, la CreateTokenWithIAM
richiesta viene in genere eseguita dal ruolo IAM associato all' EC2 istanza su cui viene eseguita l'applicazione. Il risultato di una CreateTokenWithIAM
chiamata riuscita è un nuovo token di identità, che verrà riconosciuto all'interno Servizi AWS.
Il passaggio successivo, prima che l'applicazione possa chiamare GetDataAccess
per conto dell'utente della directory, prevede che l'applicazione ottenga una sessione IAM che includa l'identità dell'utente della directory. L'applicazione esegue questa operazione con una AssumeRole
richiesta AWS Security Token Service (AWS STS) che include anche il token IAM Identity Center per l'utente della directory come contesto di identità aggiuntivo. Questo contesto aggiuntivo consente al Centro identità IAM di propagare l'identità dell'utente della directory alla fase successiva. Il ruolo IAM assunto dall'applicazione è il ruolo che necessiterà delle autorizzazioni IAM per chiamare l'operazione GetDataAccess
.
Dopo aver assunto il ruolo IAM di portatore di identità con il token del Centro identità IAM per l'utente della directory come contesto aggiuntivo, l'applicazione dispone ora di tutti gli elementi necessari per inviare una richiesta firmata a GetDataAccess
per conto dell'utente della directory autenticato.
La propagazione dei token si basa sui seguenti passaggi:
Creazione di un'applicazione del Centro identità IAM
Innanzitutto, crea una nuova applicazione nel Centro identità IAM. Questa applicazione utilizzerà un modello che consente al Centro identità IAM di identificare il tipo di impostazioni dell'applicazione che è possibile utilizzare. Il comando per creare l'applicazione richiede di fornire il nome della risorsa Amazon (ARN) dell'istanza del Centro identità IAM, un nome di applicazione e il nome della risorsa Amazon (ARN) del provider dell'applicazione. Il provider dell'applicazione è il SAML o il provider OAuth dell'applicazione che l'applicazione utilizzerà per effettuare chiamate a IAM Identity Center.
Per utilizzare il seguente comando di esempio, sostituisci
con le tue informazioni.user input
placeholders
aws sso-admin create-application \ --instance-arn "arn:aws:sso:::instance/ssoins-ssoins-
1234567890abcdef
" \ --application-provider-arn "arn:aws:sso::aws:applicationProvider/custom
" \ --nameMyDataApplication
Risposta:
{ "ApplicationArn": "arn:aws:sso::
123456789012
:application/ssoins-ssoins-1234567890abcdef
/apl-abcd1234a1b2c3d
" }
Creazione di un emittente del token affidabile
Ora che hai la tua applicazione del Centro identità IAM, il passaggio successivo consiste nel configurare un emittente del token affidabile che verrà utilizzato per scambiare i valori IdToken
del tuo gestore dell'identità digitale con i token del Centro identità IAM. Per completare questa fase, sono necessari i seguenti elementi:
-
L'URL dell'emittente del gestore dell'identità
-
Il nome emittente del token affidabile
-
Il percorso dell'attributo claim
-
Il percorso dell'attributo identity store
-
L'opzione di recupero JSON Web Key Set (JWKS)
Il percorso dell'attributo claim è l'attributo del gestore delle identità che verrà utilizzato per mappare l'attributo identity store. Normalmente, il percorso dell'attributo claim è l'indirizzo e-mail dell'utente, ma è possibile utilizzare altri attributi per eseguire la mappatura.
Crea un file denominato oidc-configuration.json
con le informazioni seguenti. Per utilizzare questo file, sostituisci
con le tue informazioni specifiche.user input
placeholders
{ "OidcJwtConfiguration": { "IssuerUrl": "
https://login.microsoftonline.com/a1b2c3d4-abcd-1234-b7d5-b154440ac123/v2.0
", "ClaimAttributePath": "preferred_username
", "IdentityStoreAttributePath": "userName
", "JwksRetrievalOption": "OPEN_ID_DISCOVERY
" } }
Per creare l'emittente del token affidabile, esegui questo comando. Per utilizzare questo comando di esempio, sostituisci
con le tue informazioni.user input placeholders
aws sso-admin create-trusted-token-issuer \ --instance-arn "arn:aws:sso:::instance/ssoins-
1234567890abcdef
" \ --nameMyEntraIDTrustedIssuer
\ --trusted-token-issuer-typeOIDC_JWT
\ --trusted-token-issuer-configuration file://./oidc-configuration
.json
Risposta
{
"TrustedTokenIssuerArn": "arn:aws:sso::123456789012
:trustedTokenIssuer/ssoins-1234567890abcdef
/tti-43b4a822-1234-1234-1234-a1b2c3d41234
"
}
Connessione dell'applicazione del Centro identità IAM con l'emittente del token affidabile
L'emittente del token affidabile richiede alcune altre impostazioni di configurazione per funzionare. Imposta i destinatari di cui si fiderà l'emittente del token affidabile. I destinatari rappresentano il valore all'interno di IdToken
che è identificato dalla chiave e può essere trovato nelle impostazioni del gestore dell'identità. Per esempio:
1234973b-abcd-1234-abcd-345c5a9c1234
Crea un file denominato grant.json
che abbia il seguente contenuto. Per utilizzare questo file, modifica i destinatari in modo che corrispondano alle impostazioni del tuo gestore dell'identità e fornisci il nome della risorsa Amazon (ARN) dell'emittente del token affidabile che è stato restituito dal comando precedente.
{ "JwtBearer": { "AuthorizedTokenIssuers": [ { "TrustedTokenIssuerArn": "arn:aws:sso::
123456789012
:trustedTokenIssuer/ssoins-1234567890abcdef
/tti-43b4a822-1234-1234-1234-a1b2c3d41234
", "AuthorizedAudiences": [ "1234973b-abcd-1234-abcd-345c5a9c1234
" ] } ] } }
Esegui il seguente comando di esempio. Per utilizzare questo comando, sostituisci
con le tue specifiche informazioni.user input placeholders
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
\
Questo comando configura l'emittente del token affidabile in modo che consideri attendibili i destinatari presenti nel file grant.json
e li colleghi all'applicazione creata nel primo passaggio per lo scambio di token del tipo jwt-bearer
. La stringa urn:ietf:params:oauth:grant-type:jwt-bearer
non è una stringa arbitraria. È uno spazio dei nomi registrato nei profili di asserzione OAuth JSON Web Token (JWT). Puoi trovare ulteriori informazioni su questo spazio dei nomi in RFC 7523
Successivamente, utilizza il seguente comando per impostare gli ambiti che l'emittente del token affidabile includerà nello scambio dei valori IdToken
dal tuo provider dell'identità. Per S3 Access Grants, il valore del parametro --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"
L'ultimo passaggio consiste nell'allegare una policy delle risorse all'applicazione del Centro identità IAM. Questa policy consentirà al ruolo IAM dell'applicazione di effettuare richieste all'operazione API sso-oauth:CreateTokenWithIAM
e ricevere i valori IdToken
dal Centro identità IAM.
Crea un file denominato authentication-method.json
che abbia il seguente contenuto. Sostituisci
con l'ID del tuo account.123456789012
{ "Iam": { "ActorPolicy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:role/webapp" }, "Action": "sso-oauth:CreateTokenWithIAM", "Resource": "*" } ] } } }
Per collegare la policy all'applicazione del Centro identità IAM, esegui il comando:
aws sso-admin put-application-authentication-method \ --application-arn "arn:aws:sso::
123456789012
:application/ssoins-ssoins-1234567890abcdef
/apl-abcd1234a1b2c3d
" \ --authentication-method-typeIAM
\ --authentication-method file://./authentication-method.json
Questo completa le impostazioni di configurazione per l'utilizzo di S3 Access Grants con gli utenti della directory tramite un'applicazione web. Puoi testare questa configurazione direttamente nell'applicazione oppure puoi chiamare l'operazione API CreateTokenWithIAM
utilizzando il seguente comando da un ruolo IAM consentito nella policy dell'applicazione del Centro identità IAM:
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
La risposta sarà simile alla seguente:
{
"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"
]
}
Se decodifichi il valore IdToken
codificato con base64, puoi vedere le coppie chiave-valore in formato JSON. La chiave sts:identity_context
contiene il valore che l'applicazione deve inviare nella richiesta sts:AssumeRole
per includere le informazioni sull'identità dell'utente della directory. Di seguito è riportato un esempio di IdToken
decodificato:
{
"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
}
Puoi ottenere il valore da sts:identity_context
e trasmettere queste informazioni in una chiamata sts:AssumeRole
. Di seguito è riportato un esempio di sintassi CLI. Il ruolo da assumere è un ruolo temporaneo con autorizzazioni per richiamare 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
"
Ora puoi utilizzare le credenziali ricevute da questa chiamata per richiamare l'operazione API s3:GetDataAccess
e ricevere le credenziali finali con accesso alle risorse S3.