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à.
Richiedere credenziali di sicurezza temporanee
Per richiedere credenziali di sicurezza temporanee, puoi utilizzare le operazioni AWS Security Token Service (AWS STS) nell' AWS API. Queste includono operazioni per creare e fornire a utenti affidabili credenziali di sicurezza temporanee in grado di controllare l'accesso alle AWS risorse. Per ulteriori informazioni su AWS STS, vedereCredenziali di sicurezza temporanee in IAM. Per informazioni sui diversi metodi che si possono utilizzare per richiedere credenziali di sicurezza temporanee assumendo un ruolo, consultare Metodi per assumere un ruolo.
Per chiamare le operazioni API, puoi utilizzare uno dei AWS SDKs
Le operazioni AWS STS API creano una nuova sessione con credenziali di sicurezza temporanee che includono una coppia di chiavi di accesso e un token di sessione. La coppia di chiavi di accesso è composta da un ID chiave di accesso e da una chiave segreta. Gli utenti (o un'applicazione che l'utente esegue) possono utilizzare queste credenziali per accedere alle risorse. È possibile creare una sessione di ruolo e passare policy di sessione e tag di sessione in modo programmatico utilizzando AWS STS le operazioni API. Le autorizzazioni della sessione risultanti sono l'intersezione tra le policy basate sull'identità del ruolo e le policy di sessione. Per ulteriori informazioni sulle policy di sessione, consulta Policy di sessione. Per ulteriori informazioni sui tag di sessione, consultare Passa i tag di sessione AWS STS.
Nota
La dimensione del token di sessione restituito dalle operazioni AWS STS API non è fissa. È consigliabile di non effettuare alcuna supposizione sulle dimensioni massime. La dimensione tipica dei token è inferiore a 4.096 byte, ma essa può variare.
Utilizzo AWS STS con AWS le regioni
Puoi inviare chiamate AWS STS API a un endpoint globale o a uno degli endpoint regionali. Se si seleziona un endpoint vicino, è possibile ridurre la latenza e migliorare le prestazioni delle chiamate API. Se non è più possibile comunicare con l'endpoint originale è anche possibile scegliere di indirizzare le chiamate verso un endpoint regionale alternativo. Se utilizzi uno dei vari AWS SDKs, utilizza il metodo SDK per specificare una regione prima di effettuare la chiamata API. Se costruiscono manualmente richieste API HTTP, è necessario indirizzare la richiesta all'endpoint corretto. Per ulteriori informazioni, consulta la sezione AWS STS relativa alle regioni e agli endpoint e la sezione Gestisci AWS STS in un Regione AWS.
Di seguito sono elencate le operazioni API che è possibile utilizzare per acquisire credenziali temporanee da utilizzare nell' AWS ambiente e nelle applicazioni.
Richiesta di credenziali per la delega tra account e federazione tramite un gestore di identità personalizzato
L'operazione AssumeRole
API è utile per consentire agli utenti IAM esistenti di accedere a AWS risorse a cui non hanno già accesso. Ad esempio, l'utente potrebbe aver bisogno di accedere alle risorse in un altro Account AWS. Inoltre, è utile come strumento per ottenere temporaneamente l'accesso privilegiato, ad esempio per fornire l'autenticazione a più fattori (MFA). È necessario chiamare questa API utilizzando le credenziali attive. Per sapere chi può chiamare questa operazione, vedere Confronta le AWS STS credenziali. Per ulteriori informazioni, consultare Crea un ruolo per concedere le autorizzazioni a un utente IAM e Accesso sicuro alle API con MFA.
Per richiedere credenziali di sicurezza temporanee per la delega tra account e federazione tramite un gestore di identità personalizzato
-
Effettua l'autenticazione con le tue credenziali AWS di sicurezza. Questa chiamata deve essere effettuata utilizzando le credenziali di sicurezza AWS .
-
Chiama
AssumeRole
l'operazione.
L'esempio seguente mostra una richiesta di esempio e la risposta utilizzando AssumeRole
. Questa richiesta di esempio assume il ruolo demo
per la durata specificata, inclusi policy di sessione, tag di sessione, ID esterno e identità di origine. La sessione risultante è denominata John-session
.
Esempio Richiesta di esempio
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=John-session &RoleArn=arn:aws::iam::123456789012:role/demo &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &ExternalId=123ABC &SourceIdentity=DevUser123 &AUTHPARAMS
Il valore della policy illustrato nell'esempio precedente è la versione di codifica URL della policy seguente:
Il parametro AUTHPARAMS
nell'esempio è un segnaposto per la propria firma. Una firma è l'informazione di autenticazione che devi includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla AWS SDKs
Oltre alle credenziali di sicurezza temporanee, la risposta include l'Amazon Resource Name (ARN) per l'utente federato e il periodo di scadenza delle credenziali.
Esempio Example response
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
<SessionToken>
AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
</SessionToken>
<SecretAccessKey>
wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
</SecretAccessKey>
<Expiration>2019-07-15T23:28:33.359Z</Expiration>
<AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
<Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
<AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>
Nota
Una AWS conversione comprime le politiche di sessione e i tag di sessione passati in un formato binario compresso con un limite separato. La richiesta può non essere eseguita correttamente a causa di questo limite anche se il testo in chiaro soddisfa gli altri requisiti. L'elemento della risposta PackedPolicySize
indica in percentuale la consistenza di policy e tag della richiesta rispetto al limite di dimensione superiore.
Richiesta di credenziali tramite un provider OIDC
L'operazione API AssumeRoleWithWebIdentity
restituisce un set di credenziali di sicurezza AWS temporanee in cambio di un JSON Web Token (JWT). Ciò include provider di identità pubblici, come Login with Amazon, Facebook, Google, e provider JWTs che rilasciano problemi compatibili con il rilevamento di OpenID Connect (OIDC), come GitHub actions o Azure Devops. Per ulteriori informazioni, consulta Federazione OIDC.
Nota
Le richieste AssumeRoleWithWebIdentity
non sono firmate e non richiedono credenziali AWS .
Richiesta di credenziali tramite un provider OIDC
-
Chiama
AssumeRoleWithWebIdentity
l'operazione.Quando effettui una chiamata
AssumeRoleWithWebIdentity
, AWS convalida il token presentato verificando la firma digitale utilizzando le chiavi pubbliche rese disponibili tramite il keyset web JSON (JWKS) del tuo IdP. Se il token è valido e tutte le condizioni stabilite nella policy di fiducia dei ruoli IAM sono soddisfatte, AWS ti restituisce le seguenti informazioni:-
Un set di credenziali di sicurezza temporanee. Consistono in un ID chiave di accesso, in una Secret Access Key e in un token di sessione.
-
l'ID del ruolo e l'ARN del ruolo assunto.
-
Un valore
SubjectFromWebIdentityToken
che contiene l'ID utente univoco.
-
-
L'applicazione può quindi utilizzare le credenziali di sicurezza temporanee restituite nella risposta alle chiamate AWS API. Si tratta dello stesso processo utilizzato per effettuare una chiamata AWS API con credenziali di sicurezza a lungo termine. La differenza è che è necessario includere il token di sessione, che consente di AWS verificare che le credenziali di sicurezza temporanee siano valide.
L'applicazione deve memorizzare nella cache le credenziali restituite da AWS STS e aggiornarle secondo necessità. Se l'applicazione è stata creata utilizzando un AWS SDK, l'SDK dispone di provider di credenziali in grado di gestire le chiamate AssumeRoleWithWebIdentity
e l'aggiornamento AWS delle credenziali prima della scadenza. Per ulteriori informazioni, consulta i provider di credenziali standardizzati AWS SDKs e Tools nella Guida di riferimento agli strumenti.AWS SDKs
Richiesta di credenziali tramite un gestore di identità SAML 2.0
L'operazione AssumeRoleWithSAML
API restituisce un set di credenziali di sicurezza temporanee per i principali federati SAML autenticati dal sistema di identità esistente dell'organizzazione. Gli utenti devono utilizzare inoltre SAML
-
Chiama
AssumeRoleWithSAML
l'operazione.Si tratta di una chiamata non firmata, il che significa che non è necessario autenticare le credenziali di AWS sicurezza prima di effettuare la richiesta.
Nota
Una chiamata a
AssumeRoleWithSAML
non è firmata (crittografata). Pertanto, è opportuno includere le policy di sessione facoltative solo se la richiesta viene trasmessa attraverso un intermediario affidabile. In questo caso, qualcuno potrebbe modificare la policy per rimuovere le limitazioni. -
Quando chiami
AssumeRoleWithSAML
, AWS verifica l'autenticità dell'asserzione SAML. Supponendo che il provider di identità convalidi l'asserzione, AWS ti restituisce le seguenti informazioni:-
Un set di credenziali di sicurezza temporanee. Consistono in un ID chiave di accesso, in una Secret Access Key e in un token di sessione.
-
l'ID del ruolo e l'ARN del ruolo assunto.
-
Un valore
Audience
che contiene il valore dell'attributoRecipient
dell'elementoSubjectConfirmationData
dell'asserzione SAML. -
Un valore
Issuer
che contiene il valore dell'attributoIssuer
dell'elemento dell'asserzione SAML. -
Un
NameQualifier
elemento che contiene un valore hash creato a partire dalIssuer
valore, dall' Account AWS ID e dal nome descrittivo del provider SAML. Se combinati con l'Subject
elemento, possono identificare in modo univoco il principale federato SAML. -
Un elemento
Subject
che contiene il valore dell'elementoNameID
nell'elementoSubject
dell'asserzione SAML. -
Un elemento
SubjectType
che indica il formato dell'elementoSubject
. Il valore può esserepersistent
,transient
o il pienoFormat
URI dagli elementiSubject
eNameID
utilizzati nell'asserzione SAML. Per ulteriori informazioni sull'attributoFormat
dell'elementoNameID
, consulta Configurare le asserzioni SAML per la risposta di autenticazione.
-
-
Utilizza le credenziali di sicurezza temporanee restituite nella risposta per effettuare chiamate API. AWS Questa è la stessa procedura utilizzata per effettuare una chiamata AWS API con credenziali di sicurezza a lungo termine. La differenza è che è necessario includere il token della sessione, che consente ad AWS di verificare che le credenziali di sicurezza provvisorie siano valide.
L'app deve memorizzare le credenziali. Come impostazione predefinita, le credenziali scadono dopo un'ora. Se non utilizzi l'azione Amazon STSCredentials ProviderAssumeRoleWithSAML
nuovamente la chiamata. Chiamare questa operazione per ottenere un nuovo set di credenziali di sicurezza provvisorie prima che i vecchi scadere.
Richiesta di credenziali tramite un gestore di identità personalizzato
L'operazione GetFederationToken
API restituisce un set di credenziali di sicurezza temporanee per i principali utenti AWS STS federati. Questa API differisce da AssumeRole
per il fatto che il periodo di scadenza predefinito è notevolmente più lungo (12 ore invece di un'ora). Inoltre, è possibile utilizzare il parametro DurationSeconds
per specificare una durata per le credenziali di sicurezza temporanee perché rimanga valido. Le credenziali risultanti sono valide per la durata specificata, da 900 secondi (15 minuti) a un massimo di 129.600 secondi (36 ore). Il periodo di scadenza più lungo può aiutare a ridurre il numero di chiamate AWS perché non è necessario ottenere nuove credenziali con la stessa frequenza.
-
Effettua l'autenticazione con le credenziali di AWS sicurezza del tuo utente IAM specifico. Questa chiamata deve essere effettuata utilizzando credenziali di AWS sicurezza valide.
-
Chiama
GetFederationToken
l'operazione.
La chiamata GetFederationToken
restituisce le credenziali di sicurezza temporanee che consistono nel token di sessione, nella chiave di accesso, nella chiave segreta e nella scadenza. È possibile utilizzare GetFederationToken
se si desidera gestire le autorizzazioni nella propria organizzazione (ad esempio, utilizzando l'applicazione proxy per assegnare le autorizzazioni).
L'esempio seguente mostra una richiesta di esempio e la risposta che utilizza GetFederationToken
. Questa richiesta di esempio consente di federare l'utente chiamante per la durata specificata tramite l'ARN della policy di sessione e i tag di sessione. La sessione risultante è denominata Jane-session
.
Esempio Richiesta di esempio
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jane-session &PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &AUTHPARAMS
L'ARN della policy illustrato nell'esempio precedente include i seguenti ARN URL-encoded:
arn:aws:iam::123456789012:policy/Role1policy
Inoltre, si noti che il parametro &AUTHPARAMS
nell'esempio è inteso come segnaposto per le informazioni di autenticazione. Questa è la firma, che devi includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla AWS SDKs
Oltre alle credenziali di sicurezza temporanee, la risposta include l'Amazon Resource Name (ARN) per l'utente federato e il periodo di scadenza delle credenziali.
Esempio Example response
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
<SessionToken>
AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
</SessionToken>
<SecretAccessKey>
wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
</SecretAccessKey>
<Expiration>2019-04-15T23:28:33.359Z</Expiration>
<AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
<Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
<FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>
Nota
Una AWS conversione comprime le politiche di sessione e i tag di sessione passati in un formato binario compresso con un limite separato. La richiesta può non essere eseguita correttamente a causa di questo limite anche se il testo in chiaro soddisfa gli altri requisiti. L'elemento della risposta PackedPolicySize
indica in percentuale la consistenza di policy e tag della richiesta rispetto al limite di dimensione superiore.
AWS consiglia di concedere le autorizzazioni a livello di risorsa (ad esempio, si allega una policy basata sulle risorse a un bucket Amazon S3), è possibile omettere il parametro. Policy
Tuttavia, se non includi una policy per il principale utente AWS STS federato, le credenziali di sicurezza temporanee non concederanno alcuna autorizzazione. In questo caso, è necessario utilizzare le policy delle risorse per concedere all'utente federato l'accesso alle risorse AWS
.
Ad esempio, supponiamo che il tuo Account AWS numero sia 111122223333 e che tu disponga di un bucket Amazon S3 a cui desideri consentire l'accesso a Susan. Le credenziali di sicurezza temporanee di Susan non includono una policy per il bucket. In questo caso, è necessario accertarsi che il bucket disponga di una policy con un ARN corrisponda all'ARN di Susan, ad esempio arn:aws:sts::111122223333:federated-user/Susan
.
Richiesta di credenziali per gli utenti in ambienti non attendibili
L'operazione API GetSessionToken
restituisce un set di credenziali di sicurezza temporanee a un utente IAM esistente. Ciò è utile per fornire una maggiore sicurezza, ad esempio consentire le AWS richieste solo quando l'MFA è abilitata per l'utente IAM. Poiché le credenziali sono temporanee, forniscono maggiore sicurezza quando hai un utente IAM che accede alle risorse tramite un ambiente meno sicuro. Esempi di ambienti meno protetti includono dispositivi mobili o browser web.
-
Effettua l'autenticazione con le credenziali di AWS sicurezza del tuo utente IAM specifico. Questa chiamata deve essere effettuata utilizzando credenziali di AWS sicurezza valide.
-
Chiama
GetSessionToken
l'operazione. -
GetSessionToken
restituisce le credenziali di sicurezza temporanee, ossia un token di sessione, l'ID chiave di accesso e una chiave di accesso segreta.
Per impostazione predefinita, le credenziali di sicurezza temporanee per un utente IAM sono valide per un massimo di 12 ore. Tuttavia, è possibile richiedere una durata di soli 15 minuti o fino a 36 ore utilizzando il parametro DurationSeconds
. Per motivi di sicurezza, un token per un Utente root dell'account AWS è limitato a una durata di un'ora.
L'esempio seguente mostra una richiesta di esempio e la risposta utilizzando GetSessionToken
. La risposta include inoltre il periodo di scadenza delle credenziali di sicurezza temporanee.
Esempio Richiesta di esempio
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=1800 &AUTHPARAMS
Il parametro AUTHPARAMS
nell'esempio è un segnaposto per la propria firma. Una firma è l'informazione di autenticazione che è necessario includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla AWS SDKs
Esempio Example response
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
<SessionToken>
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
</SessionToken>
<SecretAccessKey>
wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
</SecretAccessKey>
<Expiration>2011-07-11T19:55:29.611Z</Expiration>
<AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>
Facoltativamente, la GetSessionToken
richiesta può includere TokenCode
valori per SerialNumber
la verifica dell' AWS autenticazione a più fattori (MFA). Se i valori forniti sono validi, AWS STS fornisce credenziali di sicurezza temporanee che includono lo stato dell'autenticazione MFA. Le credenziali di sicurezza temporanee possono quindi essere utilizzate per accedere alle operazioni o ai AWS siti Web dell'API protetti da MFA finché l'autenticazione MFA è valida.
L'esempio seguente mostra una richiesta GetSessionToken
, che include un codice di verifica MFA e il numero di serie del dispositivo.
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=7200 &SerialNumber=YourMFADeviceSerialNumber &TokenCode=123456 &AUTHPARAMS
Nota
La chiamata a AWS STS può essere diretta all'endpoint globale o a uno qualsiasi degli endpoint regionali su cui attivi. Account AWS Per ulteriori informazioni, consulta la sezione di AWS STS relativa alle regioni e agli endpoint.
Il parametro AUTHPARAMS
nell'esempio è un segnaposto per la propria firma. Una firma è l'informazione di autenticazione che devi includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla AWS SDKs