

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
<a name="role-based-access-control"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 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
<a name="creating-roles-for-role-mapping"></a>

È 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à:

------
#### [ JSON ]

****  

```
{
  "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
<a name="granting-pass-role-permission"></a>

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`.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**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](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#intro-permission-model-access-policy).

## Utilizzo dei token per l'assegnazione dei ruoli agli utenti
<a name="using-tokens-to-assign-roles-to-users"></a>

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 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 [GetCredentialsForIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html)`CustomRoleArn`parametro 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_role`attestazione non è impostata, viene impostata e non `CustomRoleArn` è specificata nella chiamata a`GetCredentialsForIdentity`, quindi l'impostazione della **risoluzione del ruolo** nella console o nel `AmbiguousRoleResolution` campo (nel `RoleMappings` parametro dell'[SetIdentityPoolRoles](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_SetIdentityPoolRoles.html)API) viene utilizzata per determinare il ruolo da assegnare. `cognito:roles`

## Utilizzo di una mappatura basata su regole per assegnare i ruoli agli utenti
<a name="using-rules-to-assign-roles-to-users"></a>

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](user-pool-settings-attributes.md).

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 [RoleMapping](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_RoleMapping.html)tipo, che è specificato nel `RoleMappings` parametro dell'[SetIdentityPoolRoles](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_SetIdentityPoolRoles.html)API.

**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](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_RoleMapping.html) È possibile specificare questo campo nel `RoleMappings` parametro dell'API. [SetIdentityPoolRoles](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_SetIdentityPoolRoles.html)

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](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html).

## Attestazioni dei token da utilizzare nella mappatura basata su regole
<a name="token-claims-for-role-based-access-control"></a>

**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](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). 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](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Tutte le attestazioni nel token di OpenID sono disponibili per la mappatura basata su regole. Consulta il sito [OpenID Connect](https://developers.google.com/identity/protocols/OpenIDConnect) di Google per scoprire quali attestazioni sono disponibili nel token di Google.

**Apple**

Un token Apple contiene attestazioni standard della [specifica OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Consulta [Authenticating Users with Sign in with Apple](https://developer.apple.com/documentation/signinwithapple/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](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Consulta la documentazione relativa al provider di OpenID per scoprire le altre attestazioni aggiuntive disponibili.

**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
<a name="best-practices-for-role-based-access-control"></a>

**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'[SetIdentityPoolRoles](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_SetIdentityPoolRoles.html)API per specificare qual è il comportamento predefinito quando non è possibile determinare il ruolo corretto dal token.