

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 sugli attributi in Lambda
<a name="attribute-based-access-control"></a>

Con il [controllo degli accessi basato su attributi (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html), puoi usare i tag per controllare l'accesso alle risorse Lambda. Puoi allegare tag a determinate risorse Lambda, allegarli a determinate richieste API o collegarli al principale AWS Identity and Access Management (IAM) che effettua la richiesta. *Per ulteriori informazioni su come AWS concedere l'accesso basato sugli attributi, consulta [Controlling access to AWS resources using tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) nella IAM User Guide.*

Puoi utilizzare ABAC per [concedere il privilegio minimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) senza specificare un nome della risorsa Amazon (ARN) o uno schema ARN nella policy IAM. Per controllare gli accessi puoi invece specificare un tag nell'[elemento di condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di una policy IAM. La scalabilità è più facile con ABAC perché non è necessario aggiornare le policy IAM quando vengono create nuove risorse. Invece, per controllare l'accesso aggiungi i tag alle nuove risorse.

In Lambda, i tag funzionano sulle seguenti risorse:
+ Funzioni: per ulteriori informazioni sul tagging delle funzioni, consulta [Uso dei tag sulle funzioni Lambda](configuration-tags.md).
+ Configurazioni di firma del codice: per ulteriori informazioni sul tagging delle configurazioni di firma del codice, consulta [Utilizzo di tag nelle configurazioni di firma del codice](tags-csc.md).
+ Strumenti di mappatura dell'origine degli eventi: per ulteriori informazioni sul tagging degli strumenti di mappatura dell'origine degli eventi, consulta [Utilizzo di tag negli strumenti di mappatura dell'origine degli eventi](tags-esm.md).

I tag non sono supportati per i livelli.

È possibile utilizzare le seguenti chiavi di condizione per scrivere regole di policy IAM basate sui tag:
+ [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): controlla l'accesso in base ai tag allegati a una risorsa Lambda.
+ [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): richiede che i tag siano presenti in una richiesta, ad esempio quando si crea una nuova funzione.
+ [aws: PrincipalTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_users.html)
+  [aws:TagKeys:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) Controlla se è possibile utilizzare chiavi di tag specifiche in una richiesta.

 Puoi specificare solo le condizioni per le azioni che le supportano. Per un elenco delle operazioni supportate da ogni operazione Lambda, consulta [Operazioni, risorse e chiavi di condizione per AWS Lambda](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awslambda.html) in Service Authorization Reference. Per il supporto di **aws: ResourceTag /tag-key**, consulta «Tipi di risorse definiti da». AWS Lambda Per **aws: RequestTag /tag-key** e **aws: TagKeys** support, consulta «Azioni definite da». AWS Lambda

**Topics**
+ [Proteggere le funzioni con un tag](attribute-based-access-control-example.md)

# Proteggere le funzioni con un tag
<a name="attribute-based-access-control-example"></a>

La seguente procedura mostra un modo per impostare le autorizzazioni per le funzioni tramite ABAC. In questo scenario di esempio, creerai quattro policy di autorizzazione IAM. Quindi, collegherai queste policy a un nuovo ruolo IAM. Infine, creerai un utente IAM e gli assegnerai l'autorizzazione per assumere il nuovo ruolo.

**Topics**
+ [Prerequisiti](#abac-prerequisites)
+ [Fase 1: richiesta di tag sulle nuove funzioni](#require-tag-on-create)
+ [Fase 2: Consentire azioni basate su tag collegati a una funzione Lambda e al principale IAM](#restrict-actions-function-tags)
+ [Fase 3: Concessione delle autorizzazioni di elenco](#abac-list-permissions)
+ [Fase 4: Concessione delle autorizzazioni IAM](#abac-iam-permissions)
+ [Fase 5: Creazione del ruolo IAM](#abac-create-role)
+ [Fase 6: Creazione dell'utente IAM](#abac-create-user)
+ [Fase 7: Test delle autorizzazioni](#abac-test)
+ [Fase 8: eliminare le risorse](#abac-clean-up)

## Prerequisiti
<a name="abac-prerequisites"></a>

Assicurati di avere un [ruolo di esecuzione Lambda](lambda-intro-execution-role.md). Userai questo ruolo quando concedi le autorizzazioni IAM e crei una funzione Lambda.

## Fase 1: richiesta di tag sulle nuove funzioni
<a name="require-tag-on-create"></a>

Quando utilizzi ABAC con Lambda, è consigliabile richiedere che tutte le funzioni abbiano i tag. Questo aiuta a garantire che le policy di autorizzazione ABAC funzionino come previsto.

[Crea una policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) simile a quella del seguente esempio. Questa policy utilizza le chiavi [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) e [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) condition per richiedere che le nuove funzioni e il principale IAM che le crea abbiano entrambi il tag. `project` Il modificatore `ForAllValues` assicura che `project` sia l'unico tag consentito. Se non includi il modificatore `ForAllValues`, gli utenti potranno aggiungere altri tag alla funzione purché passino anche loro `project`.

**Example : richiesta di tag sulle nuove funzioni**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
      "Effect": "Allow",
      "Action": [
        "lambda:CreateFunction",
        "lambda:TagResource"
      ],
      "Resource": "arn:aws:lambda:*:*:function:*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": "${aws:PrincipalTag/project}",
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": "project"
        }
      }
    }
  }
```

## Fase 2: Consentire azioni basate su tag collegati a una funzione Lambda e al principale IAM
<a name="restrict-actions-function-tags"></a>

Crea una seconda policy IAM utilizzando la chiave di condizione [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) per richiedere che il tag del principale corrisponda al tag associato alla funzione. La seguente policy di esempio consente ai principali con tag `project` di richiamare le funzioni con il tag `project`. Se una funzione ha altri tag, l'azione è negata.

**Example : Richiesta di tag corrispondenti sulla funzione e sul principale IAM**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:InvokeFunction",
          "lambda:GetFunction"
        ],
        "Resource": "arn:aws:lambda:*:*:function:*",
        "Condition": {
          "StringEquals": {
            "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
          }
        }
      }
    ]
  }
```

## Fase 3: Concessione delle autorizzazioni di elenco
<a name="abac-list-permissions"></a>

Crea una policy che consenta al principale di elencare le funzioni Lambda e i ruoli IAM. Ciò consente al principale di vedere tutte le funzioni Lambda e i ruoli IAM sulla console e quando si chiamano le operazioni API.

**Example : Concessione delle autorizzazioni di elenco per Lambda e IAM**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "AllResourcesLambdaNoTags",
        "Effect": "Allow",
        "Action": [
          "lambda:GetAccountSettings",
          "lambda:ListFunctions",
          "iam:ListRoles"
        ],
        "Resource": "*"
      }
    ]
  }
```

## Fase 4: Concessione delle autorizzazioni IAM
<a name="abac-iam-permissions"></a>

**Crea una policy che consenta iam:. PassRole** Questa autorizzazione è necessaria quando si assegna un ruolo di esecuzione a una funzione. Nella seguente policy di esempio, sostituisci l'ARN di esempio con l'ARN del tuo ruolo di esecuzione Lambda.

**Nota**  
Non utilizzare la chiave di condizione `ResourceTag` in una policy con l'operazione `iam:PassRole`. Non puoi utilizzare il tag su un ruolo IAM per controllare l'accesso a chi può passare tale ruolo. Per ulteriori informazioni sulle autorizzazioni necessarie per passare un ruolo a un servizio, vedere [Concessione a un utente delle autorizzazioni per passare un ruolo a un](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) servizio. AWS 

**Example : Concessione dell'autorizzazione per inviare il ruolo di esecuzione**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
          "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::111122223333:role/lambda-ex"
      }
    ]
  }
```

## Fase 5: Creazione del ruolo IAM
<a name="abac-create-role"></a>

Una best practice consiste nell'[utilizzare i ruoli per delegare le autorizzazioni](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#delegate-using-roles). [Crea un ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) chiamato `abac-project-role`:
+ In **Fase 1: Selezione dell'entità attendibile**, scegli **Account AWS **, quindi **Questo account**.
+ In **Fase 2: Aggiunta delle autorizzazioni**, collega le quattro policy IAM create nei passaggi precedenti.
+ In **Fase 3: Assegnazione di un nome, revisione e creazione**, scegli **Add tag** (Aggiungi tag). In **Chiave**, inserire `project`. Non immettere un **valore**.

## Fase 6: Creazione dell'utente IAM
<a name="abac-create-user"></a>

[Crea un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) chiamato `abac-test-user`. Nella sezione **Set permissions** (Imposta autorizzazioni), seleziona **Attach existing policies directly** (Collega direttamente le policy esistenti), quindi **Create policy** (Crea policy). Immetti la seguente definizione di policy. Sostituisci *111122223333* con il tuo [ID account AWS](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingYourAccountIdentifiers). Questa policy consente a `abac-test-user` di assumere il ruolo `abac-project-role`.

**Example : Consentire all'utente IAM di assumere il ruolo ABAC**  

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::111122223333:role/abac-project-role"
    }
  }
```

------

## Fase 7: Test delle autorizzazioni
<a name="abac-test"></a>

1. Accedi alla console come. AWS `abac-test-user` Per ulteriori informazioni, consulta [Accesso come utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html#user-sign-in-page).

1. Passare al ruolo `abac-project-role`. Per ulteriori informazioni, consulta [Cambio di un ruolo (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html).

1. [Crea una funzione Lambda](configuration-tags.md#using-tags-with-the-console):
   + In **Permissions** (Autorizzazioni), scegli **Change default execution role** (Modifica ruolo di esecuzione predefinito), quindi per **Execution role** (Ruolo di esecuzione), scegli **Use an existing role** (Utilizza un ruolo esistente). Scegli lo stesso ruolo di esecuzione che hai usato in [Fase 4: Concessione delle autorizzazioni IAM](#abac-iam-permissions).
   + In **Advanced settings** (Impostazioni avanzate), seleziona **Enable tags** (Abilita tag) quindi scegli **Add new tag** (Aggiungi nuovo tag). In **Chiave**, inserire `project`. Non immettere un **valore**.

1. [Esegui il test della funzione](testing-functions.md).

1. Crea una seconda funzione Lambda e aggiungi un tag diverso, ad esempio `environment`. Questa operazione dovrebbe non riuscire perché la policy ABAC creata in [Fase 1: richiesta di tag sulle nuove funzioni](#require-tag-on-create) consente al principale di creare solo funzioni con tag `project`.

1. Crea una terza funzione senza tag. Questa operazione dovrebbe non riuscire perché la policy ABAC creata in [Fase 1: richiesta di tag sulle nuove funzioni](#require-tag-on-create) non consente al principale di creare funzioni senza tag.

Questa strategia di autorizzazione consente di controllare l'accesso senza creare nuove policy per ogni nuovo utente. Per concedere l'accesso a nuovi utenti, è sufficiente concedere loro l'autorizzazione per assumere il ruolo che corrisponde al progetto assegnato.

## Fase 8: eliminare le risorse
<a name="abac-clean-up"></a>

**Per eliminare il ruolo IAM**

1. Aprire la pagina [Ruoli](https://console.aws.amazon.com/iam/home#/roles) della console IAM.

1. Seleziona il ruolo creato nella [fase 5](#abac-create-role).

1. Scegli **Elimina**.

1. Per confermare l'eliminazione, inserisci il nome del ruolo nel campo di immissione del testo.

1. Scegli **Elimina**.

**Per eliminare l'utente IAM**

1. Apri la pagina [Utenti](https://console.aws.amazon.com/iam/home#/users) nella console IAM.

1. Seleziona l'utente IAM creato nella [fase 6](#abac-create-user).

1. Scegli **Elimina**.

1. Per confermare l'eliminazione, inserisci il nome utente nel campo di immissione del testo.

1. Scegli **Elimina utente**.

**Per eliminare la funzione Lambda**

1. Aprire la pagina [Functions (Funzioni)](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Selezionare la funzione creata.

1. Scegliere **Operazioni**, **Elimina**.

1. Digita **confirm** nel campo di immissione testo e scegli **Delete** (Elimina).