

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cifre las tablas de búsqueda en CloudWatch los registros mediante AWS Key Management Service
<a name="encrypt-lookup-tables-kms"></a>

Los datos de las tablas de consulta siempre se cifran en CloudWatch los registros. De forma predeterminada, CloudWatch Logs utiliza el cifrado del lado del servidor con el Galois/Counter modo estándar de cifrado avanzado (AES-GCM) de 256 bits para cifrar los datos de las tablas de consulta en reposo. Como alternativa, puede utilizar AWS Key Management Service para este cifrado. Si lo hace, el cifrado se realiza mediante una clave. AWS KMS El uso del cifrado AWS KMS se habilita en el nivel de la tabla de consulta, asociando una clave de KMS a una tabla de consulta, ya sea al crear la tabla de consulta o al actualizarla.

**importante**  
CloudWatch Los registros solo admiten claves KMS simétricas. No utilice una clave asimétrica para cifrar los datos de las tablas de búsqueda. Para obtener más información, consulte [Utilización de claves simétricas y asimétricas](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

Tras asociar una clave KMS a una tabla de consulta, todos los datos almacenados en la tabla de consulta se cifran con esta clave. CloudWatch Logs descifra estos datos siempre que se solicitan. CloudWatch Los registros deben tener permisos para la clave KMS siempre que se soliciten datos cifrados.

Si más adelante desasocias una clave KMS de una tabla de consulta, CloudWatch Logs cifra los datos mediante el método de cifrado predeterminado de CloudWatch Logs. Sin embargo, si la clave se deshabilita o se elimina antes de desasociarla, CloudWatch Logs no podrá leer los datos que se cifraron con esa clave.

Para obtener información general sobre cómo utiliza CloudWatch Logs AWS KMS para cifrar los datos de registro, consulte. [Cifre los datos de registro en los CloudWatch registros mediante AWS Key Management Service](encrypt-log-data-kms.md)

## Cómo utiliza CloudWatch Logs AWS KMS para las tablas de búsqueda
<a name="encrypt-lookup-tables-how-it-works"></a>

CloudWatch Logs utiliza el cifrado de AWS KMS sobres para proteger los datos de las tablas de consulta. Al asociar una clave KMS a una tabla de búsqueda, CloudWatch Logs envía una `GenerateDataKey` solicitud a AWS KMS. AWS KMS genera una clave de cifrado de datos (DEK) única y devuelve una copia de texto simple y una copia cifrada de la DEK. CloudWatch Logs utiliza la DEK de texto plano para cifrar los datos de la tabla de consulta y, a continuación, almacena la DEK cifrada junto con los datos cifrados. La DEK de texto simple no se almacena y se descarta de la memoria después de usarla.

Cuando CloudWatch Logs necesita leer los datos de la tabla de consulta, envía una `Decrypt` solicitud a AWS KMS la DEK cifrada. AWS KMS descifra el DEK y devuelve el DEK en texto plano a CloudWatch Logs, que luego lo utiliza para descifrar los datos de la tabla de consulta.

CloudWatch Logs utiliza el siguiente contexto de cifrado al realizar solicitudes a: AWS KMS

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

Puede utilizar este contexto de cifrado en las políticas de IAM y las políticas AWS KMS clave para controlar el acceso a la clave de KMS. Para obtener más información, consulte [AWS KMS claves y contexto de cifrado](encrypt-log-data-kms.md#encrypt-log-data-kms-policy).

## Permisos necesarios
<a name="encrypt-lookup-tables-permissions"></a>

Para utilizar el AWS KMS cifrado con tablas de consulta, el principal de IAM debe tener los siguientes AWS KMS permisos en la clave de KMS:
+ `kms:Decrypt`
+ `kms:GenerateDataKey`

El `kms:Decrypt` permiso es necesario para acceder a `GetLookupTable` una tabla de consulta cifrada con una clave KMS, de modo que CloudWatch Logs pueda descifrar los datos en su nombre. También se requiere el `kms:Decrypt` permiso de la clave (la clave de KMS utilizada para cifrar la tabla de consulta) cuando se llama `StartQuery` con una consulta que utiliza el `lookup` comando de una tabla de consulta cifrada. El `kms:GenerateDataKey` permiso es necesario cuando se llama `CreateLookupTable` o `UpdateLookupTable` con una clave KMS, de modo que CloudWatch Logs pueda generar una clave de cifrado de datos para cifrar los datos de la tabla de consulta.

Además, el servicio de CloudWatch registros debe tener permiso para usar la clave KMS. Para conceder estos permisos, añada una declaración de política a la política de claves de KMS, tal y como se describe en la siguiente sección.

## Paso 1: Crear una AWS KMS clave
<a name="encrypt-lookup-tables-create-key"></a>

Para crear una clave KMS simétrica, utilice el siguiente comando [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html):

```
aws kms create-key
```

La salida contiene la ID de clave y el nombre de recurso de Amazon (ARN) de la clave. A continuación, se muestra un ejemplo de la salida:

```
{
    "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"
        ]
    }
}
```

Registre el ARN clave. La necesitará en los siguientes pasos.

## Paso 2: establecer permisos en la clave de KMS
<a name="encrypt-lookup-tables-key-policy"></a>

De forma predeterminada, todas AWS KMS las claves son privadas. Solo el propietario del recurso puede utilizarla para cifrar y descifrar datos. Debe conceder al servicio de CloudWatch registros el permiso principal para usar la clave y también el permiso al rol que realiza la llamada para usar la clave.

En primer lugar, guarde la política predeterminada para su clave de KMS `policy.json` mediante el siguiente [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 el `policy.json` archivo en un editor de texto y añada la siguiente declaración para conceder al servicio de CloudWatch registros el permiso principal para usar la clave. En este ejemplo, se utiliza una `Condition` sección que coincide con el contexto de cifrado para restringir la clave a una tabla de consulta 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"
        }
    }
}
```

A continuación, añada permisos al rol que llamará a los CloudWatch Logs `CreateLookupTable` o `UpdateLookupTable` APIs. CloudWatch Los registros `kms:ViaService` se utilizan para realizar llamadas AWS KMS en nombre del cliente. Para obtener más información, consulte [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 último, añada la política actualizada mediante el siguiente [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
```

## Paso 3: Asocie una clave KMS a una tabla de consulta
<a name="encrypt-lookup-tables-associate"></a>

Puede asociar una clave de KMS a una tabla de consulta al crearla mediante la `CreateLookupTable` API o actualizar una tabla de consulta existente mediante la `UpdateLookupTable` API. Ambas APIs forman parte de AWSLogsConfigService.

**Para asociar la clave KMS a una tabla de consulta al crearla**  
Utilice la `CreateLookupTable` API y especifique el `kmsKeyArn` parámetro con el ARN de la clave 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 asociar la clave KMS a una tabla de consulta existente**  
Utilice la `UpdateLookupTable` API y especifique el `kmsKeyArn` parámetro con el ARN de la clave KMS:

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

## Consideraciones
<a name="encrypt-lookup-tables-considerations"></a>
+ Tras asociar o desasociar una clave KMS de una tabla de consulta, la operación puede tardar hasta cinco minutos en surtir efecto.
+ Si revoca el acceso de CloudWatch los registros a una clave asociada o elimina una clave de KMS asociada, los datos de la tabla de búsqueda cifrados de los CloudWatch registros ya no se podrán recuperar.
+ Para realizar los pasos de este tema, debe tener los siguientes permisos:`kms:CreateKey`, `kms:GetKeyPolicy``kms:PutKeyPolicy`, y los permisos de CloudWatch Logs adecuados para llamar a `CreateLookupTable` o`UpdateLookupTable`.