Gestione di CMK tramite APIs - Servizio gestito per Apache Flink

Amazon Managed Service for Apache Flink (Amazon MSF) era precedentemente noto come Amazon Kinesis Data Analytics for 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 APIs

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.

Crea e assegna chiavi KMS

Prima di iniziare, crea una chiave KMS. Per informazioni sulla creazione di una chiave KMS, consulta Creare una chiave KMS nella Guida per gli AWS Key Management Service sviluppatori.

Crea una politica chiave KMS

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.

  • 123456789012Sostituiscilo con la policy IDKey del tuo account per CMK.

  • Aggiungi dichiarazioni politiche aggiuntive per consentire agli amministratori chiave di amministrare la 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)

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

{ "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

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 o a un'istantanea di Flink vengono crittografati per impostazione predefinita. 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.

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

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