Autorizzazioni per GetFederationToken - AWS Identity and Access Management

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'GetFederationTokenoperazione 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.

Utente IAM Le illustrazioni seguenti mostrano segni di spunta per indicare che le autorizzazioni di sessione sono l'intersezione tra i criteri basati sull'identità dell'utente e i criteri di sessione. Le autorizzazioni di sessione possono anche essere l'intersezione tra la politica basata sull'identità dell'utente e le politiche basate sulle risorse.

Esempio: assegnazione delle autorizzazioni tramite GetFederationToken

È possibile utilizzare l'GetFederationTokenAPIazione 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-appIAMutente 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 - Sample Java Web Application.

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'Principalelemento 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-appIAMutente, 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.