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à.
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 di ciascun utente vengono controllate attraverso i ruoli IAM che hai creato. 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 inoltre definire un ruolo IAM separato con autorizzazioni limitate per gli utenti guest non 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 dell'attestazione amr
con più valori del token emesso dall'operazione API GetOpenIdToken
Amazon Cognito ha il valore authenticated
.
Concessione delle autorizzazioni per il passaggio di ruoli
Per consentire a un utente di impostare ruoli con autorizzazioni superiori rispetto alle autorizzazioni dell'utente esistenti su un pool di identità, concedere loro l'autorizzazione iam:PassRole
per trasferire il ruolo all'API set-identity-pool-roles
. Ad esempio, se l'utente non è in grado di scrivere su Amazon S3 ma il ruolo IAM che l'utente imposta nel pool di identità concede l'autorizzazione per scrivere su Amazon S3, l'utente può impostare questo ruolo solo se a quest'ultimo viene concessa l'autorizzazione iam:PassRole
. 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 usando 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'attestazione
cognito:preferred_role
è il ruolo ARN. -
L'
cognito:roles
attestazione è una stringa separata da virgole contenente un set 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 dell'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 ti permettono di eseguire la mappatura delle attestazioni del token di un provider di identità per i ruoli IAM.
Ogni regola specifica l'attestazione di un token (ad esempio un attributo utente nel token ID di un bacino d'utenza di Amazon Cognito), il tipo di corrispondenza, un valore e un ruolo IAM. 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 determinato ruolo IAM agli utenti con un valore di attributo personalizzato custom:dept
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 ruolo IAM per la prima regola corrispondente, a meno che non sia specificato CustomRoleArn
per sovrascrivere l'ordine. Per ulteriori informazioni sugli attributi utente nei bacini d'utenza di Amazon Cognito, consulta Utilizzo degli 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.
Nell'API e nella CLI, puoi specificare il ruolo da assegnare quando nessuna regola corrisponde nel AmbiguousRoleResolution
campo del RoleMappingtipo, che è specificato nel RoleMappings
parametro dell'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 regole che mappano le dichiarazioni del provider ai ruoli IAM.
Puoi configurare una mappatura basata su regole per i provider di identità nell'API AWS CLI o con il RulesConfiguration
campo del tipo. RoleMapping È possibile specificare questo campo nel RoleMappings
parametro dell'API. SetIdentityPoolRoles
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 OIDC IdP: 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 di Amazon Cognito è rappresentato come un token Web JSON (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
Le attestazioni vengono ricavate analizzando l'asserzione SAML ricevuta. Tutte le attestazioni disponibili nell'asserzione SAML 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 dei ruoli nella console e il RoleMappings
parametro dell'SetIdentityPoolRolesAPI per specificare qual è il comportamento predefinito quando non è possibile determinare il ruolo corretto dal token.