Criptografe dados de registro no CloudWatch Logs 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 dados de registro no CloudWatch Logs usando AWS Key Management Service

Os dados do grupo de registros são sempre criptografados nos CloudWatch registros. Por padrão, o CloudWatch Logs usa criptografia do lado do servidor para os dados de registro 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 do grupo de registros, associando uma KMS chave a um grupo de registros, seja quando você cria o grupo de registros ou depois que ele existe.

Importante

CloudWatch Os registros agora oferecem suporte ao contexto de criptografia, usando kms:EncryptionContext:aws:logs:arn como chave e o ARN do grupo de registros como o valor dessa chave. Se você tiver grupos de registros que já criptografou com uma KMS chave e quiser restringir o uso da chave com uma única conta e grupo de registros, deverá atribuir uma nova KMS chave que inclua uma condição na IAM política. Para ter mais informações, consulte AWS KMS chaves e contexto de criptografia.

Depois de associar uma KMS chave a um grupo de registros, todos os dados recém-ingeridos do grupo de registros são criptografados usando essa chave. Esses dados são armazenados em formato criptografado durante todo o período de retenção. CloudWatch O Logs descriptografa esses dados sempre que solicitados. CloudWatch Os registros devem ter permissões para a KMS chave sempre que dados criptografados forem solicitados.

Se, posteriormente, você desassociar uma KMS chave de um grupo de CloudWatch registros, o Logs criptografará os dados recém-ingeridos usando o método de criptografia padrão do CloudWatch Logs. Todos os dados ingeridos anteriormente que foram criptografados com a KMS chave permanecem criptografados com a KMS chave. CloudWatch Os registros ainda podem retornar esses dados depois que a KMS chave for desassociada, porque CloudWatch os registros ainda podem continuar referenciando a chave. No entanto, se a chave for desativada posteriormente, o CloudWatch Logs não conseguirá ler os registros que foram criptografados com essa chave.

Importante

CloudWatch O Logs suporta somente KMS chaves simétricas. Não use uma chave assimétrica para criptografar os dados em seus grupos de logs. 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.

  • Depois de associar ou desassociar uma chave de um grupo de logs, pode levar até cinco minutos para que a operação seja efetivada.

  • Se você revogar o acesso do CloudWatch Logs a uma chave associada ou excluir uma KMS chave associada, seus dados criptografados no CloudWatch Logs não poderão mais ser recuperados.

  • Você não pode associar uma KMS chave a um grupo de registros usando o CloudWatch console.

Etapa 1: criar uma AWS KMS chave

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

aws kms create-key

A saída contém o ID da chave e o Amazon Resource Name (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 KMS chave

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. No entanto, o proprietário do recurso pode conceder permissões para acessar a KMS chave para outros usuários e recursos. Com essa etapa, você concede permissão principal ao serviço de CloudWatch registros para usar a chave. Esse principal de serviço deve estar na mesma AWS região em que a KMS chave está armazenada.

Como prática recomendada, recomendamos que você restrinja o uso da KMS chave somente às AWS contas ou grupos de registros que você especificar.

Primeiro, salve a política padrão para sua KMS chave 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 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 declarações usam Condition seções para aumentar a segurança da AWS KMS chave. Para ter mais informações, consulte AWS KMS chaves e contexto de criptografia.

A Condition seção neste exemplo restringe a chave a um único grupo ARN de registros.

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID: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": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:log-group:log-group-name" } } } ] }

A seção Condition deste exemplo limita o uso da chave do AWS KMS à conta especificada, mas ele pode ser usado para qualquer grupo de logs.

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID: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": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:*" } } } ] }

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 KMS chave a um grupo de registros

Você pode associar uma KMS chave a um grupo de registros ao criá-lo ou depois que ele existir.

Para descobrir se um grupo de registros já tem uma KMS chave associada, use o seguinte describe-log-groupscomando:

aws logs describe-log-groups --log-group-name-prefix "log-group-name-prefix"

Se a saída incluir um campo kmsKeyId, o grupo de logs será associado à chave exibida para o valor desse campo.

Para associar a KMS chave a um grupo de registros ao criá-lo

Use o comando create-log-group da seguinte forma:

aws logs create-log-group --log-group-name my-log-group --kms-key-id "key-arn"
Para associar a KMS chave a um grupo de registros existente

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

aws logs associate-kms-key --log-group-name my-log-group --kms-key-id "key-arn"

Etapa 4: desassociar uma chave de um grupo de logs

Para desassociar a KMS chave associada a um grupo de registros, use o seguinte disassociate-kms-keycomando:

aws logs disassociate-kms-key --log-group-name my-log-group

AWS KMS chaves e contexto de criptografia

Para aumentar a segurança de suas AWS Key Management Service chaves e de seus grupos de registros criptografados, o CloudWatch Logs agora coloca o grupo de registros ARNs como parte do contexto de criptografia usado para criptografar seus dados de registro. O contexto de criptografia é um conjunto de pares de chave/valor que são usados como dados autenticados adicionais. O contexto de criptografia permite que você use condições IAM de política para limitar o acesso à sua AWS KMS chave por AWS conta e grupo de registros. Para obter mais informações, consulte Contexto de criptografia e Elementos de IAM JSON política: condição.

Recomendamos que você use KMS chaves diferentes para cada um dos seus grupos de registros criptografados.

Se você tiver um grupo de registros criptografado anteriormente e agora quiser alterá-lo para usar uma nova KMS chave que funcione somente para esse grupo de registros, siga estas etapas.

Para converter um grupo de registros criptografados para usar uma KMS chave com uma política que o limita a esse grupo de registros
  1. Digite o comando a seguir para encontrar a ARN chave atual do grupo de registros:

    aws logs describe-log-groups

    A saída inclui a linha a seguir. Anote ARN o. Ele será necessário na etapa 7.

    ... "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef" ...
  2. Digite o comando a seguir para criar uma nova KMS chave:

    aws kms create-key
  3. Digite o comando a seguir para salvar a política da nova chave em um arquivo policy.json:

    aws kms get-key-policy --key-id new-key-id --policy-name default --output text > ./policy.json
  4. Use um editor de texto para abrir policy.json e adicionar uma expressão Condition à política:

    { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-ID: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": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:REGION:ACCOUNT-ID:log- group:LOG-GROUP-NAME" } } } ] }
  5. Digite o comando a seguir para adicionar a política atualizada à nova KMS chave:

    aws kms put-key-policy --key-id new-key-ARN --policy-name default --policy file://policy.json
  6. Digite o comando a seguir para associar a política ao seu grupo de logs:

    aws logs associate-kms-key --log-group-name my-log-group --kms-key-id new-key-ARN

    CloudWatch Agora, o Logs criptografa todos os novos dados usando a nova chave.

  7. Depois, revogue todas as permissões, exceto Decrypt da chave antiga. Primeiro, digite o comando a seguir para recuperar a política antiga:

    aws kms get-key-policy --key-id old-key-ARN --policy-name default --output text > ./policy.json
  8. Use um editor de texto para abrir policy.json e remover todos os valores da lista Action, exceto kms:Decrypt*

    { "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt*" ], "Resource": "*" } ] }
  9. Insira o comando a seguir para adicionar a política atualizada à antiga chave:

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