View a markdown version of this page

Gestion de CMK à l'aide d'API - Service géré pour Apache Flink

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion de CMK à l'aide d'API

Cette rubrique explique comment créer et mettre à jour vos CMK KMS à l'aide des API Amazon MSF. Pour suivre les procédures décrites dans cette rubrique, vous devez être autorisé à gérer la clé KMS et l'application Amazon MSF. Les procédures décrites dans cette rubrique utilisent une politique de clé permissive, uniquement à des fins de démonstration et de test. Nous ne recommandons pas d'utiliser une politique de clé aussi permissive pour les charges de travail de production. Dans les scénarios réels relatifs aux charges de travail de production, les rôles, les autorisations et les flux de travail sont isolés.

Création et attribution de clés KMS

Avant de commencer, créez une clé KMS. Pour plus d'informations sur la création d'une clé KMS, voir Créer une clé KMS dans le Guide du AWS Key Management Service développeur.

Création d'une politique de clé KMS

Pour utiliser CMK dans Amazon MSF, vous devez ajouter les principaux de service suivants à votre politique clé : kinesisanalytics.amazonaws.com et. infrastructure.kinesisanalytics.amazonaws.com Amazon MSF utilise ces principes de service pour la validation et l'accès aux ressources. Si vous n'incluez pas ces responsables de service, Amazon MSF rejette la demande.

La politique de clé KMS suivante permet à Amazon MSF d'utiliser un CMK pour l'application. MyCmkApplication Cette politique accorde les autorisations nécessaires au Operator rôle et aux responsables du service Amazon MSFinfrastructure.kinesisanalytics.amazonaws.com, kinesisanalytics.amazonaws.com ainsi que pour effectuer les opérations suivantes :

  • Décrivez le CMK

  • Chiffrez les données de l'application

  • Déchiffrez les données de l'application

  • Créez des subventions pour la clé

L'exemple suivant utilise les rôles IAM. Vous pouvez créer la politique de clé pour la clé KMS en utilisant l'exemple suivant comme modèle, mais assurez-vous de procéder comme suit :

  • Remplacez arn:aws:iam::123456789012:role/Operator par le Operator rôle. Vous devez créer le Operator rôle ou l'utilisateur avant de créer la politique clé. Ne pas le faire entraînera l'échec de votre demande.

  • arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplicationRemplacez-le par l'ARN de votre application.

  • Remplacez kinesisanalytics.us-east-1.amazonaws.com par une valeur de service pour la région correspondante.

  • 123456789012Remplacez-la par la politique IDkey de votre compte pour CMK.

  • Ajoutez des déclarations de politique supplémentaires pour permettre aux administrateurs clés d'administrer la clé KMS. Si vous ne le faites pas, vous perdrez l'accès à la gestion de la clé.

Les principales déclarations de politique suivantes sont volumineuses car elles sont destinées à être explicites et à indiquer les conditions requises pour chaque action.

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

Autorisations d'opérateur du cycle de vie des applications (appelant d'API)

La politique IAM suivante garantit que l'opérateur du cycle de vie de l'application dispose des autorisations nécessaires pour attribuer une clé KMS à l'application. 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" } } } ] }

Mettre à jour une application existante pour utiliser CMK

Dans Amazon MSF, vous pouvez appliquer une politique CMK à une application existante qui utilise Clés détenues par AWS (AOK).

Par défaut, Amazon MSF utilise les AOK pour chiffrer toutes vos données dans un stockage éphémère (stockage d'applications en cours d'exécution) et durable (stockage d'applications durable). Cela signifie que toutes les données soumises à un point de contrôle ou à un instantané Flink sont cryptées à l'aide d'AOK par défaut. Lorsque vous remplacez l'AOK par une CMK, les nouveaux points de contrôle et les nouveaux instantanés sont chiffrés avec CMK. Cependant, les instantanés historiques resteront cryptés avec l'AOK.

Pour mettre à jour une application existante afin d'utiliser CMK
  1. Créez un fichier JSON avec la configuration suivante.

    Assurez-vous de remplacer la valeur de par le numéro CurrentApplicationVersionId de version actuel de l'application. Vous pouvez obtenir le numéro de version actuel de votre application à l'aide de DescribeApplication.

    Dans cette configuration JSON, pensez à remplacer les sample valeurs par les valeurs réelles.

    { "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. Enregistrez ce fichier. Par exemple, enregistrez-le avec le nomenable-cmk.json.

  3. Exécutez la AWS CLI commande update-application comme indiqué dans l'exemple suivant. Dans cette commande, indiquez le fichier de configuration JSON que vous avez créé lors des étapes précédentes en tant qu'argument de fichier.

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

La configuration précédente est acceptée pour mettre à jour l'application pour utiliser CMK uniquement si les conditions suivantes sont remplies :

  • L'appelant de l'API dispose d'une déclaration de politique qui autorise l'accès à la clé.

  • La politique clé comporte une déclaration de politique qui permet à l'appelant de l'API d'accéder à la clé.

  • La politique clé comporte une déclaration de politique qui permet au responsable du service Amazon MSF, par exemple, kinesisanalytics.amazonaws.com d'accéder à la clé.

Revenir de CMK à Clé détenue par AWS

Pour revenir d'un CMK à un AOK
  1. Créez un fichier JSON avec la configuration suivante.

    Dans cette configuration JSON, pensez à remplacer les sample valeurs par les valeurs réelles.

    { "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "AWS_OWNED_KEY" } } }
  2. Enregistrez ce fichier. Par exemple, enregistrez-le avec le nomdisable-cmk.json.

  3. Exécutez la AWS CLI commande update-application comme indiqué dans l'exemple suivant. Dans cette commande, indiquez le fichier de configuration JSON que vous avez créé lors des étapes précédentes en tant qu'argument de fichier.

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