Amazon Managed Service for Apache Flink (Amazon MSF) était auparavant connu sous le nom d'Amazon Kinesis Data Analytics 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 de APIs
Cette rubrique explique comment créer et mettre à jour votre KMS à CMKs l'aide d'Amazon MSF. APIs 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.
Sur cette page
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éation d'une clé KMS dans le Guide du AWS Key Management Service développeur.
Dans cette section
Création d'une politique de clé KMS
Pour utiliser CMK dans Amazon MSF, vous devez ajouter les principes de service suivants à votre politique clé : et. kinesisanalytics.amazonaws.com
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 principes de service, Amazon MSF rejette la demande.
La politique de clé KMS suivante permet à Amazon MSF d'utiliser une clé CMK pour l'application. MyCmkApplication
Cette politique accorde les autorisations nécessaires à la fois 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
-
Chiffrer les données de l'application
-
Déchiffrer les données de l'application
-
Créez des subventions pour la clé
L'exemple suivant utilise des rôles IAM. Vous pouvez créer la politique de clé pour la clé KMS en utilisant l'exemple suivant comme modèle, mais veillez à effectuer les opérations suivantes :
-
Remplacez
arn:aws:iam::
par le123456789012
:role/OperatorOperator
rôle. Vous devez créer leOperator
rôle ou l'utilisateur avant de créer la politique clé. Si vous ne le faites pas, votre demande échouera. -
arn:aws:kinesisanalytics:us-east-1:
Remplacez-le par l'ARN de votre application.123456789012
:application/MyCmkApplication
-
Remplacez
kinesisanalytics.
par une valeur de service pour la région correspondante.us-east-1
.amazonaws.com -
Remplacez
123456789012
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 déclarations de politique clés suivantes sont volumineuses car elles sont censé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
{ "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 ()AOKs.
Par défaut, Amazon MSF chiffre toutes vos données dans un stockage éphémère (stockage d'applications en cours d'exécution) et durable (stockage d'applications durable). AOKs Cela signifie que toutes les données soumises à un point de contrôle ou à un instantané Flink sont cryptées AOKs par défaut. Lorsque vous remplacez l'AOK par une clé CMK, les nouveaux points de contrôle et les nouveaux instantanés sont chiffrés avec la clé CMK. Cependant, les instantanés historiques resteront chiffrés avec l'AOK.
Pour mettre à jour une application existante afin d'utiliser CMK
-
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 en utilisant DescribeApplication.Dans cette configuration JSON, n'oubliez pas de 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
-
Enregistrez ce fichier. Par exemple, enregistrez-le sous le nom
enable-cmk.json
. -
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 comme 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 afin d'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 principal 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
-
Créez un fichier JSON avec la configuration suivante.
Dans cette configuration JSON, n'oubliez pas de remplacer les
sample
valeurs par les valeurs réelles.{ "ApplicationName": "
MyCmkApplication
", "CurrentApplicationVersionId":1
, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "AWS_OWNED_KEY" } } } -
Enregistrez ce fichier. Par exemple, enregistrez-le sous le nom
disable-cmk.json
. -
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 comme argument de fichier.
aws kinesisanalyticsv2 update-application \ --cli-input-json file://
disable-cmk.json