

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