

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

# Passa i tag di sessione AWS STS
<a name="id_session-tags"></a>

I tag di sessione sono attributi di coppia chiave-valore che vengono passati quando si assume un ruolo IAM o si federa un utente in AWS STS. Puoi farlo effettuando una richiesta AWS CLI o AWS API tramite AWS STS o tramite il tuo provider di identità (IdP). Quando richiedi credenziali di sicurezza temporanee, generi una sessione. AWS STS Le sessioni scadono e dispongono di [credenziali](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html), ad esempio una coppia di chiavi di accesso e un token di sessione. Quando si utilizzano le credenziali di sessione per effettuare una richiesta successiva, il [contesto della richiesta](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext) include la chiave di contesto `aws:PrincipalTag`. È possibile utilizzare la chiave `aws:PrincipalTag` nell'elemento `Condition` delle proprie policy per consentire o negare l'accesso in base a tali tag.

Quando si utilizzano credenziali temporanee per effettuare una richiesta, l'entità potrebbe includere un set di tag. Questi tag provengono dalle seguenti fonti:

1. **Tag di sessione**: i tag passati quando assumi il ruolo o federi l'utente utilizzando l'API AWS CLI o AWS . Per ulteriori informazioni su queste operazioni, consulta [Operazioni di tagging di sessione](#id_session-tags_operations).

1. **Tag di sessione transitivi in ingresso**: questi tag sono stati ereditati da una sessione precedente in un concatenamento di ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining) più avanti in questo argomento.

1. **Tag IAM**: i tag associati al ruolo IAM assunto.

**Topics**
+ [Operazioni di tagging di sessione](#id_session-tags_operations)
+ [Cose da sapere sui tag di sessione](#id_session-tags_know)
+ [Autorizzazioni necessarie per aggiungere tag di sessione](#id_session-tags_permissions-required)
+ [Passare i tag di sessione utilizzando AssumeRole](#id_session-tags_adding-assume-role)
+ [Passaggio dei tag di sessione tramite SAML AssumeRoleWith](#id_session-tags_adding-assume-role-saml)
+ [Passare i tag di sessione utilizzando AssumeRoleWithWebIdentity](#id_session-tags_adding-assume-role-idp)
+ [Passare i tag di sessione utilizzando GetFederationToken](#id_session-tags_adding-getfederationtoken)
+ [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining)
+ [Utilizzo dei tag di sessione per ABAC](#id_session-tags_using-abac)
+ [Visualizzazione dei tag di sessione in CloudTrail](#id_session-tags_ctlogs)

## Operazioni di tagging di sessione
<a name="id_session-tags_operations"></a>

Puoi passare i tag di sessione utilizzando quanto segue AWS CLI o le operazioni AWS API in AWS STS. *La **[funzione Console di gestione AWS Switch](id_roles_use_switch-role-console.md)** Role non consente di passare i tag di sessione.*

È inoltre possibile impostare i tag di sessione come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Nella tabella seguente vengono confrontati i metodi per il passaggio dei tag di sessione.


|  Operation |  **Chi può assumere il ruolo**  | **Metodo di passaggio dei tag** |  **Metodo di impostazione dei tag transitivi**  | 
| --- | --- | --- | --- | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) | Utente IAM o sessione | Parametro API Tags o opzione CLI --tags | Parametro API TransitiveTagKeys o opzione CLI --transitive-tag-keys | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) | Tutti gli utenti autenticati che utilizzano un provider di identità SAML | Attributo SAML PrincipalTag | Attributo SAML TransitiveTagKeys | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) | Tutti gli utenti autenticati che utilizzano un provider OIDC | Token OIDC PrincipalTag | Token OIDC TransitiveTagKeys | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Utente IAM o utente root | Parametro API Tags o opzione CLI --tags | Non supportata | 

Le operazioni che supportano i tag di sessione potrebbero non concludersi correttamente se si verifica una delle seguenti condizioni:
+ Sono passati oltre 50 tag di sessione.
+ Il testo in chiaro delle chiavi dei tag di sessione supera i 128 caratteri.
+ Il testo in chiaro dei valori dei tag di sessione supera i 256 caratteri.
+ La dimensione totale del testo in chiaro delle policy di sessione supera i 2048 caratteri.
+ La dimensione totale del pacchetto delle policy e dei tag di sessione combinati è troppo grande. Se l'operazione non ha esito positivo, il messaggio di errore mostra quanto le policy e i tag combinati si avvicinano al limite di dimensione superiore, in percentuale.

## Cose da sapere sui tag di sessione
<a name="id_session-tags_know"></a>

Prima di utilizzare i tag di sessione, esaminare i seguenti dettagli sulle sessioni e sui tag.
+ Quando utilizzi i tag di sessione, le policy di attendibilità per tutti i ruoli connessi al provider di identità (IdP) che passa i tag devono disporre dell'autorizzazione [`sts:TagSession`](#id_session-tags_permissions-required). Per i ruoli che non dispongono di questa autorizzazione nella policy di attendibilità, l'operazione `AssumeRole` avrà esito negativo.
+ Quando si richiede una sessione, è possibile specificare i tag principali come tag di sessione. I tag si applicano alle richieste effettuate utilizzando le credenziali della sessione.
+ I tag di sessione sono coppie chiave-valore. Ad esempio, per aggiungere informazioni di contatto a una sessione, è possibile aggiungere la chiave del tag di sessione `email` e il valore del tag `johndoe@example.com`.
+ I tag di sessione devono seguire le [regole per la denominazione dei tag in IAM e AWS STS](id_tags.md#id_tags_rules_creating). In questo argomento sono incluse informazioni sulla distinzione tra maiuscole e minuscole e sui prefissi riservati validi per i tag di sessione.
+ I nuovi tag di sessione sovrascrivono quelli relativi ai ruoli assunti o agli utenti federati con la stessa chiave di tag, indipendentemente dall’utilizzo di lettere minuscole o maiuscole.
+ Non è possibile passare i tag di sessione utilizzando. Console di gestione AWS
+ I tag di sessione sono validi solo per la sessione corrente. 
+ I tag di sessione supportano [il concatenamento dei ruoli](id_roles.md#iam-term-role-chaining). Per impostazione predefinita, AWS STS non passa tag alle sessioni di ruolo successive. Tuttavia, è possibile impostare i tag di sessione come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli e sostituiscono i valori `ResourceTag` corrispondenti dopo la valutazione della policy di attendibilità del ruolo. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).
+ È possibile utilizzare i tag di sessione per controllare l'accesso alle risorse o per controllare quali tag possono essere passati in una sessione successiva. Per ulteriori informazioni, consulta [Tutorial IAM: Utilizzo dei tag di sessione SAML per ABAC](tutorial_abac-saml.md).
+ È possibile visualizzare i tag del principale per la sessione, inclusi i tag di sessione, nei log AWS CloudTrail . Per ulteriori informazioni, consulta [Visualizzazione dei tag di sessione in CloudTrail](#id_session-tags_ctlogs).
+ È necessario passare un singolo valore per ogni tag di sessione. AWS STS non supporta tag di sessione multivalore. 
+ È possibile passare un massimo di 50 tag di sessione. Il numero e la dimensione delle risorse IAM in un AWS account sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md).
+ Una AWS conversione comprime le politiche di sessione e i tag di sessione passati combinati in un formato binario compresso con un limite separato. Se superi questo limite, il messaggio di errore AWS CLI o AWS API mostra quanto le politiche e i tag combinati si avvicinano al limite di dimensione superiore, in percentuale.

## Autorizzazioni necessarie per aggiungere tag di sessione
<a name="id_session-tags_permissions-required"></a>

Oltre a quella sull'operazione che corrisponde all'operazione API, è necessario disporre nella policy dell'autorizzazione per le seguenti operazioni:

```
sts:TagSession
```

**Importante**  
Quando si utilizzano i tag di sessione, i criteri di attendibilità dei ruoli per tutti i ruoli connessi a un provider di identità (IdP) devono disporre dell'autorizzazione `sts:TagSession`. L'operazione `AssumeRole` avrà esito negativo per qualsiasi ruolo connesso a un provider di identità che passa tag di sessione senza questa autorizzazione. Se non si desidera aggiornare la policy di attendibilità del ruolo per ogni ruolo, è possibile utilizzare un'istanza IdP separata per passare i tag di sessione. Quindi, aggiungi l'autorizzazione `sts:TagSession` solo ai ruoli connessi all'IdP separato.

È possibile utilizzare l'operazione `sts:TagSession` con le seguenti chiavi di condizione.
+ `aws:PrincipalTag`: confronta il tag collegato al principale che effettua la richiesta con il tag specificato nella policy. Ad esempio, è possibile consentire a un'entità di passare i tag di sessione solo se l'entità che effettua la richiesta dispone dei tag specificati.
+ `aws:RequestTag`: confronta la coppia chiave-valore del tag passata nella richiesta con la coppia del tag specificata nella policy. Ad esempio, è possibile consentire all'entità di passare tag di sessione specificati, ma solo con i valori specificati.
+ `aws:ResourceTag`: confronta la coppia chiave-valore tag specificata nella policy con la coppia chiave-valore collegata alla risorsa. Ad esempio, puoi consentire al principale di passare i tag di sessione solo se il ruolo che assume include i tag specificati.
+ `aws:TagKeys`: confronta le chiavi tag in una richiesta con quelle specificate nella policy. Ad esempio, è possibile consentire all'entità di passare solo i tag di sessione con le chiavi dei tag specificate. Questa chiave di condizione limita l'insieme massimo di tag di sessione che possono essere passati.
+ `sts:TransitiveTagKeys`: confronta le chiavi dei tag di sessione transitivi nella richiesta con quelle specificate nella policy. Ad esempio, è possibile scrivere una policy per consentire a un'entità di impostare solo tag specifici come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Ad esempio, la seguente [policy di attendibilità del ruolo](id_roles.md#term_trust-policy) consente all'utente `test-session-tags` di assumere il ruolo a cui è collegata la policy. Quando l'utente assume il ruolo, deve utilizzare l' AWS API AWS CLI o per passare i tre tag di sessione richiesti e l'[ID esterno](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) richiesto. Inoltre, l'utente può scegliere di impostare i tag `Department` e `Project` come transitivi.

**Example Esempio di policy di attendibilità dei ruoli per i tag di sessione**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIamUserAssumeRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::{{123456789012}}:user/{{test-session-tags}}"},
            "Condition": {
              "StringLike": {
                    "aws:RequestTag/{{Project}}": "*",
                    "aws:RequestTag/{{CostCenter}}": "*",
                    "aws:RequestTag/{{Department}}": "*"
                },
                "StringEquals": {"sts:ExternalId": "{{Example987}}"}
            }
        },
        {
            "Sid": "AllowPassSessionTagsAndTransitive",
            "Effect": "Allow",
            "Action": "sts:TagSession",
            "Principal": {"AWS": "arn:aws:iam::{{123456789012}}:user/{{test-session-tags}}"},
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/{{Project}}": "*",
                    "aws:RequestTag/{{CostCenter}}": "*"
                },
                "StringEquals": {
                    "aws:RequestTag/{{Department}}": [
                        "{{Engineering}}",
                        "{{Marketing}}"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "sts:TransitiveTagKeys": [
                        "{{Project}}",
                        "{{Department}}"
                    ]
                }
            }
        }
    ]
}
```

**Che cosa fa questa policy?**
+ L'istruzione `AllowIamUserAssumeRole` consente all'utente `test-session-tags` di assumere il ruolo a cui è collegata la policy. Quando tale utente assume il ruolo, deve passare i tag di sessione richiesti e l'[ID esterno](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id).
  + Il primo blocco condizionale di questa istruzione richiede all'utente di passare i tag di sessione `Project`, `CostCenter` e `Department`. I valori dei tag non sono significativi in questa istruzione, quindi abbiamo usato caratteri jolly (\*) per i valori dei tag. Questo blocco assicura che l'utente passi almeno questi tre tag di sessione. In caso contrario, l'operazione non va a buon fine. L'utente può passare tag aggiuntivi.
  + Il secondo blocco condizionale richiede all'utente di passare un [ID esterno](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) con il valore `Example987`.
+ L'istruzione `AllowPassSessionTagsAndTransitive` autorizza l'operazione `sts:TagSession`. Questa operazione deve essere autorizzata prima che l'utente possa passare i tag di sessione. Se la policy include la prima istruzione senza la seconda, l'utente non può assumere il ruolo.
  + Il primo blocco condizionale di questa istruzione consente all'utente di passare qualsiasi valore per i tag di sessione `CostCenter` e `Project`. A tale scopo, è necessario utilizzare i caratteri jolly (\*) per il valore del tag nella policy, il che richiede l'utilizzo dell'operatore di [StringLike](reference_policies_elements_condition_operators.md#Conditions_String)condizione.
  + Il secondo blocco condizionale consente all'utente di passare solo i valori `Marketing` o `Engineering` per il tag di sessione `Department`.
  + Il terzo blocco condizionale elenca l'insieme massimo di tag che possono essere impostati come transitivi. L'utente può scegliere di impostare un sottoinsieme o nessun tag come transitivo. Ma non può impostare tag aggiuntivi come transitivi. È possibile richiedere che imposti almeno uno dei tag come transitivo aggiungendo un altro blocco condizionale che include `"Null":{"sts:TransitiveTagKeys":"false"}`. 

## Passare i tag di sessione utilizzando AssumeRole
<a name="id_session-tags_adding-assume-role"></a>

L'`AssumeRole`operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. È possibile utilizzare le credenziali dell'utente o del ruolo IAM per chiamare `AssumeRole`. Per passare i tag di sessione mentre assumi un ruolo, utilizzate l'`--tags` AWS CLI opzione o il parametro `Tags` AWS API. 

Per impostare i tag come transitivi, utilizzate l'`--transitive-tag-keys` AWS CLI opzione o il parametro `TransitiveTagKeys` AWS API. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Nell'esempio seguente viene illustrata una richiesta di esempio che utilizza `AssumeRole`. In questo esempio, quando si assume il ruolo `my-role-example`, si crea una sessione denominata `my-session`. Aggiungere le coppie chiave-valore dei tag di sessione `Project` = `Automation`, `CostCenter` = `12345` e `Department` = `Engineering`. È inoltre possibile impostare i tag `Project` e `Department` come transitivi specificando le loro chiavi. È necessario passare un singolo valore per ogni tag di sessione. AWS STS non supporta tag di sessione multivalore.

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/my-role-example \
--role-session-name my-session \
--tags Key=Project,Value=Automation Key=CostCenter,Value=12345 Key=Department,Value=Engineering \
--transitive-tag-keys Project Department \
--external-id Example987
```

## Passaggio dei tag di sessione tramite SAML AssumeRoleWith
<a name="id_session-tags_adding-assume-role-saml"></a>

L'operazione `AssumeRoleWithSAML` viene autenticata con la federazione basata su SAML. Questa operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere AWS alle risorse. Per ulteriori informazioni sull'utilizzo della federazione basata su SAML per Console di gestione AWS l'accesso, consulta. [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md) Per dettagli sull'accesso alle AWS CLI nostre AWS API, consulta. [Federazione SAML 2.0](id_roles_providers_saml.md) Per un tutorial sulla configurazione della federazione SAML per gli utenti di Active Directory, consulta [AWS Federated Authentication with Active Directory Federation Services (ADFS)](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) nel Security Blog. AWS 

In qualità di amministratore, puoi consentire ai membri della tua directory aziendale di unirsi per utilizzare l'operazione. AWS AWS STS `AssumeRoleWithSAML` A tale scopo, è necessario completare le seguenti attività:

1. [Configurazione della rete come un provider SAML per AWS](id_roles_providers_saml_3rd-party.md)

1. [Creazione di un provider SAML in IAM](id_roles_providers_create_saml.md)

1. [Creare un ruolo per una federazione SAML 2.0 (console)](id_roles_create_for-idp_saml.md)

1. [Termine della configurazione del provider di identità SAML e creazione di asserzioni per la risposta di autenticazione SAML](id_roles_providers_create_saml_assertions.md)

AWS include fornitori di identità con end-to-end esperienza certificata per i tag di sessione con le loro soluzioni di identità. Per informazioni su come utilizzare questi provider di identità per configurare i tag di sessione, consultare [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md).

Per passare gli attributi SAML come tag di sessione, includere l'elemento `Attribute` con l'attributo `Name` impostato a `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{{{TagKey}}}`. Utilizzare l'elemento `AttributeValue` per specificare il valore del tag. Includere un elemento `Attribute` separato per ogni tag di sessione.

Ad esempio, si supponga di voler passare i seguenti attributi di identità come tag di sessione:
+ `Project:Automation`
+ `CostCenter:12345`
+ `Department:Engineering`

Per passare questi attributi, includere i seguenti elementi nell'asserzione SAML.

**Example Esempio di frammento di un'asserzione SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Automation</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Department">
  <AttributeValue>Engineering</AttributeValue>
</Attribute>
```

Per impostare i tag sopra elencati come transitivi, include un altro elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Per impostare i tag `Project` e `Department` come transitivi, utilizzare il seguente attributo multi valore.

**Example Esempio di frammento di un'asserzione SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>Department</AttributeValue>
</Attribute>
```

## Passare i tag di sessione utilizzando AssumeRoleWithWebIdentity
<a name="id_session-tags_adding-assume-role-idp"></a>

Utilizza la federazione compatibile con OpenID Connect (OIDC) per autenticare l'operazione `AssumeRoleWithWebIdentity`. Questa operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. Per ulteriori informazioni sull'utilizzo della federazione delle identità Web per Console di gestione AWS l'accesso, vedere[Federazione OIDC](id_roles_providers_oidc.md).

Per passare i tag di sessione da OpenID Connect (OIDC), è necessario includere i tag di sessione nel token Web JSON (JWT) quando si invia la richiesta `AssumeRoleWithWebIdentity`. Per ulteriori informazioni sui token e le registrazioni OIDC, consultare [Utilizzo di token con pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) nella *Guida per gli sviluppatori Amazon Cognito *.

AWS supporta due formati di richiesta per includere i tag di sessione nel JWT: 
+ Formato di attestazione nidificato
+ Formato di nidificato compresso

### Formato di attestazione nidificato
<a name="id_session-tags_adding-assume-role-idp-nested-format"></a>

Il formato di attestazione nidificato utilizza una struttura all’interno del namespace `https://aws.amazon.com/tags` nel JWT. In questo formato:
+ I tag principali sono rappresentati come un oggetto nidificato sotto la chiave `principal_tags`.
+ Ogni tag principale è il valore di una singola stringa.
+ Le chiavi dei tag transitivi sono rappresentate in un array sotto la chiave `transitive_tag_keys`.
+ Sia `principal_tags` che `transitive_tag_keys` sono nidificati nel namespace `https://aws.amazon.com/tags`.

Nell'esempio seguente viene mostrato un JWT decodificato utilizzando il formato di oggetti nidificati: 

**Example Esempio di token Web JSON decodificato utilizzando il formato di attestazione nidificato**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags": {
        "principal_tags": {
            "Project": ["Automation"],
            "CostCenter": ["987654"],
            "Department": ["Engineering"]
        },
        "transitive_tag_keys": [
            "Project",
            "CostCenter"
        ]
    }
}
```

### Formato di nidificato compresso
<a name="id_session-tags_adding-assume-role-idp-flattened-format"></a>

Il formato di attestazione compresso è compatibile con i provider di identità che non supportano oggetti nidificati nelle attestazioni JWT, come Microsoft Entra ID. In questo formato:
+ I tag principali sono rappresentati come attestazioni separate con il prefisso `https://aws.amazon.com/tags/principal_tags/`. 
+ Ogni tag principale è il valore di una singola stringa.
+ Le chiavi dei tag transitivi sono rappresentate in una singola attestazione come array di stringhe con il prefisso `https://aws.amazon.com/tags/transitive_tag_keys`.

Ora, vediamo come vengono rappresentate le stesse informazioni utilizzando il formato di attestazione compresso:

**Example Esempio di token Web JSON decodificato utilizzando il formato di attestazione compresso**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags/principal_tags/Project": "Automation",
    "https://aws.amazon.com/tags/principal_tags/CostCenter": "987654",
    "https://aws.amazon.com/tags/principal_tags/Department": "Engineering",
    "https://aws.amazon.com/tags/transitive_tag_keys": [
        "Project",
        "CostCenter"
    ]
}
```

Entrambi gli esempi JWT decodificati mostrano una chiamata a `AssumeRoleWithWebIdentity` con i tag di sessione `Project`, `CostCenter` e `Department`. Entrambi i token impostano i tag `Project` e `CostCenter` come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Il formato di attestazione compresso ottiene lo stesso risultato del formato di attestazione nidificato, ma utilizza una struttura compressa per i tag. Consente di includere tag di sessione in ambienti in cui gli oggetti JSON nidificati non sono supportati nelle attestazioni JWT. Quando utilizzi uno dei due formati, assicurati che il tuo provider di identità sia configurato per emettere token con le strutture di attestazione appropriate. AWS supporta entrambi i formati di attestazione, quindi puoi scegliere quello più adatto ai requisiti specifici del tuo provider di identità.

## Passare i tag di sessione utilizzando GetFederationToken
<a name="id_session-tags_adding-getfederationtoken"></a>

La `GetFederationToken` consente di federare l'utente. Questa operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. Per aggiungere tag alla sessione utente federata, utilizzate l'`--tags` AWS CLI opzione o il parametro `Tags` AWS API. Non è possibile impostare i tag di sessione come transitivi quando si utilizza `GetFederationToken`, perché non è possibile utilizzare le credenziali provvisorie per assumere un ruolo. In questo caso non è possibile utilizzare il concatenamento dei ruoli. 

Di seguito è mostrata una risposta di esempio che utilizza `GetFederationToken`. In questo esempio, quando si richiede il token, si crea una sessione denominata `my-fed-user`. Aggiungere le coppie chiave-valore dei tag di sessione `Project` = `Automation` e `Department` = `Engineering`.

**Example Richiesta GetFederationToken CLI di esempio**  

```
aws sts get-federation-token \
--name my-fed-user \
--tags key=Project,value=Automation key=Department,value=Engineering
```

Quando si utilizzano le credenziali temporanee restituite dall'operazione `GetFederationToken`, i tag del principale della sessione includono i tag dell'utente e i tag di sessione passati.

## Concatenamento dei ruoli con i tag di sessione
<a name="id_session-tags_role-chaining"></a>

È possibile assumere un ruolo e quindi utilizzare le credenziali temporanee per assumere un altro ruolo. È possibile continuare da una sessione all'altra. Questa operazione è chiamata [concatenamento del ruolo](id_roles.md#iam-term-role-chaining). Quando si passano i tag di sessione mentre si assume un ruolo, è possibile impostare le chiavi come transitive. Ciò garantisce che tali tag di sessione siano passati alle sessioni successive in un concatenamento di ruoli. Non è possibile impostare tag di ruolo come transitivi. Per passare questi tag alle sessioni successive, specificarli come tag di sessione.

**Nota**  
I tag transitivi persistono durante il concatenamento dei ruoli e sostituiscono i valori `ResourceTag` corrispondenti dopo la valutazione della policy di attendibilità del ruolo.

L'esempio seguente mostra come AWS STS passa i tag di sessione, i tag transitivi e i tag di ruolo nelle sessioni successive in una catena di ruoli.

In questo esempio di scenario di concatenamento dei ruoli, si utilizza una chiave di accesso utente IAM AWS CLI per assumere un ruolo denominato. `Role1` È quindi possibile utilizzare le credenziali di sessione risultanti per assumere un secondo ruolo denominato `Role2`. È quindi possibile utilizzare le credenziali della seconda sessione per assumere un terzo ruolo denominato `Role3`. Queste richieste sono eseguite come tre operazioni separate. Ogni ruolo è già taggato in IAM. E durante ogni richiesta, è possibile passare ulteriori tag di sessione.

![Concatenazione del ruolo](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-simple.png)


Quando si concatenano i ruoli, è possibile assicurarsi che i tag di una sessione precedente persistano nelle sessioni successive. Per fare ciò utilizzando il comando `assume-role` della CLI, è necessario passare il tag come tag di sessione e impostare il tag come transitivo. Si passa il tag `Star` = `1` come tag di sessione. Il comando collega anche il tag `Heart` = `1` al ruolo e lo applica come tag del principale quando si utilizza la sessione. Tuttavia, si desidera anche che il tag `Heart` = `1` sia passato automaticamente alla seconda o terza sessione. Per farlo, è necessario includerlo manualmente come tag di sessione. I tag principali di sessione risultanti includono entrambi questi tag e li impostano come transitivi.

![Assumere il primo ruolo in un concatenamento dei ruoli](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-role1.png)


Esegui questa richiesta utilizzando il seguente AWS CLI comando:

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role1 \
--role-session-name Session1 \
--tags Key=Star,Value=1 Key=Heart,Value=1 \
--transitive-tag-keys Star Heart
```

È quindi possibile utilizzare le credenziali di tale sessione per assumere il `Role2`. Il comando collega il tag `Sun` = `2` al secondo ruolo e lo applica come tag del principale quando utilizzi la sessione. I `Star` tag `Heart` and ereditano i tag di sessione transitivi nella prima sessione. I tag del principale della seconda sessione risultanti sono `Heart` = `1`, `Star` = `1` e `Sun` = `2`. `Heart` e `Star` continueranno a essere transitivi. Il tag `Sun` collegato a `Role2` non è contrassegnato come transitivo perché non è un tag di sessione. Le sessioni future non ereditano questo tag. 

![Assumere il secondo ruolo in un concatenamento dei ruoli](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-role2.png)


Eseguite questa seconda richiesta utilizzando il seguente comando: AWS CLI 

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role2 \
--role-session-name Session2
```

È quindi possibile utilizzare le credenziali della seconda sessione per assumere il `Role3`. I tag dell'entità per la terza sessione derivano da tutti i nuovi tag di sessione, i tag di sessione transitivi ereditati e i tag di ruolo. I tag `Heart` = `1` e `Star` = `1` nella seconda sessione sono stati ereditati dai tag di sessione transitivi nella prima sessione. Se provi a passare il tag di sessione `Sun` = `2`, l'operazione avrà esito negativo. Il tag di sessione `Star` = 1 ereditato sostituisce il tag `Star` = `3` del ruolo. Nella concatenazione dei ruoli, il valore di un tag transitivo sovrascrive il ruolo che corrisponde al valore `ResourceTag` dopo della valutazione della policy di attendibilità del ruolo. In questo esempio, se `Role3` utilizza `Star` come `ResourceTag` nella policy di attendibilità ruolo e imposta il valore `ResourceTag` sul valore del tag transitivo dalla sessione del ruolo chiamante. Il `Lightning` tag role si applica anche alla terza sessione e non è impostato come transitivo.

![Assumere il terzo ruolo in un concatenamento dei ruoli](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-role3.png)


La terza richiesta viene eseguita utilizzando il seguente AWS CLI comando:

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role3 \
--role-session-name Session3
```

## Utilizzo dei tag di sessione per ABAC
<a name="id_session-tags_using-abac"></a>

Il controllo degli accessi basato su attributi (Attribute-Based Access Control, ABAC) è una strategia di autorizzazione che definisce le autorizzazioni in base agli attributi dei tag. 

Se l'azienda utilizza un provider di identità (IdP) basato su SAML o OIDC per gestire le identità utente, puoi configurare l'asserzione per passare i tag di sessione ad AWS. Ad esempio, con le identità utente aziendali, quando i dipendenti si uniscono AWS, AWS applica i loro attributi al principale risultante. È quindi possibile utilizzare ABAC per consentire o negare le autorizzazioni sulla base di tali attributi. Per informazioni dettagliate, vedi [Tutorial IAM: Utilizzo dei tag di sessione SAML per ABAC](tutorial_abac-saml.md).

Per ulteriori informazioni sull'utilizzo di IAM Identity Center con ABAC, consulta [Attributi per il controllo degli accessi](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributesforaccesscontrol.html) nella *Guida per l'utente di AWS IAM Identity Center *.

## Visualizzazione dei tag di sessione in CloudTrail
<a name="id_session-tags_ctlogs"></a>

È possibile utilizzare AWS CloudTrail per visualizzare le richieste utilizzate per assumere ruoli o federare gli utenti. Il file di registro di CloudTrail include informazioni sui tag dell'entità per la sessione dell'utente che ha assunto il ruolo o dell'utente federato. Per ulteriori informazioni, consulta [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md).

Ad esempio, supponiamo di effettuare una AWS STS `AssumeRoleWithSAML` richiesta, passare i tag di sessione e impostare tali tag come transitivi. Nel file di registro di CloudTrail è possibile trovare le seguenti informazioni.

**Example Esempio di log AssumeRoleWith SAML CloudTrail**  

```
    "requestParameters": {
        "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE",
        "roleSessionName": "MyRoleSessionName",
        "principalTags": {
            "CostCenter": "987654",
            "Project": "Unicorn"
        },
        "transitiveTagKeys": [
            "CostCenter",
            "Project"
        ],
        "durationSeconds": 3600,
        "roleArn": "arn:aws:iam::123456789012:role/SAMLTestRoleShibboleth",
        "principalArn": "arn:aws:iam::123456789012:saml-provider/Shibboleth"
    },
```

È possibile visualizzare i seguenti CloudTrail registri di esempio per visualizzare gli eventi che utilizzano tag di sessione.
+ [Esempio di evento API di concatenamento dei AWS STS ruoli nel file di registro CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole)
+ [Esempio di evento AWS STS API SAML nel file di registro CloudTrail](cloudtrail-integration.md#stscloudtrailexample_saml)
+ [Esempio di evento AWS STS API OIDC nel CloudTrail file di registro](cloudtrail-integration.md#stscloudtrailexample_web-identity)