Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gerenciando a CMK usando APIs
Este tópico descreve como criar e atualizar seu KMS CMKs usando o Amazon MSF APIs. Para seguir os procedimentos descritos neste tópico, você deve ter permissão para gerenciar a chave KMS e o aplicativo Amazon MSF. Os procedimentos neste tópico usam uma política de chave permissiva, que serve apenas para fins de demonstração e teste. Não recomendamos o uso dessa política de chave permissiva para workloads de produção. Em cenários reais para workloads de produção, as funções, as permissões e os fluxos de trabalho são isolados.
Nesta página
Crie e atribua chaves KMS
Antes de começar, crie uma chave KMS. Para obter informações sobre como criar e configurar uma chave KMS, consulte Criar uma chave KMS no Guia do desenvolvedor do AWS Key Management Service.
Nesta seção
Crie uma política de chave do KMS
Para usar a CMK no Amazon MSF, você deve adicionar as seguintes entidades principais de serviço à sua política de chaves: kinesisanalytics.amazonaws.com e infrastructure.kinesisanalytics.amazonaws.com. O Amazon MSF usa essas entidades principais de serviço para validação e acesso a recursos. Se você não incluir essas entidades principais de serviço, a Amazon MSF rejeitará a solicitação.
A política de chaves do KMS a seguir permite que a Amazon MSF use uma CMK para o aplicativo,. MyCmkApplication Essa política concede as permissões necessárias tanto para a função Operator quanto para as entidades principais de serviços kinesisanalytics.amazonaws.com e infrastructure.kinesisanalytics.amazonaws.com do Amazon MSF para realizar as seguintes operações:
-
Descreva a CMK
-
Criptografe os dados do aplicativo
-
Descriptografe os dados do aplicativo
-
Crie concessões para a chave
O exemplo a seguir usa perfis do IAM. Você pode criar a política de chave para a chave KMS usando o exemplo a seguir como modelo, mas certifique-se de fazer o seguinte:
-
Substitua
arn:aws:iam::pela função123456789012:role/OperatorOperator. Você deve criar a função ou o usuário doOperatorantes de criar a política de chave. Não fazer isso causará a falha de sua solicitação. -
Substitua
arn:aws:kinesisanalytics:us-east-1:pelo ARN do aplicativo.123456789012:application/MyCmkApplication -
Substitua
kinesisanalytics.por um valor de serviço para a região correspondente.us-east-1.amazonaws.com -
123456789012Substitua pela política de IDKey da sua conta para CMK. -
Adicione outras declarações de políticas para permitir que administradores de chaves administrem a chave do KMS. Não fazer isso causará perda de acesso para gerenciar a chave.
As seguintes declarações de política de chave são amplas porque pretendem ser explícitas e mostrar as condições que cada ação exige.
{ "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" } } } ] }
Permissões do operador do ciclo de vida do aplicativo (chamador de API)
A política do IAM a seguir garante que o operador do ciclo de vida do aplicativo tenha as permissões necessárias para atribuir uma chave KMS ao aplicativo,. MyCmkApplication
Atualize um aplicativo existente para usar a CMK
No Amazon MSF, você pode aplicar uma política de CMK a um aplicativo existente que usa Chaves pertencentes à AWS ()AOKs.
Por padrão, o Amazon MSF usa AOKs para criptografar todos os seus dados em armazenamento efêmero (armazenamento de aplicativos em execução) e durável (armazenamento durável de aplicativos). Isso significa que todos os dados sujeitos a um ponto de verificação ou instantâneo do Flink são criptografados usando AOKs por padrão. Quando você substitui a AOK por uma CMK, novos pontos de verificação e snapshots são criptografados com a CMK. No entanto, os snapshots históricos permanecerão criptografados com a AOK.
Para atualizar um aplicativo existente para usar a CMK
-
Crie um arquivo JSON com a configuração a seguir.
Certifique-se de substituir o valor
CurrentApplicationVersionIdpelo número da versão atual do aplicativo. Você pode obter o número da versão atual do seu aplicativo, usando DescribeApplication.Nessa configuração JSON, lembre-se de substituir os
samplevalores pelos valores reais.{ "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId":1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "CUSTOMER_MANAGED_KEY", "KeyIdUpdate": "arn:aws:kms:us-east-1:" } } }123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab -
Salve esse arquivo. Por exemplo, salve-o com o nome
enable-cmk.json. -
Execute o AWS CLI comando update-application conforme mostrado no exemplo a seguir. Nesse comando, forneça o arquivo de configuração JSON criado nas etapas anteriores como argumento do arquivo.
aws kinesisanalyticsv2 update-application \ --cli-input-json file://enable-cmk.json
A configuração anterior será aceita para atualizar o aplicativo para usar a CMK somente se as seguintes condições forem atendidas:
-
O chamador de API tem uma declaração de política que permite o acesso à chave.
-
A política de chave tem uma declaração de política que permite que o chamador de API acesse a chave.
-
A política de chave tem uma declaração de política que permite que o responsável pelo serviço Amazon MSF, por exemplo,
kinesisanalytics.amazonaws.com, tenha acesso à chave.
Reverter de CMK para Chave pertencente à AWS
Para reverter de CMK para AOK
-
Crie um arquivo JSON com a configuração a seguir.
Nessa configuração JSON, lembre-se de substituir os
samplevalores pelos valores reais.{ "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId":1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "AWS_OWNED_KEY" } } } -
Salve esse arquivo. Por exemplo, salve-o com o nome
disable-cmk.json. -
Execute o AWS CLI comando update-application conforme mostrado no exemplo a seguir. Nesse comando, forneça o arquivo de configuração JSON criado nas etapas anteriores como argumento do arquivo.
aws kinesisanalyticsv2 update-application \ --cli-input-json file://disable-cmk.json