Gerenciamento de chaves no Amazon Managed Service for Apache Flink - Managed Service for Apache Flink

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á.

Gerenciamento de chaves no Amazon Managed Service for Apache Flink

No Amazon MSF, você pode optar por usar uma Chaves gerenciadas pela AWSou suas próprias chaves gerenciadas pelo cliente (CMKs) para criptografar dados. CMKs in AWS Key Management Service (AWS KMS) são chaves de criptografia que você mesmo cria, possui e gerencia.

Por padrão, o Amazon MSF usa Chaves pertencentes à AWS (AOKs) para criptografar 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 serão criptografados por padrão. AOKs são o método de criptografia padrão no Amazon MSF e nenhuma configuração adicional é necessária. Para criptografar dados em trânsito, o Amazon MSF usa TLS e HTTP+SSL por padrão e não requer nenhuma instalação ou configuração adicional.

No Amazon MSF, a CMK é um recurso usado para criptografar os dados do seu aplicativo com uma chave que você cria, possui e gerencia no AWS KMS.

Com o que é criptografado CMKs?

Em um aplicativo Amazon MSF, os dados sujeitos a um ponto de verificação ou snapshot do Flink serão criptografados com uma CMK que você define para esse aplicativo. Consequentemente, sua CMK criptografará os dados que estão no armazenamento de aplicativos em execução ou no armazenamento durável de aplicativos. As seções a seguir descrevem o procedimento de configuração CMKs de seus aplicativos Amazon MSF.

Política de alternância de chaves

O Amazon MSF não gerencia a política de rotação de chaves para você CMKs. Você é responsável por alterná-las. Isso ocorre porque você cria e mantém CMKs. Para obter informações sobre como usar sua política de alternância de chaves com a CMK no Amazon MSF, consulte Política de alternância de chaves.

Com o que não está criptografado CMKs?

Fontes e coletores

A criptografia de fontes de dados e coletores não é gerenciada pelo Amazon MSF. Ela é gerenciada pela configuração da fonte ou do coletor ou pela configuração do conector do aplicativo.

Aplicação retroativa da criptografia

A CMK no Amazon MSF não fornece suporte para aplicação retroativa a um CMKs snapshot histórico existente.

Criptografia de log

Atualmente, o Amazon MSF não oferece suporte à criptografia de log usando o KMS CMK para logs gerados pelo jar do código do seu aplicativo. Você precisará garantir que os logs não contenham dados que exijam criptografia CMK.

Criptografia de dados em trânsito

Você não pode usar uma CMK para criptografar dados em trânsito. Por padrão, a Amazon MSF criptografa todos os dados em trânsito usando TLS ou HTTP e SSL.

Tipos de chave do KMS com suporte

A CMK no Amazon MSF oferece suporte a chaves simétricas.

Permissões da chave KMS

A CMK no Amazon MSF exige permissão para executar as seguintes ações do KMS. Essas permissões são necessárias para validar o acesso, criar armazenamento de aplicativos em execução criptografado por CMK e armazenar o estado do aplicativo criptografado por CMK em um armazenamento durável.

  • kms: DescribeKey

    Concede permissão para resolver um alias de chave KMS para o ARN da chave.

  • kms:Decrypt

    Concede permissão para acessar o estado durável do aplicativo e provisionar o armazenamento de aplicativos em execução.

  • kms: GenerateDataKey

    Concede permissão para armazenar o estado durável do aplicativo.

  • kms: GenerateDataKeyWithoutPlaintext

    Concede permissão para provisionar armazenamento de aplicativos em execução.

  • kms: CreateGrant

    Concede permissão para acessar o armazenamento de aplicativos em execução.

Contexto e restrições da criptografia KMS

A CMK no Amazon MSF fornece contexto de criptografia ao acessar chaves para ler ou gravar dados criptografados, ou seja, kms:EncryptionContext:aws:kinesisanalytics:arn. Além do contexto de criptografia, os contextos de origem aws: SourceArn e aws: SourceAccount são fornecidos ao ler ou gravar um armazenamento de aplicativos durável.

Ao criar uma concessão para provisionar o armazenamento criptografado de aplicativos em execução, o Amazon MSF CMK cria concessões com tipo de restrição, EncryptionContextSubsetgarantindo que somente a operação Decrypt seja permitida. "kms:GrantOperations": "Decrypt"

Política de alternância de chaves

O Amazon MSF não gerencia a política de rotação de chaves para você CMKs. Você é responsável por sua própria rotação de chaves porque cria e mantém CMKs.

No KMS, você usa a rotação automática ou manual de chaves para criar um novo material criptográfico para você. CMKs Para obter informações sobre como alternar suas chaves, consulte Alternar AWS KMS keys no Guia do desenvolvedor AWS Key Management Service.

Ao alternar as chaves para CMKs o Amazon MSF, você deve garantir que o operador (chamador da API) tenha permissões para a chave anterior e a nova.

nota

Um aplicativo pode começar a partir de um snapshot que foi criptografado com AOK depois de configurado para usar a CMK. Um aplicativo também pode começar a partir de um snapshot que foi criptografado com uma CMK mais antiga. Para iniciar um aplicativo a partir de um snapshot, o operador (chamador da API) deve ter permissões para a chave antiga e a nova.

No Amazon MSF, recomendamos interromper e reiniciar seus aplicativos usando a criptografia CMK. Isso garante que a nova chave mestra de alternância seja aplicada a todos os dados no armazenamento de aplicativos em execução e no armazenamento durável de aplicativos. Se você não interromper e reiniciar seu aplicativo, o novo material de chave só será aplicado ao armazenamento durável de aplicativos. O armazenamento de aplicativos em execução continuará sendo criptografado usando o material de chave de alternância anterior.

Se você estiver alterando o AWS KMS key ARN usado para a CMK, você deve usar no UpdateApplicationAmazon MSF. Isso garantirá que seu aplicativo Flink seja reiniciado como parte do UpdateApplication aplicando as alterações da CMK.

nota

Quando você fornece um alias ou ARN de alias, o Amazon MSF resolve o alias para a chave ARN e armazena o ARN da chave como a chave configurada para o aplicativo.

Declarações de política de chave com privilégio mínimo

Para obter mais informações sobre declarações de política de chave, consulte Crie uma política de chave do KMS e Permissões do operador do ciclo de vida do aplicativo (chamador de API) .

Exemplo de entradas AWS CloudTrail de registro

Quando o Amazon MSF usa CMKs AWS KMS, registra AWS CloudTrail automaticamente todas as chamadas de AWS KMS API e detalhes relacionados. Esses registros contêm informações, como AWS service (Serviço da AWS) fazer a solicitação, ARN da chave KMS, ações de API realizadas e registros de data e hora, excluindo os dados criptografados. Esses registros fornecem trilhas de auditoria essenciais para conformidade, monitoramento de segurança e solução de problemas, mostrando quais serviços acessaram suas chaves e quando.

Exemplo 1: AWS KMS decodificar uma chamada de API usando uma função assumida no Amazon MSF

O CloudTrail registro a seguir mostra o Amazon MSF executando uma operação de teste KMS:Decrypt em uma CMK. O Amazon MSF faz essa solicitação usando uma Operator função enquanto usa a CreateApplicationAPI. O registro a seguir inclui detalhes essenciais, como o ARN da chave KMS de destino, o aplicativo Amazon MSF associado MyCmkApplication () e a data e hora da operação.

{ "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "REDACTED", "arn": "arn:aws:sts::123456789012:assumed-role/Operator/CmkTestingSession", "accountId": "123456789012", "accessKeyId": "REDACTED", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "REDACTED", "arn": "arn:aws:iam::123456789012:role/Operator", "accountId": "123456789012", "userName": "Operator" }, "attributes": { "creationDate": "2025-08-07T13:29:28Z", "mfaAuthenticated": "false" } }, "invokedBy": "kinesisanalytics.amazonaws.com" }, "eventTime": "2025-08-07T13:45:45Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "kinesisanalytics.amazonaws.com", "userAgent": "kinesisanalytics.amazonaws.com", "errorCode": "DryRunOperationException", "errorMessage": "The request would have succeeded, but the DryRun option is set.", "requestParameters": { "encryptionContext": { "aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" }, "keyId": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "dryRun": true }, "responseElements": null, "additionalEventData": { "keyMaterialId": "REDACTED" }, "requestID": "56764d19-1eb1-48f1-8044-594aa7dd05c4", "eventID": "1371b402-f1dc-4c47-8f3a-1004e4803c5a", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }
Exemplo 2: AWS KMS Descriptografar chamada de API no Amazon MSF com autenticação direta de serviço

O CloudTrail registro a seguir mostra o Amazon MSF executando uma operação de teste KMS:Decrypt em uma CMK. O Amazon MSF faz essa solicitação por meio de AWS service-to-service autenticação direta em vez de assumir uma função. O registro a seguir inclui detalhes essenciais, como o ARN da chave KMS de destino, o aplicativo Amazon MSF associado MyCmkApplication () e um ID de evento compartilhado da operação.

{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "invokedBy": "kinesisanalytics.amazonaws.com" }, "eventTime": "2025-08-07T13:45:45Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "kinesisanalytics.amazonaws.com", "userAgent": "kinesisanalytics.amazonaws.com", "errorCode": "DryRunOperationException", "errorMessage": "The request would have succeeded, but the DryRun option is set.", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionContext": { "aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" }, "dryRun": true }, "responseElements": null, "additionalEventData": { "keyMaterialId": "REDACTED" }, "requestID": "5fe45ada-7519-4608-be2f-5a9b8ddd62b2", "eventID": "6206b08f-ce04-3011-9ec2-55951d357b2c", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "Application-account-ID", "sharedEventID": "acbe4a39-ced9-4f53-9f3c-21ef7e89dc37", "eventCategory": "Management" }