

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

# Crittografia dei pacchetti di implementazione .zip per Lambda
<a name="encrypt-zip-package"></a>

Lambda fornisce sempre la crittografia lato server dei dati a riposo per i pacchetti di implementazione .zip e i dettagli di configurazione delle funzioni con una AWS KMS key. Per impostazione predefinita, Lambda utilizza un [Chiave di proprietà di AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk). Se questo comportamento predefinito si adatta al tuo flusso di lavoro, non devi configurare nient'altro. AWS non ti addebita alcun costo per l'utilizzo di questa chiave.

Se preferisci, puoi invece fornire una chiave gestita AWS KMS dal cliente. È possibile eseguire questa operazione per avere il controllo sulla rotazione della chiave KMS o per soddisfare i requisiti dell'organizzazione per la gestione delle chiavi KMS. Quando si utilizza una chiave gestita dal cliente, solo gli utenti del tuo account con accesso alla chiave KMS possono visualizzare o gestire il codice o la configurazione della funzione.

Le chiavi gestite dal cliente sono soggette a costi standard AWS KMS . Per ulteriori informazioni, consultare [Prezzi di AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

## Creazione di una chiave gestita dal cliente
<a name="create-key"></a>

 È possibile creare una chiave simmetrica gestita dal cliente utilizzando, o il Console di gestione AWS. AWS KMS APIs

**Per creare una chiave simmetrica gestita dal cliente**

Segui le fasi descritte in [Creazione delle chiavi KMS per la crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.

### Permissions
<a name="enable-zip-permissions"></a>

**Policy della chiave**

Le [policy della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) controllano l'accesso alla chiave gestita dal cliente. Ogni chiave gestita dal cliente deve avere esattamente una policy della chiave, che contiene istruzioni che determinano chi può usare la chiave e come la possono usare. Per ulteriori informazioni, consulta [Come modificare una policy delle chiavi](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) nella *Guida per gli sviluppatori di AWS Key Management Service *.

Quando si utilizza una chiave gestita dal cliente per crittografare un pacchetto di implementazione .zip, Lambda non aggiunge alcuna [concessione](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) alla chiave. Invece, la tua policy AWS KMS chiave deve consentire a Lambda di chiamare le seguenti operazioni AWS KMS API per tuo conto:
+ [km: GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

Il seguente esempio di policy chiave consente a tutte le funzioni Lambda nell'account 111122223333 di richiamare le AWS KMS operazioni richieste per la chiave gestita dal cliente specificata:

**Example AWS KMS politica chiave**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringLike": {
                "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:*"
                }
            }
        }
    ]
}
```

Per informazioni sulla [Risoluzione dei problemi delle chiavi di accesso](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam) consulta la *Guida per gli sviluppatori di AWS Key Management Service *.

**Autorizzazioni del principale**

Quando si utilizza una chiave gestita dal cliente per crittografare un pacchetto di implementazione .zip, solo i [principali](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html) che hanno accesso a quella chiave possono accedere al pacchetto di implementazione .zip. Ad esempio, i responsabili che non hanno accesso alla chiave gestita dal cliente non possono scaricare il pacchetto.zip utilizzando l'URL S3 predefinito incluso nella risposta. [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html) `AccessDeniedException` viene restituito nella sessione `Code` della risposta.

**Example AWS KMS AccessDeniedException**  

```
{
    "Code": {
        "RepositoryType": "S3",
        "Error": {
            "ErrorCode": "AccessDeniedException",
            "Message": "KMS access is denied. Check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: User: arn:aws:sts::111122223333:assumed-role/LambdaTestRole/session is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:111122223333:key/key-id with an explicit deny in a resource-based policy"
        },
        "SourceKMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id"
    },
	...
```

Per ulteriori informazioni sulle autorizzazioni per le AWS KMS chiavi, consulta [Autenticazione](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) e controllo degli accessi per. AWS KMS

## Utilizzo di una chiave gestita dal cliente per il pacchetto di implementazione .zip
<a name="enable-zip-custom-encryption"></a>

Utilizza i seguenti parametri API per configurare le chiavi gestite dal cliente per i pacchetti di implementazione .zip:
+ [Source KMSKey Arn](https://docs.aws.amazon.com/lambda/latest/api/API_FunctionCode.html#lambda-Type-FunctionCode-SourceKMSKeyArn): crittografa il pacchetto di distribuzione.zip di origine (il file che carichi).
+ [KMSKeyArn](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-KMSKeyArn)[: crittografa le [variabili di ambiente e le istantanee](configuration-envvars-encryption.md) Lambda. SnapStart](snapstart.md)

Quando `SourceKMSKeyArn` e `KMSKeyArn` sono specificati entrambi, Lambda utilizza la chiave `KMSKeyArn` per crittografare la versione decompressa del pacchetto utilizzata da Lambda per richiamare la funzione. Quando `SourceKMSKeyArn` è specificato ma `KMSKeyArn` non lo è, Lambda utilizza una [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) per crittografare la versione decompressa del pacchetto.

------
#### [ Lambda console ]

**Per aggiungere la crittografia della chiave gestita dal cliente durante la creazione di una funzione**

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

1. Scegli **Crea funzione**.

1. Scegliere **Author from scratch** (Crea da zero) o **Container image** (Immagine di container). 

1. In **Basic information (Informazioni di base)** eseguire queste operazioni:

   1. In **Function name (Nome funzione)**, immettere il nome della funzione.

   1. Per **Runtime**, scegliere la versione della lingua da utilizzare per la funzione.

1. Espandi **Impostazioni avanzate**, quindi seleziona **Abilita la crittografia con una AWS KMS ** chiave gestita dal cliente.

1. Scegli una chiave gestita dal cliente.

1. Scegli **Crea funzione**.

Per rimuovere la crittografia con la chiave gestita dal cliente o per utilizzare una chiave diversa, è necessario caricare nuovamente il pacchetto di implementazione .zip.

**Per aggiungere la crittografia con la chiave gestita dal cliente a una funzione esistente**

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

1. Scegliere il nome della funzione.

1. Nel riquadro **Origine del codice**, scegli **Carica da**.

1. Scegli il **file .zip** o la **posizione di Amazon S3**.  
![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/upload-zip.png)

1. Carica il file o inserisci la posizione Amazon S3.

1. Scegli **Abilita la crittografia con una chiave gestita dal AWS KMS cliente**.

1. Scegli una chiave gestita dal cliente.

1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

**Per aggiungere la crittografia della chiave gestita dal cliente durante la creazione di una funzione**

Nel seguente esempio [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html):
+ `--code`: specifica il percorso locale del pacchetto di distribuzione.zip (`ZipFile`) e la chiave gestita dal cliente per crittografarlo (). `SourceKMSKeyArn`
+ `--kms-key-arn`: specifica la chiave gestita dal cliente per crittografare le variabili d'ambiente e la versione compressa del pacchetto di implementazione.

```
aws lambda create-function \
  --function-name myFunction \
  --runtime nodejs24.x \
  --handler index.handler \
  --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
  --code ZipFile=fileb://myFunction.zip,SourceKMSKeyArn=arn:aws:kms:us-east-1:111122223333:key/key-id \
  --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id
```

Nel seguente esempio [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html):
+ `--code`: specifica la posizione del file.zip in un bucket Amazon S3 `S3Bucket` (`S3Key`,`S3ObjectVersion`,) e la chiave gestita dal cliente per crittografarlo (). `SourceKMSKeyArn`
+ `--kms-key-arn`: specifica la chiave gestita dal cliente per crittografare le variabili d'ambiente e la versione compressa del pacchetto di implementazione.

```
aws lambda create-function \
  --function-name myFunction \
  --runtime nodejs24.x --handler index.handler \
  --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
  --code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion,SourceKMSKeyArn=arn:aws:kms:us-east-1:111122223333:key/key-id \
  --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id
```

**Per aggiungere la crittografia con la chiave gestita dal cliente a una funzione esistente**

Nell'esempio seguente: [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)
+ `--zip-file`: specifica il percorso locale del pacchetto di implementazione .zip.
+ `--source-kms-key-arn`: specifica la chiave gestita dal cliente per crittografare la versione compressa del pacchetto di implementazione. Lambda utilizza una chiave AWS proprietaria per crittografare il pacchetto decompresso per le chiamate di funzioni. Se desideri utilizzare una chiave gestita dal cliente per crittografare la versione decompressa del pacchetto, esegui il comando con l'opzione. [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)`--kms-key-arn`

```
aws lambda update-function-code \
  --function-name myFunction \
  --zip-file fileb://myFunction.zip \
  --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id
```

Nel seguente esempio: [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)
+ `--s3-bucket`: specifica la posizione del file .zip in un bucket Amazon S3.
+ `--s3-key`: specifica la chiave Amazon S3 del pacchetto di implementazione.
+ `--s3-object-version`: per gli oggetti con versione, la versione dell'oggetto del pacchetto di implementazione da utilizzare.
+ `--source-kms-key-arn`: specifica la chiave gestita dal cliente per crittografare la versione compressa del pacchetto di implementazione. Lambda utilizza una chiave AWS proprietaria per crittografare il pacchetto decompresso per le chiamate di funzioni. Se desideri utilizzare una chiave gestita dal cliente per crittografare la versione decompressa del pacchetto, esegui il comando con l'opzione. [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)`--kms-key-arn`

```
aws lambda update-function-code \
  --function-name myFunction \
  --s3-bucket amzn-s3-demo-bucket \
  --s3-key myFileName.zip \
  --s3-object-version myObject Version
  --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id
```

**Per rimuovere la crittografia con la chiave gestita dal cliente da una funzione esistente**

Nell'[update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)esempio seguente, `--zip-file` specifica il percorso locale del pacchetto di distribuzione.zip. Quando esegui questo comando senza l'`--source-kms-key-arn`opzione, Lambda utilizza una chiave AWS proprietaria per crittografare la versione compressa del pacchetto di distribuzione.

```
aws lambda update-function-code \
  --function-name myFunction \
  --zip-file fileb://myFunction.zip
```

------