View a markdown version of this page

Criptografe tabelas de pesquisa em CloudWatch registros usando AWS Key Management Service - CloudWatch Registros da Amazon

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

Criptografe tabelas de pesquisa em CloudWatch registros usando AWS Key Management Service

Os dados da tabela de pesquisa são sempre criptografados nos CloudWatch registros. Por padrão, o CloudWatch Logs usa criptografia do lado do servidor com o Galois/Counter Modo Padrão de Criptografia Avançada (AES-GCM) de 256 bits para criptografar dados da tabela de pesquisa em repouso. Como alternativa, você pode usar o AWS Key Management Service para essa criptografia. Se você fizer isso, a criptografia será feita usando uma AWS KMS chave. O uso da criptografia AWS KMS é habilitado no nível da tabela de pesquisa, associando uma chave KMS a uma tabela de pesquisa, seja quando você cria a tabela de pesquisa ou quando a atualiza.

Importante

CloudWatch O Logs suporta somente chaves KMS simétricas. Não use uma chave assimétrica para criptografar os dados em suas tabelas de pesquisa. Para obter mais informações, consulte Usar chaves simétricas e assimétricas.

Depois de associar uma chave KMS a uma tabela de pesquisa, todos os dados armazenados na tabela de pesquisa são criptografados usando essa chave. CloudWatch O Logs descriptografa esses dados sempre que solicitados. CloudWatch Os registros devem ter permissões para a chave KMS sempre que dados criptografados forem solicitados.

Se, posteriormente, você desassociar uma chave KMS de uma tabela de pesquisa, o CloudWatch Logs criptografará os dados usando o método de criptografia padrão do CloudWatch Logs. No entanto, se a chave for desativada ou excluída antes de você desassociá-la, o CloudWatch Logs não conseguirá ler os dados que foram criptografados com essa chave.

Para obter informações gerais sobre como o CloudWatch Logs usa AWS KMS para criptografar dados de registro, consulteCriptografe dados de registro no CloudWatch Logs usando AWS Key Management Service.

Como o CloudWatch Logs usa AWS KMS para tabelas de pesquisa

CloudWatch O Logs usa criptografia de AWS KMS envelope para proteger os dados da tabela de pesquisa. Quando você associa uma chave KMS a uma tabela de pesquisa, o CloudWatch Logs envia uma GenerateDataKey solicitação para AWS KMS. AWS KMS gera uma chave de criptografia de dados (DEK) exclusiva e retorna uma cópia em texto simples e uma cópia criptografada da DEK. CloudWatch O Logs usa a DEK de texto simples para criptografar os dados da tabela de pesquisa e, em seguida, armazena a DEK criptografada junto com os dados criptografados. O DEK de texto simples não é armazenado e é descartado da memória após o uso.

Quando o CloudWatch Logs precisa ler os dados da tabela de pesquisa, ele envia uma Decrypt solicitação AWS KMS com a DEK criptografada. AWS KMS descriptografa a DEK e retorna a DEK em texto simples para o CloudWatch Logs, que a usa para descriptografar os dados da tabela de pesquisa.

CloudWatch O Logs usa o seguinte contexto de criptografia ao fazer solicitações para AWS KMS:

{ "aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" }

Você pode usar esse contexto de criptografia nas políticas do IAM e nas políticas de AWS KMS chaves para controlar o acesso à chave KMS. Para obter mais informações, consulte AWS KMS chaves e contexto de criptografia.

Permissões obrigatórias

Para usar a AWS KMS criptografia com tabelas de pesquisa, o diretor do IAM deve ter as seguintes AWS KMS permissões na chave KMS:

  • kms:Decrypt

  • kms:GenerateDataKey

A kms:Decrypt permissão é necessária ao chamar GetLookupTable uma tabela de pesquisa criptografada com uma chave KMS, para que o CloudWatch Logs possa descriptografar os dados em seu nome. A kms:Decrypt permissão também é necessária na chave (a chave KMS usada para criptografar a tabela de pesquisa) ao chamar StartQuery com uma consulta que usa o lookup comando em uma tabela de pesquisa criptografada. A kms:GenerateDataKey permissão é necessária ao chamar CreateLookupTable ou UpdateLookupTable com uma chave KMS, para que o CloudWatch Logs possa gerar uma chave de criptografia de dados para criptografar os dados da tabela de pesquisa.

Além disso, o serviço de CloudWatch registros deve ter permissão para usar a chave KMS. Você concede essas permissões adicionando uma declaração de política à política de chaves do KMS, conforme descrito na seção a seguir.

Etapa 1: criar uma AWS KMS chave

Para criar uma chave KMS simétrica, use o seguinte comando create-key:

aws kms create-key

A saída contém o ID de chave e o nome do recurso da Amazon (ARN) da chave. A seguir está um exemplo de saída:

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

Grave o ARN da chave. Você precisa dele nas etapas a seguir.

Etapa 2: definir permissões na chave do KMS

Por padrão, todas AWS KMS as chaves são privadas. Somente o proprietário do recurso pode usá-la para criptografar e descriptografar dados. Você deve conceder permissão principal ao serviço de CloudWatch registros para usar a chave e também conceder permissão à função de chamada para usar a chave.

Primeiro, salve a política padrão para sua chave KMS policy.json usando o seguinte get-key-policycomando:

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

Abra o policy.json arquivo em um editor de texto e adicione a declaração a seguir para conceder permissão principal ao serviço de CloudWatch registros para usar a chave. Este exemplo usa uma Condition seção que corresponde ao contexto de criptografia para restringir a chave a uma tabela de pesquisa específica.

{ "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name", "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" } } }

Em seguida, adicione permissões à função que chamará os CloudWatch Logs CreateLookupTable ou UpdateLookupTable APIs. CloudWatch O Logs é usado kms:ViaService para fazer chamadas AWS KMS em nome do cliente. Para maiores informações, veja kms: ViaService.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region.amazonaws.com" ] } } }

Por fim, adicione a política atualizada usando o seguinte put-key-policycomando:

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

Etapa 3: associar uma chave KMS a uma tabela de pesquisa

Você pode associar uma chave KMS a uma tabela de pesquisa ao criá-la usando a CreateLookupTable API ou atualizar uma tabela de pesquisa existente usando a UpdateLookupTable API. Ambos APIs fazem parte do AWSLogsConfigService.

Para associar a chave KMS a uma tabela de pesquisa ao criá-la

Use a CreateLookupTable API e especifique o kmsKeyArn parâmetro com o ARN da sua chave KMS:

aws logs create-lookup-table \ --lookup-table-name my-lookup-table \ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
Para associar a chave KMS a uma tabela de pesquisa existente

Use a UpdateLookupTable API e especifique o kmsKeyArn parâmetro com o ARN da sua chave KMS:

aws logs update-lookup-table \ --lookup-table-name my-lookup-table \ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"

Considerações

  • Depois de associar ou desassociar uma chave KMS de uma tabela de pesquisa, pode levar até cinco minutos para que a operação entre em vigor.

  • Se você revogar o acesso do CloudWatch Logs a uma chave associada ou excluir uma chave KMS associada, os dados da tabela de pesquisa criptografada nos CloudWatch Logs não poderão mais ser recuperados.

  • Para realizar as etapas deste tópico, você deve ter as seguintes permissões:kms:CreateKey,, kms:GetKeyPolicykms:PutKeyPolicy, e as permissões de CloudWatch registros apropriadas para chamar CreateLookupTable ouUpdateLookupTable.