

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
<a name="encrypt-lookup-tables-kms"></a>

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](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

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, consulte[Criptografe dados de registro no CloudWatch Logs usando AWS Key Management Service](encrypt-log-data-kms.md).

## Como o CloudWatch Logs usa AWS KMS para tabelas de pesquisa
<a name="encrypt-lookup-tables-how-it-works"></a>

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](encrypt-log-data-kms.md#encrypt-log-data-kms-policy).

## Permissões obrigatórias
<a name="encrypt-lookup-tables-permissions"></a>

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
<a name="encrypt-lookup-tables-create-key"></a>

Para criar uma chave KMS simétrica, use o seguinte comando [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html):

```
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
<a name="encrypt-lookup-tables-key-policy"></a>

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-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)comando:

```
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](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service).

```
{
    "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-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)comando:

```
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
<a name="encrypt-lookup-tables-associate"></a>

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
<a name="encrypt-lookup-tables-considerations"></a>
+ 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:GetKeyPolicy``kms:PutKeyPolicy`, e as permissões de CloudWatch registros apropriadas para chamar `CreateLookupTable` ou`UpdateLookupTable`.