Criptografar resultados da consulta com o AWS Key Management Service - Amazon CloudWatch Logs

Criptografar resultados da consulta com o AWS Key Management Service

Por padrão, o CloudWatch Logs criptografa os resultados armazenados das consultas do CloudWatch Logs Insights usando o método de criptografia do lado do servidor padrão do CloudWatch Logs. Em vez disso, você pode optar por usar uma chave do AWS KMS para criptografar esses resultados. Se você associar uma chave do AWS KMS aos resultados da criptografia, o CloudWatch Logs usará essa chave para criptografar os resultados armazenados de todas as consultas na conta.

Se mais tarde você desassociar a chave dos resultados da consulta, o CloudWatch Logs voltará ao método de criptografia padrão para consultas posteriores. Mas as consultas executadas enquanto a chave estava associada ainda estão criptografadas com essa chave. O CloudWatch Logs ainda poderá retornar esses resultados após a chave gerenciada pelo KMS ser desassociada porque o CloudWatch Logs ainda poderá continuar referenciando a chave. Porém, se a chave for desabilitada posteriormente, o CloudWatch Logs não conseguirá ler os resultados de consultas que foram criptografadas com essa chave.

Importante

O CloudWatch Logs é compatível somente com chaves do KMS simétricas. Não use uma chave assimétrica para criptografar os resultados da consulta. Para obter mais informações, consulte Usar chaves simétricas e assimétricas.

Limites

  • Para executar as etapas a seguir, é necessário ter as seguintes permissões: kms:CreateKey, kms:GetKeyPolicy e kms:PutKeyPolicy.

  • Após uma chave ser associada ou desassociada dos resultados da consulta, até cinco minutos poderão ser necessários para que a operação seja efetivada.

  • Se você revogar o acesso de uma chave associada ao CloudWatch Logs ou excluir uma chave do KMS associada, não será mais possível recuperar seus dados criptografados no CloudWatch Logs.

  • Não é possível usar o console do CloudWatch para associar uma chave, você deve usar a AWS CLI ou a API do CloudWatch Logs.

Etapa 1: criar um AWS KMS key

Para criar uma chave do KMS, 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" ] } }

Etapa 2: definir permissões na chave do KMS

Por padrão, todas as chaves do KMS são privadas. Somente o proprietário do recurso pode usá-la para criptografar e descriptografar dados. No entanto, o proprietário do recurso pode conceder permissões para acessar a chave a outros usuários e recursos. Com esta etapa, você concede à entidade principal do serviço CloudWatch Logs permissão para usar a chave. Esse responsável pelo serviço deve estar na mesma região da AWS onde a chave está armazenada.

Como prática recomendada, recomendamos restringir o uso da chave somente às contas da AWS que você especificar.

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

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

Abra o arquivo policy.json em um editor de texto e adicione a seção em negrito de uma das instruções a seguir. Separe a instrução existente da nova instrução com uma vírgula. Essas instruções usam seções Condition para aumentar a segurança da chave do AWS KMS. Para obter mais informações, consulte AWS KMSChaves do e contexto de criptografia.

A seção Condition neste exemplo limita o uso da chave do AWS KMS aos resultados da consulta do CloudWatch Logs Insights na conta especificada.

JSON
{ "Version":"2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:logs:us-east-1:111122223333:query-result:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Finalmente, adicione a política atualizada usando o seguinte comando put-key-policy:

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

Etapa 3: associar uma chave do KMS aos resultados da consulta

Para associar a chave do KMS aos resultados da consulta na conta

Use o comando disassociate-kms-key da seguinte forma:

aws logs associate-kms-key --resource-identifier "arn:aws:logs:region:account-id:query-result:*" --kms-key-id "key-arn"

Etapa 4: desassociar uma chave dos resultados da consulta na conta

Para desassociar a chave do KMS associada aos resultados de consulta, use o seguinte comando disassociate-kms-key:

aws logs disassociate-kms-key --resource-identifier "arn:aws:logs:region:account-id:query-result:*"