View a markdown version of this page

Gestione di CMK tramite API - Servizio gestito per Apache Flink

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 API

Questo argomento descrive come creare e aggiornare i CMK KMS utilizzando le API di Amazon MSF. Per seguire le procedure descritte in questo argomento, devi disporre dell'autorizzazione per gestire la chiave KMS e l'applicazione Amazon MSF. Le procedure descritte in questo argomento utilizzano una politica chiave permissiva, utilizzata 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.

Crea e assegna chiavi KMS

Prima di iniziare, crea una chiave KMS. Per informazioni sulla creazione di una chiave KMS, consulta Create a KMS nella Developer Guide. AWS Key Management Service

Crea una policy chiave KMS

Per utilizzare CMK in Amazon MSF, devi aggiungere i seguenti principi di servizio alla tua policy 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 principi di servizio, Amazon MSF rifiuta la richiesta.

La seguente politica chiave KMS consente ad Amazon MSF di utilizzare un CMK per l'applicazione,. MyCmkApplication Questa politica concede le autorizzazioni necessarie sia al Operator ruolo che ai responsabili del servizio Amazon MSF e per eseguire le seguenti operazionikinesisanalytics.amazonaws.com: infrastructure.kinesisanalytics.amazonaws.com

  • Descrivi il CMK

  • Crittografa i dati dell'applicazione

  • Decifrare i dati dell'applicazione

  • Crea sovvenzioni per la chiave

L'esempio seguente utilizza i ruoli IAM. Puoi creare la policy chiave per la chiave KMS usando il seguente esempio 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 policy chiave. In caso contrario, la richiesta non verrà completata.

  • Sostituiscilo arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication con l'ARN della tua applicazione.

  • Sostituisci kinesisanalytics.us-east-1.amazonaws.com con un valore di servizio per la regione corrispondente.

  • Sostituisci 123456789012 con il tuo account la politica IDKey per CMK.

  • Aggiungi dichiarazioni politiche aggiuntive per consentire agli amministratori chiave di amministrare la chiave KMS. In caso contrario, si perderà l'accesso alla gestione della chiave.

Le seguenti dichiarazioni politiche chiave sono ampie perché intendono 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)

La seguente politica 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" } } } ] }

Aggiorna un'applicazione esistente per utilizzare CMK

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 utilizza AOKs per crittografare tutti i dati in uno storage temporaneo (storage di applicazioni in esecuzione) e duraturo (storage di applicazioni durevole). Ciò significa che tutti i dati soggetti a un checkpoint o a un'istantanea di Flink sono crittografati utilizzando AOKs per impostazione predefinita. 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 l'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.

    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" } } }
  2. Salva questo file. Ad esempio, salvalo con il nomeenable-cmk.json.

  3. Eseguite il AWS CLI comando update-application come illustrato nell'esempio seguente. In questo comando, fornisci 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 dell'API dispone di una dichiarazione politica che consente l'accesso alla chiave.

  • La politica chiave ha una dichiarazione politica che consente al chiamante dell'API di accedere alla chiave.

  • La politica chiave contiene una dichiarazione politica che consente al responsabile del servizio Amazon MSF, ad esempio, kinesisanalytics.amazonaws.com l'accesso alla chiave.

Torna da CMK a Chiave di proprietà di AWS

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" } } }
  2. Salva questo file. Ad esempio, salvalo con il nomedisable-cmk.json.

  3. Eseguite il AWS CLI comando update-application come illustrato nell'esempio seguente. In questo comando, fornisci il file di configurazione JSON creato nei passaggi precedenti come argomento del file.

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