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) in. 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 API operazioni, puoi usare uno dei AWS SDKs
Le AWS STS API operazioni 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 i criteri di sessione e i tag di sessione a livello di codice utilizzando le operazioni. AWS STS 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 Passare i tag di sessione in AWS STS.
Nota
La dimensione del token di sessione restituito dalle AWS STS API operazioni 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
È possibile inviare AWS STS API chiamate a un endpoint globale o a uno degli endpoint regionali. Se scegli un endpoint più vicino a te, puoi 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 stai usando uno dei vari AWS SDKs, usa quel SDK metodo per specificare una regione prima di effettuare la API chiamata. Se crei HTTP API richieste manualmente, devi indirizzare tu stesso la richiesta all'endpoint corretto. Per ulteriori informazioni, consulta la sezione AWS STS relativa alle regioni e agli endpoint e la sezione Gestire AWS STS in un Regione AWS.
Di seguito sono elencate le API operazioni 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'AssumeRole
APIoperazione è utile per consentire IAM agli utenti 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. È anche utile come mezzo per ottenere temporaneamente un accesso privilegiato, ad esempio per fornire l'autenticazione a più fattori (). MFA È necessario richiamarlo utilizzando credenziali attiveAPI. Per sapere chi può chiamare questa operazione, vedere Confronta le credenziali AWS STS. Per ulteriori informazioni, consulta Crea un ruolo per concedere le autorizzazioni a un utente IAM e APIAccesso sicuro 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 AWS credenziali 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 mostrato nell'esempio precedente è la versione con URL codifica della seguente policy:
{"Version":"2012-10-17","Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}
Il parametro AUTHPARAMS
nell'esempio è un segnaposto per la propria firma. Una firma è l'informazione di autenticazione che è necessario includere nelle richieste. AWS HTTP API Ti consigliamo di utilizzarle AWS SDKs
Oltre alle credenziali di sicurezza temporanee, la risposta include Amazon Resource Name (ARN) per l'utente federato e l'ora 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 policy 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'AssumeRoleWithWebIdentity
APIoperazione restituisce un set di credenziali di AWS sicurezza 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 chiami
AssumeRoleWithWebIdentity
, AWS convalida il token presentato verificando la firma digitale utilizzando le chiavi pubbliche rese disponibili tramite il keyset web del JSON tuo IdP (). JWKS Se il token è valido e tutte le condizioni stabilite nella policy di fiducia del IAM ruolo sono soddisfatte, ti AWS 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 ARN del ruolo e il 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 AWS API chiamate. Questa è la stessa procedura utilizzata per effettuare una AWS API chiamata 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, SDK dispone di provider di credenziali in grado di gestire le chiamate AssumeRoleWithWebIdentity
e l'aggiornamento delle AWS credenziali prima della loro scadenza. Per ulteriori informazioni, consulta i provider di credenziali standardizzati AWS SDKs and Tools nella and Tools Reference Guide.AWS SDKs
Richiesta di credenziali tramite un provider di identità 2.0 SAML
L'AssumeRoleWithSAML
APIoperazione restituisce un set di credenziali di sicurezza temporanee per gli utenti federati autenticati dal sistema di identità esistente dell'organizzazione. Gli utenti devono inoltre utilizzare SAML
-
Chiama
AssumeRoleWithSAML
l'operazione.Si tratta di una chiamata non firmata, il che significa che non è necessario autenticare le credenziali AWS di 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 si chiama
AssumeRoleWithSAML
, AWS verifica l'autenticità dell'asserzione. SAML Supponendo che il provider di identità convalidi l'asserzione, AWS 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 il ruolo ARN assunto.
-
Un
Audience
valore che contiene il valore dell'Recipient
attributo dell'SubjectConfirmationData
elemento dell'SAMLasserzione. -
Un
Issuer
valore che contiene il valore dell'Issuer
elemento dell'SAMLasserzione. -
Un
NameQualifier
elemento che contiene un valore hash creato a partire dalIssuer
valore, dall' Account AWS ID e dal nome descrittivo del SAML provider. Quando combinato con l'elementoSubject
, possono identificare in modo univoco l'utente federato. -
Un
Subject
elemento che contiene il valore dell'NameID
elemento nell'Subject
elemento dell'SAMLasserzione. -
Un elemento
SubjectType
che indica il formato dell'elementoSubject
. Il valore può esserepersistent
transient
, o il risultato completoFormat
URI degliNameID
elementiSubject
e utilizzati nell'SAMLasserzione. 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 AWS API chiamate. Questa è la stessa procedura utilizzata per effettuare una AWS API chiamata 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 A mazonSTSCredentials 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'GetFederationToken
APIoperazione restituisce un set di credenziali di sicurezza temporanee per gli utenti federati. Ciò API differisce dal AssumeRole
fatto che il periodo di scadenza predefinito è notevolmente più lungo (12 ore anziché 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 specifico. IAM 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 federa l'utente chiamante per la durata specificata con i criteri di sessione ARN 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
La politica ARN mostrata nell'esempio precedente include la seguente URL codifica: ARN
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. AWS HTTP API Ti consigliamo di utilizzarla AWS SDKs
Oltre alle credenziali di sicurezza temporanee, la risposta include Amazon Resource Name (ARN) per l'utente federato e l'ora 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 policy 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 si include una policy per l'utente federato, le credenziali di sicurezza temporanee non concederanno le autorizzazioni. 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 tal caso, dovresti assicurarti che il bucket abbia una politica che corrisponda a ARN quella di Susan, ad esempio. ARN arn:aws:sts::111122223333:federated-user/Susan
Richiesta di credenziali per gli utenti in ambienti non attendibili
L'GetSessionToken
APIoperazione restituisce un set di credenziali di sicurezza temporanee a un utente esistente. IAM Ciò è utile per fornire una maggiore sicurezza, ad esempio consentire le AWS richieste solo quando MFA è abilitata per l'IAMutente. Poiché le credenziali sono temporanee, forniscono maggiore sicurezza quando si ha 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 specificoIAM. 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.
Come 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 devi includere nelle AWS HTTP API richieste. Ti consigliamo di utilizzarle 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 SerialNumber
TokenCode
valori per 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 di autenticazione. MFA Le credenziali di sicurezza temporanee possono quindi essere utilizzate per accedere alle API operazioni o ai AWS siti Web MFA protetti finché l'MFAautenticazione è valida.
L'esempio seguente mostra una GetSessionToken
richiesta che include un codice di MFA verifica e un 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. AWS HTTP API Ti consigliamo di utilizzarle AWS SDKs