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à.
Utilizzo del controllo degli accessi basato su ruoli
I pool di identità di Amazon Cognito assegnano agli utenti autenticati una serie di credenziali temporanee con privilegi limitati per accedere alle tue risorse. AWS Le autorizzazioni per ogni utente sono controllate tramite i ruoli che crei. IAM Puoi definire le regole per scegliere il ruolo di ogni utente sulla base delle richieste nel token ID dell'utente. Puoi definire un ruolo di default per gli utenti autenticati. Puoi anche definire un IAM ruolo separato con autorizzazioni limitate per gli utenti ospiti che non sono autenticati.
Creazione dei ruoli per la mappatura dei ruoli
È importante aggiungere la policy di attendibilità appropriata per ogni ruolo, in modo che possa essere assunta da Amazon Cognito solo per gli utenti autenticati nel pool di identità. Di seguito viene riportato un esempio di suddetta policy di attendibilità:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Questa policy consente agli utenti federati di cognito-identity.amazonaws.com
(approvatore del token OpenID Connect) di assumere questo ruolo. Inoltre la policy limita l'aud
del token, in questo caso l'ID dei pool di identità, in base al pool di identità. Infine, la policy specifica che uno dei membri dell'array del amr
claim multivalore del token emesso dall'azione Amazon GetOpenIdToken
API Cognito ha il valore. authenticated
Concessione delle autorizzazioni per il passaggio di ruoli
Per consentire a un utente di impostare ruoli con autorizzazioni superiori alle autorizzazioni esistenti dell'utente su un pool di identità, concedigli l'iam:PassRole
autorizzazione a passare il ruolo a. set-identity-pool-roles
API Ad esempio, se l'utente non può scrivere su Amazon S3, ma il IAM ruolo che l'utente imposta nel pool di identità concede l'autorizzazione di scrittura ad Amazon S3, l'utente può impostare questo ruolo solo se l'iam:PassRole
autorizzazione è concessa per il ruolo. Il seguente esempio di policy mostra come concedere l'autorizzazione iam:PassRole
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myS3WriteAccessRole" ] } ] }
In questo esempio di policy viene concessa l'autorizzazione iam:PassRole
al ruolo myS3WriteAccessRole
. Il ruolo viene specificato utilizzando l'Amazon Resource Name (ARN) del ruolo. È necessario, inoltre, collegare questa policy all'utente. Per ulteriori informazioni, consulta la sezione relativa all'utilizzo di policy gestite.
Nota
Le funzioni Lambda usano una policy basata sulle risorse collegata direttamente alla funzione Lambda stessa. Quando crei una regola che invoca una funzione Lambda, non trasferisci un ruolo; pertanto, l'utente che crea la regola non richiede l'autorizzazione iam:PassRole
. Per ulteriori informazioni sull'autorizzazione della funzione Lambda, consulta Gestione delle autorizzazioni: uso di una policy della funzione Lambda.
Utilizzo dei token per l'assegnazione dei ruoli agli utenti
Per gli utenti che effettuano l'accesso tramite il bacino d'utenza Amazon Cognito, i ruoli possono essere trasferiti nel token ID assegnato dal bacino d'utenza. I ruoli vengono visualizzati nelle seguenti attestazioni nel token ID:
-
L'
cognito:preferred_role
affermazione è il ruoloARN. -
L'
cognito:roles
affermazione è una stringa separata da virgole contenente un insieme di ruoli consentiti. ARNs
Le attestazioni sono impostate come segue:
-
L'attestazione
cognito:preferred_role
è impostata sul ruolo del gruppo con il valorePrecedence
migliore (più basso). Se viene consentito un solo ruolo,cognito:preferred_role
è impostato su tale ruolo. Se sono presenti più ruoli e nessun ruolo singolo ha la migliore precedenza, l'attestazione non è stata impostata. -
L'attestazione
cognito:roles
è impostata se è presente almeno un ruolo.
Quando si utilizzano i token per l'assegnazione dei ruoli, se sono presenti più ruoli che possono essere assegnati all'utente, i pool di identità di Amazon Cognito (identità federate) selezionano il ruolo come segue:
-
Utilizza il GetCredentialsForIdentity
CustomRoleArn
parametro se è impostato e corrisponde a un ruolo nel claim.cognito:roles
Se questo parametro non corrisponde a un ruolo incognito:roles
, nega l'accesso. -
Se l'attestazione
cognito:preferred_role
è impostata, utilizzala. -
Se l'
cognito:preferred_role
attestazione non è impostata, viene impostata e nonCustomRoleArn
è specificata nella chiamata aGetCredentialsForIdentity
, quindi l'impostazione della risoluzione dei ruoli nella console o nelAmbiguousRoleResolution
campo (nelRoleMappings
parametro di SetIdentityPoolRolesAPI) viene utilizzata per determinare il ruolo da assegnare.cognito:roles
Utilizzo di una mappatura basata su regole per assegnare i ruoli agli utenti
Le regole consentono di mappare le rivendicazioni provenienti da un token del provider di identità ai IAM ruoli.
Ogni regola specifica un'attestazione del token (ad esempio un attributo utente nel token ID di un pool di utenti di Amazon Cognito), un tipo di corrispondenza, un valore e IAM un ruolo. Il tipo di corrispondenza può essere Equals
, NotEqual
, StartsWith
, o Contains
. Se un utente dispone di un valore corrispondente all'attestazione, tale utente può assumere quel ruolo nel momento in cui ottiene le credenziali. Ad esempio, puoi creare una regola che assegna un IAM ruolo specifico agli utenti con un valore di attributo custom:dept
personalizzato di. Sales
Nota
Nelle impostazioni delle regole, gli attributi personalizzati richiedono il prefisso custom:
per distinguersi dagli attributi standard.
Le regole vengono valutate in ordine e viene utilizzato il IAM ruolo della prima regola di corrispondenza, a meno che non CustomRoleArn
venga specificato di sostituire l'ordine. Per ulteriori informazioni sugli attributi utente nei bacini d'utenza di Amazon Cognito, consulta Lavorare con gli attributi utente.
Puoi impostare più regole per un provider di autenticazione nella console del pool di identità (identità federate). Le regole vengono applicate in ordine. Puoi trascinare le regole per modificarne l'ordine. La prima regola corrispondente ha la priorità. Se il tipo di corrispondenza è NotEqual
e l'attestazione non esiste, la regola non viene valutata. Se nessuna delle regole corrisponde, l'impostazione Risoluzione del ruolo viene applicata su Utilizza ruolo autenticato predefinito o Nega richiesta.
InfineCLI, è possibile specificare il ruolo da assegnare quando nessuna regola corrisponde nel AmbiguousRoleResolution
campo del RoleMappingtipo, che è specificato nel RoleMappings
parametro di. API SetIdentityPoolRolesAPI
Per aggiungere una mappatura basata su regole a un provider di identità nella console Amazon Cognito, aggiungi o aggiorna un IdP e seleziona Scegli ruolo con regole in Selezione ruolo. Da lì, puoi aggiungere le regole che il provider di mappe dichiara ai ruoli. IAM
È possibile impostare una mappatura basata su regole per i provider di identità nel AWS CLI o API con il RulesConfiguration
campo del tipo. RoleMapping È possibile specificare questo campo nel RoleMappings
parametro di. SetIdentityPoolRolesAPI
Ad esempio, il AWS CLI comando seguente aggiunge una regola che assegna il ruolo arn:aws:iam::123456789012:role/Sacramento_team_S3_admin
agli utenti nella tua sede di Sacramento che sono stati autenticati da IdP: OIDC arn:aws:iam::123456789012:oidc-provider/myOIDCIdP
aws cognito-identity set-identity-pool-roles --region us-east-1 --cli-input-json file://role-mapping.json
Contenuto di role-mapping.json
:
{ "IdentityPoolId": "us-east-1:12345678-corner-cafe-123456790ab", "Roles": { "authenticated": "arn:aws:iam::123456789012:role/myS3WriteAccessRole", "unauthenticated": "arn:aws:iam::123456789012:role/myS3ReadAccessRole" }, "RoleMappings": { "arn:aws:iam::123456789012:oidc-provider/myOIDCIdP": { "Type": "Rules", "AmbiguousRoleResolution": "AuthenticatedRole", "RulesConfiguration": { "Rules": [ { "Claim": "locale", "MatchType": "Equals", "Value": "Sacramento", "RoleARN": "arn:aws:iam::123456789012:role/Sacramento_team_S3_admin" } ] } } } }
Per ogni bacino d'utenza o un altro provider di autenticazione configurato per un pool di identità, puoi creare fino a 25 regole. Questo limite non è regolabile. Per ulteriori informazioni, consulta la sezione Quote in Amazon Cognito.
Attestazioni dei token da utilizzare nella mappatura basata su regole
Amazon Cognito
Un token ID Amazon Cognito è rappresentato come token JSON Web ()JWT. Il token contiene attestazioni relative all'identità dell'utente autenticato, ad esempio name
family_name
, e phone_number
. Per ulteriori informazioni sulle attestazioni standard, consulta la specifica OpenID Connect
-
cognito:groups
-
cognito:roles
-
cognito:preferred_role
Amazon
Le seguenti attestazioni, insieme ai valori possibili per dette attestazioni, possono essere utilizzate con Login with Amazon:
-
iss
: www.amazon.com -
aud
: Id app -
sub
:sub
dal token di Login with Amazon
Le seguenti attestazioni, insieme ai valori possibili per dette attestazioni, possono essere utilizzate con Facebook:
-
iss
: graph.facebook.com -
aud
: Id app -
sub
:sub
dal token di Facebook
Un token di Google contiene attestazioni standard della specifica OpenID Connect
Apple
Un token Apple contiene attestazioni standard della specifica OpenID Connectemail
.
OpenID
Tutte le attestazioni nel token di Open Id sono disponibili per la mappatura basata su regole. Per ulteriori informazioni sulle attestazioni standard, consulta la specifica OpenID Connect
SAML
I reclami vengono analizzati in base all'affermazione ricevutaSAML. Tutte le affermazioni disponibili nell'SAMLasserzione possono essere utilizzate nella mappatura basata su regole.
Best practice per il controllo accessi basato sui ruoli
Importante
Se l'attestazione che si sta mappando a un ruolo può essere modificata dall'utente finale, qualsiasi utente finale può assumere il ruolo e impostare la policy di conseguenza. Esegui la mappatura solo delle attestazioni che non possono essere direttamente impostate dall'utente finale ai ruoli con autorizzazioni elevate. In un bacino d'utenza di Amazon Cognito puoi impostare le autorizzazioni di lettura e di scrittura per app per ogni attributo utente.
Importante
Se imposti i ruoli per i gruppi in un bacino d'utenza di Amazon Cognito, tali ruoli vengono trasmessi tramite il token ID dell'utente. Per utilizzare questi ruoli, è necessario impostare anche Choose role from token (Scegli ruolo dal token) per la selezione del ruolo autenticato per il pool di identità.
È possibile utilizzare l'impostazione della risoluzione del ruolo nella console e il RoleMappings
parametro di SetIdentityPoolRolesAPIper specificare qual è il comportamento predefinito quando non è possibile determinare il ruolo corretto dal token.