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à.
Autorizzazioni per GetFederationToken
L'GetFederationToken
operazione viene richiamata da un IAM utente e restituisce credenziali temporanee per quell'utente. Questa operazione consolida l'utente. Le autorizzazioni assegnate a un utente federato sono definite in una di due posizioni:
-
Le politiche di sessione passate come parametro della
GetFederationToken
API chiamata. (Questo è più comune). -
Una policy basate sulle risorse che nomina esplicitamente l'utente federato nell'elemento
Principal
della policy. (Questo è meno comune).
Le policy di sessione sono policy avanzate che vengono passate come parametri quando si crea una sessione temporanea a livello di programma. Quando crei una sessione per l'utente federato e passi le policy di sessione, le autorizzazioni della sessione risultante sono l'intersezione della policy basata su identità dell'utente e le policy di sessione. Non puoi utilizzare la policy di sessione per concedere autorizzazioni maggiori rispetto a quelle consentite dalla policy basata su identità dell'utente che viene federato.
Nella maggior parte dei casi, se non si trasmette una policy con la GetFederationToken
API chiamata, le credenziali di sicurezza temporanee risultanti non dispongono di autorizzazioni. Tuttavia, una policy basata sulle risorse è in grado di fornire ulteriori autorizzazioni per la sessione. Puoi accedere a una risorsa con una policy basata sulle risorse che specifica la sessione come l'entità principale consentita.
Le seguenti immagini mostrano una rappresentazione visiva di come le policy interagiscono per determinare le autorizzazioni per le credenziali di sicurezza provvisorie restituite da una chiamata a GetFederationToken
.
Esempio: assegnazione delle autorizzazioni tramite GetFederationToken
È possibile utilizzare l'GetFederationToken
APIazione con diversi tipi di politiche. Di seguito sono illustrati alcuni esempi.
Politica allegata all'IAMutente
In questo esempio, disponi di un'applicazione client basata sul browser che si avvale di due servizi Web di back-end. Un servizio di back-end è il tuo server di autenticazione che utilizza un sistema di identità per autenticare l'applicazione client. L'altro servizio di back-end è un servizio AWS che fornisce alcune delle funzionalità dell'applicazione client. L'applicazione client viene autenticata mediante il tuo server, il quale crea o recupera la policy di autorizzazione appropriata. Il server chiama quindi GetFederationToken
API per ottenere credenziali di sicurezza temporanee e restituisce tali credenziali all'applicazione client. L'applicazione client può quindi effettuare richieste direttamente al AWS servizio con le credenziali di sicurezza temporanee. Questa architettura consente all'applicazione client di effettuare AWS richieste senza incorporare credenziali a lungo termine AWS .
Il server di autenticazione li chiama GetFederationToken
API con le credenziali di sicurezza a lungo termine di un IAM utente denominato. token-app
Tuttavia, le credenziali IAM utente a lungo termine rimangono sul server e non vengono mai distribuite al client. La seguente politica di esempio è allegata all'token-app
IAMutente e definisce il set più ampio di autorizzazioni di cui avranno bisogno gli utenti federati (client). Si noti che l'autorizzazione sts:GetFederationToken
è necessaria per il servizio di autenticazione per ottenere le credenziali di sicurezza provvisorie per gli utenti federati.
Nota
AWS fornisce un'applicazione Java di esempio per questo scopo, che è possibile scaricare qui: Token Vending Machine for Identity Registration -
Esempio di politica allegata all'IAMutente token-app
che chiama GetFederationToken
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:GetFederationToken", "Resource": "*" }, { "Effect": "Allow", "Action": "dynamodb:ListTables", "Resource": "*" }, { "Effect": "Allow", "Action": "sqs:ReceiveMessage", "Resource": "*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "*" }, { "Effect": "Allow", "Action": "sns:ListSubscriptions", "Resource": "*" } ] }
La politica precedente concede diverse autorizzazioni all'utente. IAM Tuttavia, questa policy da sola non concede alcuna autorizzazione all'utente federato. Se questo IAM utente chiama GetFederationToken
e non passa una policy come parametro della API chiamata, l'utente federato risultante non dispone di autorizzazioni valide.
Policy di sessione passata come parametro
Il modo più comune per garantire che all'utente federato venga assegnata l'autorizzazione appropriata consiste nel trasmettere le politiche di sessione nella chiamata. GetFederationToken
API Ampliando l'esempio precedente, immagina che GetFederationToken
venga chiamato con le credenziali dell'IAMutente. token-app
Quindi immagina che la seguente politica di sessione venga passata come parametro della API chiamata. L'utente federato risultante dispone dell'autorizzazione per elencare i contenuti del bucket Amazon S3 denominato productionapp
. L'utente non può eseguire le operazioni GetObject
, PutObject
e DeleteObject
di Amazon S3 su elementi nel bucket productionapp
.
All'utente federato vengono assegnate queste autorizzazioni perché le autorizzazioni sono l'intersezione tra le politiche IAM utente e le politiche di sessione approvate.
L'utente federato non poteva eseguire azioni in AmazonSNS, AmazonSQS, Amazon DynamoDB o in nessun bucket S3 tranne. productionapp
Queste azioni vengono negate anche se tali autorizzazioni sono concesse all'IAMutente associato alla chiamata. GetFederationToken
Esempio di politica di sessione passata come parametro di chiamata GetFederationToken
API
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::productionapp"] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::productionapp/*"] } ] }
Policy basate su risorse
Alcune AWS risorse supportano politiche basate sulle risorse e queste politiche forniscono un altro meccanismo per concedere le autorizzazioni direttamente a un utente federato. Solo alcuni servizi supportano politiche basate sulle risorse AWS . Ad esempio, Amazon S3 dispone di bucket, Amazon SNS ha argomenti e Amazon SQS ha code a cui è possibile allegare policy. Per un elenco di tutti i servizi che supportano le policy basate su risorse, consulta AWS servizi che funzionano con IAM e analizza la colonna "Policy basate su risorse" delle tabelle. Puoi usare policy basate sulle risorse per assegnare le autorizzazioni direttamente a un utente federato. A tale scopo, specifica l'Amazon Resource Name (ARN) dell'utente federato nell'Principal
elemento della policy basata sulle risorse. Ciò viene illustrato nell'esempio seguente espandendo gli esempi precedenti e utilizzando un bucket S3 denominato productionapp
.
La policy basata sulle risorse riportata di seguito è collegata al bucket. La policy di questo bucket consente a un utente federato di nome Carol di accedere al bucket. Quando la policy di esempio descritta in precedenza viene allegata all'token-app
IAMutente, l'utente federato di nome Carol è autorizzato a eseguire le azioni e le azioni sul s3:GetObject
bucket s3:PutObject
denominato. s3:DeleteObject
productionapp
Ciò è vero anche quando non viene passato alcun criterio di sessione come parametro della chiamata. GetFederationToken
API Questo perché in questo caso l'utente federato che si chiama Carol ha ottenuto esplicitamente le autorizzazioni dalla seguente policy basate su risorse.
Ricorda che a un utente federato vengono concesse le autorizzazioni solo quando tali autorizzazioni sono concesse esplicitamente sia all'utente che all'IAMutente federato. Possono essere concesse (all'interno dell'account) anche da una policy basata su risorse che nomini esplicitamente l'utente federato nell'elemento Principal
della policy, come nell'esempio seguente.
Esempio di policy del bucket che consente l'accesso all'utente federato
{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "arn:aws:sts::
account-id
:federated-user/Carol"}, "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::productionapp/*"] } }
Per ulteriori informazioni su come vengono valutate le policy, consulta la sezione Logica di valutazione delle policy.