Utilizzo del controllo degli accessi basato su ruoli - Amazon Cognito

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:PassRoleautorizzazione 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:PassRoleautorizzazione è 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_roleaffermazione è il ruoloARN.

  • L'cognito:rolesaffermazione è 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 valore Precedence 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 GetCredentialsForIdentityCustomRoleArnparametro se è impostato e corrisponde a un ruolo nel claim. cognito:roles Se questo parametro non corrisponde a un ruolo in cognito:roles, nega l'accesso.

  • Se l'attestazione cognito:preferred_role è impostata, utilizzala.

  • Se l'cognito:preferred_roleattestazione non è impostata, viene impostata e non CustomRoleArn è specificata nella chiamata aGetCredentialsForIdentity, quindi l'impostazione della risoluzione dei ruoli nella console o nel AmbiguousRoleResolution campo (nel RoleMappings 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. Oltre alle attestazioni standard, di seguito sono riportate le attestazioni aggiuntive specifiche di Amazon Cognito:

  • 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

Facebook

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

Google

Un token di Google contiene attestazioni standard della specifica OpenID Connect. Tutte le attestazioni nel token di OpenID sono disponibili per la mappatura basata su regole. Consulta il sito OpenID Connect di Google per scoprire quali attestazioni sono disponibili nel token di Google.

Apple

Un token Apple contiene attestazioni standard della specifica OpenID Connect. Consulta Authenticating Users with Sign in with Apple (Autenticazione degli utenti con Accedi con Apple) nella documentazione di Apple per ulteriori informazioni sulle attestazioni disponibili tramite token Apple. Il token di Apple non sempre contiene email.

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. Consulta la documentazione relativa al provider di OpenID per scoprire le altre attestazioni aggiuntive disponibili.

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.