

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

# Gestione delle chiavi in Amazon Managed Service per Apache Flink
<a name="key-management-flink"></a>

In Amazon MSF, puoi scegliere di utilizzare una delle chiavi gestite dai clienti [Chiavi gestite da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)o le tue [chiavi gestite dai clienti (CMKs)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key) per crittografare i dati. CMKs in AWS Key Management Service (AWS KMS) sono chiavi di crittografia che puoi creare, possedere e gestire autonomamente.

**Topics**
+ [Crittografia trasparente in Amazon MSF](#transparent-encryption-flink)
+ [Chiavi gestite dal cliente in Amazon MSF](#cmk-flink)
+ [Utilizzo di chiavi gestite dal cliente in Amazon MSF](use-cmk-flink.md)
+ [Gestione di CMK tramite Console di gestione AWS](manage-cmk-console.md)
+ [Gestione di CMK tramite APIs](manage-cmk-api.md)

## Crittografia trasparente in Amazon MSF
<a name="transparent-encryption-flink"></a>

Per impostazione predefinita, Amazon MSF utilizza Chiavi di proprietà di AWS (AOKs) per crittografare i dati in uno storage temporaneo (storage di applicazioni in esecuzione) e durevole (storage di applicazioni durevole). [Ciò significa che tutti i dati soggetti a un [checkpoint o a un'istantanea Flink verranno crittografati](how-fault.md) per impostazione predefinita.](how-snapshots.md) AOKs sono il metodo di crittografia predefinito in Amazon MSF e non è richiesta alcuna configurazione aggiuntiva. Per crittografare i dati in transito, Amazon MSF utilizza TLS e HTTP\$1SSL per impostazione predefinita e non richiede alcuna configurazione o configurazione aggiuntiva.

## Chiavi gestite dal cliente in Amazon MSF
<a name="cmk-flink"></a>

In Amazon MSF, CMK è una funzionalità che consente di crittografare i dati dell'applicazione con una chiave creata, posseduta e gestita dall'utente. AWS KMS

**Topics**
+ [Con cosa viene crittografato? CMKs](#what-is-encrypted-cmk)
+ [Con cosa non è crittografato? CMKs](#what-is-not-encrypted-cmk)
+ [Tipi di chiavi KMS supportati](#supported-kms-key-types)
+ [Autorizzazioni delle chiavi KMS](#kms-key-permissions)
+ [Contesto e vincoli di crittografia KMS](#kms-encryption-context-constraints)
+ [Politica di rotazione delle chiavi](#kms-key-rotation-policy)
+ [Dichiarazioni politiche chiave con privilegi minimi](#kms-least-privilege-policy-examples)
+ [Esempi di voci di AWS CloudTrail registro](#kms-cloudtrail-log-entries)

### Con cosa viene crittografato? CMKs
<a name="what-is-encrypted-cmk"></a>

In un'applicazione Amazon MSF, i dati soggetti a un checkpoint o snapshot Flink verranno crittografati con un CMK definito per quell'applicazione. Di conseguenza, la tua CMK crittograferà i dati archiviati nello storage delle applicazioni in esecuzione o nello storage durevole delle applicazioni. Le [seguenti sezioni](manage-cmk-api.md) descrivono la procedura di configurazione CMKs delle applicazioni Amazon MSF.

**Politica di rotazione delle chiavi**  
Amazon MSF non gestisce la politica di rotazione delle chiavi per te CMKs. Sei responsabile della rotazione delle chiavi. Questo perché tu crei e mantieni CMKs. Per informazioni su come utilizzare la politica di rotazione delle chiavi con CMK in Amazon MSF, consulta. [Politica di rotazione delle chiavi](#kms-key-rotation-policy)

### Con cosa non è crittografato? CMKs
<a name="what-is-not-encrypted-cmk"></a>

**Sorgenti e pozzi**  
La crittografia delle fonti di dati e dei sink non è gestita da Amazon MSF. È gestita dalla configurazione di origine o del sink o dalla configurazione del connettore dell'applicazione.

**Applicazione retroattiva della crittografia**  
CMK in Amazon MSF non fornisce supporto per l'applicazione retroattiva a uno CMKs snapshot storico esistente.

**crittografia dei log**  
Attualmente, Amazon MSF non supporta la crittografia dei log utilizzando KMS CMK per i log generati dal codice jar dell'applicazione. Dovrai assicurarti che i log non contengano dati che richiedono la crittografia CMK.

**Crittografia dei dati in transito**  
Non puoi usare CMK per crittografare i dati in transito. Per impostazione predefinita, Amazon MSF crittografa tutti i dati in transito utilizzando TLS o HTTP e SSL.

### Tipi di chiavi KMS supportati
<a name="supported-kms-key-types"></a>

CMK in Amazon MSF supporta chiavi [simmetriche](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks).

### Autorizzazioni delle chiavi KMS
<a name="kms-key-permissions"></a>

CMK in Amazon MSF richiede l'autorizzazione per eseguire le seguenti azioni KMS. Queste autorizzazioni sono necessarie per convalidare l'accesso, creare uno storage di applicazioni in esecuzione criptato CMK e archiviare lo stato delle applicazioni crittografate CMK in uno storage durevole delle applicazioni.
+ 

**[km: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)**  
Concede l'autorizzazione a risolvere un alias di chiave KMS nella chiave ARN.
+ 

**[kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)**  
Concede l'autorizzazione ad accedere allo stato durevole dell'applicazione e fornisce lo storage delle applicazioni in esecuzione.
+ 

**[km: GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)**  
Concede l'autorizzazione a memorizzare uno stato durevole dell'applicazione.
+ 

**[km: GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)**  
Concede l'autorizzazione per il provisioning dello storage delle applicazioni in esecuzione.
+ 

**[km: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)**  
Concede l'autorizzazione ad accedere all'archiviazione delle applicazioni in esecuzione.

### Contesto e vincoli di crittografia KMS
<a name="kms-encryption-context-constraints"></a>

CMK in Amazon MSF fornisce un contesto di crittografia quando si accede alle chiavi per leggere o scrivere dati crittografati, ovvero. `kms:EncryptionContext:aws:kinesisanalytics:arn` Oltre al contesto di crittografia, i contesti di origine [aws: SourceArn e [aws: SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) vengono forniti durante la lettura o la scrittura di applicazioni di storage durevole.

Quando si crea una concessione per fornire lo storage crittografato di applicazioni in esecuzione, Amazon MSF CMK crea sovvenzioni con tipo di vincolo che [EncryptionContextSubset](https://docs.aws.amazon.com/kms/latest/developerguide/create-grant-overview.html#grant-constraints)garantiscono che sia consentita solo l'operazione [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). `"kms:GrantOperations": "Decrypt"`

### Politica di rotazione delle chiavi
<a name="kms-key-rotation-policy"></a>

Amazon MSF non gestisce la politica di rotazione delle chiavi per te CMKs. Sei responsabile della rotazione delle chiavi perché sei tu a creare e gestire CMKs.

In KMS utilizzi la rotazione automatica o manuale delle chiavi per creare nuovo materiale crittografico per te. CMKs *Per informazioni su come ruotare le chiavi, consulta [Ruotare AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) nella Guida per gli sviluppatori.AWS Key Management Service *

Quando ruoti le chiavi CMKs in Amazon MSF, devi assicurarti che l'operatore (chiamante API) disponga delle autorizzazioni sia per la chiave precedente che per quella nuova.

**Nota**  
Un'applicazione può iniziare da un'istantanea crittografata con AOK dopo essere stata configurata per utilizzare CMK. Un'applicazione può anche iniziare da un'istantanea crittografata con una vecchia CMK. Per avviare un'applicazione da un'istantanea, l'operatore (chiamante API) deve disporre delle autorizzazioni sia per la vecchia che per la nuova chiave.

In Amazon MSF, ti consigliamo di interrompere e riavviare le applicazioni utilizzando la crittografia CMK. Ciò garantisce che la nuova chiave master di rotazione venga applicata a tutti i dati nello storage delle applicazioni in esecuzione e nello storage durevole delle applicazioni. Se non si interrompe e non si riavvia l'applicazione, il nuovo materiale chiave verrà applicato solo allo storage durevole delle applicazioni. L'archiviazione delle applicazioni in esecuzione continuerà a essere crittografata utilizzando il materiale della chiave di rotazione precedente.

Se stai modificando l' AWS KMS key ARN utilizzato per CMK, dovresti utilizzarlo in [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)Amazon MSF. Ciò garantirà il riavvio dell'applicazione Flink durante l'`UpdateApplication`applicazione delle modifiche CMK.

**Nota**  
Quando fornisci un alias o un alias ARN, Amazon MSF risolve l'alias in ARN chiave e memorizza la chiave ARN come chiave configurata per l'applicazione.

### Dichiarazioni politiche chiave con privilegi minimi
<a name="kms-least-privilege-policy-examples"></a>

Per informazioni sulle dichiarazioni politiche chiave, vedere e. [Crea una politica chiave KMS](manage-cmk-api.md#create-cmk-kms-key-policy) [Autorizzazioni dell'operatore del ciclo di vita dell'applicazione (chiamante API)](manage-cmk-api.md#create-cmk-kms-api-caller-permissions)

### Esempi di voci di AWS CloudTrail registro
<a name="kms-cloudtrail-log-entries"></a>

Quando Amazon MSF utilizza CMKs AWS KMS, registra AWS CloudTrail automaticamente tutte le chiamate AWS KMS API e i relativi dettagli. Questi log contengono informazioni, come la richiesta, l' Servizio AWS ARN della chiave KMS, le azioni API eseguite e i timestamp che escludono i dati crittografati. Questi registri forniscono percorsi di controllo essenziali per la conformità, il monitoraggio della sicurezza e la risoluzione dei problemi, mostrando quali servizi hanno avuto accesso alle chiavi e quando.

**Esempio 1: AWS KMS decrittografa una chiamata API utilizzando un ruolo presunto in Amazon MSF**  
Il seguente CloudTrail registro mostra Amazon MSF che esegue un'operazione di test [KMS:Decrypt su](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) un CMK. Amazon MSF effettua questa richiesta utilizzando un **Operator** ruolo mentre utilizza l'[CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)API. Il registro seguente include dettagli essenziali, come l'ARN della chiave KMS di destinazione, l'applicazione Amazon MSF associata *MyCmkApplication* () e il timestamp dell'operazione.

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "REDACTED",
        "arn": "arn:aws:sts::123456789012:assumed-role/Operator/CmkTestingSession",
        "accountId": "123456789012",
        "accessKeyId": "REDACTED",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "REDACTED",
                "arn": "arn:aws:iam::123456789012:role/Operator",
                "accountId": "123456789012",
                "userName": "Operator"
            },
            "attributes": {
                "creationDate": "2025-08-07T13:29:28Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "kinesisanalytics.amazonaws.com"
    },
    "eventTime": "2025-08-07T13:45:45Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "kinesisanalytics.amazonaws.com",
    "userAgent": "kinesisanalytics.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "encryptionContext": {
            "aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication"
        },
        "keyId": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "dryRun": true
    },
    "responseElements": null,
    "additionalEventData": {
        "keyMaterialId": "REDACTED"
    },
    "requestID": "56764d19-1eb1-48f1-8044-594aa7dd05c4",
    "eventID": "1371b402-f1dc-4c47-8f3a-1004e4803c5a",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```

**Esempio 2: AWS KMS Decrittografa la chiamata API in Amazon MSF con l'autenticazione diretta del servizio**  
Il seguente CloudTrail registro mostra Amazon MSF che esegue un'operazione di test [KMS:Decrypt su](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) un CMK. Amazon MSF effettua questa richiesta tramite AWS service-to-service l'autenticazione diretta anziché assumere un ruolo. Il registro seguente include dettagli essenziali, come l'ARN della chiave KMS di destinazione, l'applicazione Amazon MSF associata *MyCmkApplication* () e un ID evento condiviso dell'operazione.

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "kinesisanalytics.amazonaws.com"
    },
    "eventTime": "2025-08-07T13:45:45Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "kinesisanalytics.amazonaws.com",
    "userAgent": "kinesisanalytics.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "encryptionContext": {
            "aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication"
        },
        "dryRun": true
    },
    "responseElements": null,
    "additionalEventData": {
        "keyMaterialId": "REDACTED"
    },
    "requestID": "5fe45ada-7519-4608-be2f-5a9b8ddd62b2",
    "eventID": "6206b08f-ce04-3011-9ec2-55951d357b2c",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "Application-account-ID",
    "sharedEventID": "acbe4a39-ced9-4f53-9f3c-21ef7e89dc37",
    "eventCategory": "Management"
}
```

# Utilizzo di chiavi gestite dal cliente in Amazon MSF
<a name="use-cmk-flink"></a>

È necessario considerare i seguenti fattori quando si stabiliscono, gestiscono e utilizzano applicazioni Amazon MSF soggette a una politica CMK.

**Chiave gestita dal cliente**  
Questa è la [politica](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) e il materiale [chiave](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-material). Dovrai creare una chiave che venga utilizzata per crittografare lo stato dell'applicazione nello storage delle applicazioni in esecuzione e nello storage durevole delle applicazioni.

**Operatore del ciclo di vita dell'applicazione (chiamante API)**  
Questo è l'utente o il ruolo **Operator** IAM. L'operatore può essere un essere umano o un'automazione, ad esempio una CI/CD pipeline che creerà, distribuirà ed eseguirà l'applicazione Amazon MSF. L'operatore del ciclo di vita dell'applicazione può essere un ruolo o un utente IAM.

**Nota**  
È possibile che l'amministratore principale e l'operatore siano la stessa persona. In questo caso, ti consigliamo di utilizzare sempre ruoli o utenti separati.

**Applicazione**  
Questa è l'applicazione Amazon MSF che crei. Il ruolo di esecuzione dell'applicazione (IAM) non richiede modifiche per utilizzare CMK. Per ulteriori informazioni su IAM in Amazon MSF, consulta[Identity and Access Management per il servizio gestito da Amazon per Apache Flink](security-iam.md).

**Dipendenze tra le politiche**  
Esistono interdipendenze tra la policy chiave assegnata alla CMK e la policy IAM che definisce le autorizzazioni dell'operatore del ciclo di vita dell'applicazione. Potresti volerli creare nell'ordine seguente:  
Crea l'utente o il ruolo Operator IAM senza che la policy IAM definisca le autorizzazioni per CMK. L'operatore crea l'applicazione con AOK.
Crea l'amministratore delle chiavi con le autorizzazioni per gestire le chiavi KMS. L'amministratore delle chiavi crea la CMK. I principali riferimenti politici al ruolo ARNs Operatore e amministratore e all'ARN dell'applicazione. Per ulteriori informazioni, consulta [Crea una politica chiave KMS](manage-cmk-api.md#create-cmk-kms-key-policy).
Crea una politica IAM per l'operatore che consenta di gestire CMK per l'applicazione. Per ulteriori informazioni, consulta [Autorizzazioni dell'operatore del ciclo di vita dell'applicazione (chiamante API)](manage-cmk-api.md#create-cmk-kms-api-caller-permissions). Allega la nuova policy IAM all'operatore. L'operatore aggiorna l'applicazione abilitando CMK. Per ulteriori informazioni, consulta [Aggiornare un'applicazione esistente per utilizzare CMK](manage-cmk-api.md#update-existing-app-use-cmk-api).
Se l'applicazione non esiste, crea l'applicazione senza CMK.

L'illustrazione seguente mostra come CMK è implementato in Amazon MSF.

![\[Implementazione di chiavi gestite dal cliente in Amazon MSF.\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/images/MSF_CMK_architecture.png)


1. **Chiave gestita dal cliente (CMK)**: comprende la politica e il materiale chiave chiave.

1. **Amministratore chiave**: l'utente o il ruolo `KeyAdmin` IAM.

1. **Operatore del ciclo di vita dell'applicazione (chiamante API)**: l'utente o il ruolo dell'operatore IAM.

1. **Applicazione**: ha un ruolo di esecuzione (IAM) associato.

# Gestione di CMK tramite Console di gestione AWS
<a name="manage-cmk-console"></a>

Questo argomento descrive come creare e aggiornare il tuo KMS CMKs utilizzando. Console di gestione AWS Per seguire le procedure descritte in questo argomento, devi disporre dell'autorizzazione per gestire la chiave KMS e l'applicazione Amazon MSF. Le procedure in questo argomento utilizzano una politica di chiave permissiva, che è solo a scopo dimostrativo e di test. **Non è consigliabile** utilizzare una politica chiave così permissiva per i carichi di lavoro di produzione. Per i carichi di lavoro di produzione, puoi utilizzare la console, ma in scenari reali, i ruoli, le autorizzazioni e i flussi di lavoro sono isolati.

Prima di iniziare, crea una chiave KMS. *Per informazioni sulla creazione di una chiave KMS, consulta [Creare una chiave KMS nella Guida per](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) gli AWS Key Management Service sviluppatori.*

## Crea e assegna chiavi KMS
<a name="create-assign-cmks-console"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. **Nella pagina **Applicazioni di streaming**, scegli Crea applicazione di streaming.**

1. Per la **versione Apache Flink**, assicurati di scegliere **Apache** Flink 1.20.

1. **Per la **crittografia**, scegli Usa chiave gestita dal cliente.**

1. Se non disponi di una chiave KMS, scegli **Crea una AWS KMS key** chiave KMS e crea una chiave KMS. Per informazioni su come creare la chiave, consulta [Uso della AWS KMS console nella Guida](https://docs.aws.amazon.com/kms/latest/developerguide/create-symmetric-cmk.html) per gli *AWS Key Management Service sviluppatori*.

1. Se non disponi di una chiave KMS, scegli **Crea una AWS KMS key** chiave KMS e crea una chiave KMS. Per informazioni su come creare la chiave utilizzando la console, consulta [Creare una chiave KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-symmetric-cmk.html).

1. Scegli la chiave nel selettore che desideri utilizzare. Ricorda che è consentita solo la chiave con lo stato **Abilitato**.

## Aggiorna un'applicazione esistente per utilizzare CMK
<a name="update-existing-cmk-console"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nella pagina delle **applicazioni di streaming**, scegli un'applicazione con Flink versione 1.20.

1. Scegli **Configura**.

1. Per la **crittografia**, scegli **Usa chiave gestita dal cliente**.

1. Se non disponi di una chiave KMS, scegli **Crea una AWS KMS key** chiave KMS e crea una chiave KMS. Per informazioni su come creare la chiave utilizzando la console, consulta [Creare una chiave KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-symmetric-cmk.html).

1. Scegli la chiave nel selettore che desideri utilizzare. Ricorda che è consentita solo la chiave con lo stato **Abilitato**.

## Passa da CMK a un Chiave di proprietà di AWS
<a name="revert-cmk-to-aok-console"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nella pagina delle **applicazioni di streaming**, scegli un'applicazione con Flink versione 1.20.

1. Scegli **Configura**.

1. **Per **Crittografia**, scegli Usa. Chiave di proprietà di AWS**

# Gestione di CMK tramite APIs
<a name="manage-cmk-api"></a>

Questo argomento descrive come creare e aggiornare il tuo KMS CMKs utilizzando Amazon MSF APIs. Per seguire le procedure descritte in questo argomento, devi disporre dell'autorizzazione per gestire la chiave KMS e l'applicazione Amazon MSF. Le procedure in questo argomento utilizzano una politica di chiave permissiva, che è solo a scopo dimostrativo e di test. **Non è consigliabile** utilizzare una politica chiave così permissiva per i carichi di lavoro di produzione. Negli scenari reali per i carichi di lavoro di produzione, i ruoli, le autorizzazioni e i flussi di lavoro sono isolati.

**Topics**
+ [Crea e assegna chiavi KMS](#create-assign-cmk-api)
+ [Aggiornare un'applicazione esistente per utilizzare CMK](#update-existing-app-use-cmk-api)
+ [Torna da CMK a Chiave di proprietà di AWS](#revert-cmk-to-aok-api)

## Crea e assegna chiavi KMS
<a name="create-assign-cmk-api"></a>

Prima di iniziare, crea una chiave KMS. *Per informazioni sulla creazione di una chiave KMS, consulta [Creare una chiave KMS nella Guida per](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) gli AWS Key Management Service sviluppatori.*

**Topics**
+ [Crea una politica chiave KMS](#create-cmk-kms-key-policy)
+ [Autorizzazioni dell'operatore del ciclo di vita dell'applicazione (chiamante API)](#create-cmk-kms-api-caller-permissions)

### Crea una politica chiave KMS
<a name="create-cmk-kms-key-policy"></a>

Per utilizzare CMK in Amazon MSF, devi aggiungere i seguenti principi di servizio alla tua politica chiave: e. `kinesisanalytics.amazonaws.com` `infrastructure.kinesisanalytics.amazonaws.com` Amazon MSF utilizza questi principi di servizio per la convalida e l'accesso alle risorse. Se non includi questi principali di servizio, Amazon MSF rifiuta la richiesta.

La seguente politica delle chiavi KMS consente ad Amazon MSF di utilizzare una CMK per l'applicazione,. *MyCmkApplication* Questa politica concede le autorizzazioni necessarie sia al **Operator** ruolo che ai responsabili del servizio Amazon MSF `kinesisanalytics.amazonaws.com` e per eseguire le `infrastructure.kinesisanalytics.amazonaws.com` seguenti operazioni:
+ Descrivi la CMK
+ Crittografa i dati dell'applicazione
+ Decrittografa i dati dell'applicazione
+ Crea sovvenzioni per la chiave

L'esempio seguente utilizza i ruoli IAM. Puoi creare la politica chiave per la chiave KMS utilizzando l'esempio seguente come modello, ma assicurati di fare quanto segue: 
+ Sostituisci `arn:aws:iam::123456789012:role/Operator` con il **Operator** ruolo. È necessario creare il **Operator** ruolo o l'utente prima di creare la politica chiave. In caso contrario, la richiesta non andrà a buon fine.
+ Sostituisci `arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication` con l'ARN dell'applicazione.
+ Sostituisci `kinesisanalytics.us-east-1.amazonaws.com` con un valore di servizio per la regione corrispondente.
+ *123456789012*Sostituiscilo con la policy IDKey del tuo account per CMK.
+ Aggiungi dichiarazioni politiche aggiuntive per [consentire agli amministratori chiave di amministrare la](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#key-policy-default-allow-administrators) chiave KMS. In caso contrario, si verificherà la perdita dell'accesso alla gestione della chiave.

Le seguenti dichiarazioni politiche chiave sono ampie perché sono pensate per essere esplicite e mostrano le condizioni richieste da ciascuna azione.

```
{
    "Version":"2012-10-17",			 	 	 	 	 	 
    "Id": "MyMsfCmkApplicationKeyPolicy",
    "Statement": [
        {
            "Sid": "AllowOperatorToDescribeKey",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/Operator"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowOperatorToConfigureAppToUseKeyForApplicationState",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/Operator"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowOperatorToConfigureAppToCreateGrantForRunningState",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/Operator"
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com",
                    "kms:GrantConstraintType": "EncryptionContextSubset"
                },
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": "Decrypt"
                }
            }
        },
        {
            "Sid": "AllowMSFServiceToDescribeKey",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "kinesisanalytics.amazonaws.com",
                    "infrastructure.kinesisanalytics.amazonaws.com"
                ]
            },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "aws:SourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "AllowMSFServiceToGenerateDataKeyForDurableState",
            "Effect": "Allow",
            "Principal": {
                "Service": "kinesisanalytics.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "aws:SourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "AllowMSFServiceToDecryptForDurableState",
            "Effect": "Allow",
            "Principal": {
                "Service": "kinesisanalytics.amazonaws.com"
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication"
                }
            }
        },
        {
            "Sid": "AllowMSFServiceToUseKeyForRunningState",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "infrastructure.kinesisanalytics.amazonaws.com"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication"
                }
            }
        },
        {
            "Sid": "AllowMSFServiceToCreateGrantForRunningState",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "infrastructure.kinesisanalytics.amazonaws.com"
                ]
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "kms:GrantConstraintType": "EncryptionContextSubset"
                },
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": "Decrypt"
                }
            }
        }
    ]
}
```

### Autorizzazioni dell'operatore del ciclo di vita dell'applicazione (chiamante API)
<a name="create-cmk-kms-api-caller-permissions"></a>

La seguente policy IAM garantisce che l'operatore del ciclo di vita dell'applicazione disponga delle autorizzazioni necessarie per assegnare una chiave KMS all'applicazione,. *MyCmkApplication*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowMSFAPICalls",
            "Effect": "Allow",
            "Action": "kinesisanalytics:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowPassingServiceExecutionRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::123456789012:role/MyCmkApplicationRole"
        },
        {
            "Sid": "AllowDescribeKey",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowMyCmkApplicationKeyOperationsForDurableState",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication"
                }
            }
        },
        {
            "Sid": "AllowMyCmkApplicationKeyOperationsForRunningState",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication"
                }
            }
        },
        {
            "Sid": "AllowMyCmkApplicationCreateGrantForRunningState",
            "Effect": "Allow",
            "Action": "kms:CreateGrant",
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": "Decrypt"
                },
                "StringEquals": {
                    "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:kinesisanalytics:arn": 
                        "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication",
                    "kms:GrantConstraintType": "EncryptionContextSubset"
                }
            }
        }
    ]
}
```

------

## Aggiornare un'applicazione esistente per utilizzare CMK
<a name="update-existing-app-use-cmk-api"></a>

In Amazon MSF, puoi applicare una policy CMK a un'applicazione esistente che utilizza Chiavi di proprietà di AWS ()AOKs.

Per impostazione predefinita, Amazon MSF AOKs crittografa tutti i dati in uno storage temporaneo (archiviazione delle applicazioni in esecuzione) e durevole (archiviazione durevole delle applicazioni). [Ciò significa che tutti i dati soggetti a un [checkpoint](how-fault.md) o a un'istantanea di Flink vengono crittografati per impostazione predefinita.](how-snapshots.md) AOKs Quando si sostituisce l'AOK con un CMK, i nuovi checkpoint e le istantanee vengono crittografati con CMK. Tuttavia, le istantanee storiche rimarranno crittografate con AOK.

**Per aggiornare un'applicazione esistente per utilizzare CMK**

1. Crea un file JSON con la seguente configurazione. 

   Assicurati di sostituire il valore di con `CurrentApplicationVersionId` il numero di versione corrente dell'applicazione. È possibile ottenere il numero di versione corrente dell'applicazione, utilizzando [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html).

   In questa configurazione JSON, ricordati di sostituire i *sample* valori con i valori effettivi.

   ```
   {
       "ApplicationName": "MyCmkApplication",
       "CurrentApplicationVersionId": 1,
       "ApplicationConfigurationUpdate": {
           "ApplicationEncryptionConfigurationUpdate": {
               "KeyTypeUpdate": "CUSTOMER_MANAGED_KEY",
               "KeyIdUpdate": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
           }
       }
   }
   ```

1. Salva questo file. Ad esempio, salvalo con il nome**enable-cmk.json**.

1. Eseguite il AWS CLI comando [update-application](https://docs.aws.amazon.com/cli/latest/reference/kinesisanalyticsv2/update-application.html) come illustrato nell'esempio seguente. In questo comando, fornite il file di configurazione JSON creato nei passaggi precedenti come argomento del file.

   ```
   aws kinesisanalyticsv2 update-application \
       --cli-input-json file://enable-cmk.json
   ```

La configurazione precedente è accettata per aggiornare l'applicazione per l'utilizzo di CMK solo se sono soddisfatte le seguenti condizioni:
+ Il chiamante API dispone di una dichiarazione di politica che consente l'accesso alla chiave.
+ Key Policy ha una dichiarazione politica che consente al chiamante dell'API di accedere alla chiave.
+ La policy chiave ha una dichiarazione politica che consente al principale del servizio Amazon MSF, ad esempio, `kinesisanalytics.amazonaws.com` l'accesso alla chiave.

## Torna da CMK a Chiave di proprietà di AWS
<a name="revert-cmk-to-aok-api"></a>

**Per tornare da CMK a un AOK**

1. Crea un file JSON con la seguente configurazione.

   In questa configurazione JSON, ricordati di sostituire *sample* i valori con i valori effettivi.

   ```
   {
       "ApplicationName": "MyCmkApplication",
       "CurrentApplicationVersionId": 1,
       "ApplicationConfigurationUpdate": {
           "ApplicationEncryptionConfigurationUpdate": {
               "KeyTypeUpdate": "AWS_OWNED_KEY"
           }
       }
   }
   ```

1. Salva questo file. Ad esempio, salvalo con il nome**disable-cmk.json**.

1. Eseguite il AWS CLI comando [update-application](https://docs.aws.amazon.com/cli/latest/reference/kinesisanalyticsv2/update-application.html) come illustrato nell'esempio seguente. In questo comando, fornite il file di configurazione JSON creato nei passaggi precedenti come argomento del file.

   ```
   aws kinesisanalyticsv2 update-application \
       --cli-input-json file://disable-cmk.json
   ```