View a markdown version of this page

Cifre las tablas de búsqueda en CloudWatch los registros mediante AWS Key Management Service - Amazon CloudWatch Logs

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

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.

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

Cómo utiliza CloudWatch Logs AWS KMS para las tablas de búsqueda

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.

Permisos necesarios

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

Para crear una clave KMS simétrica, utilice el siguiente comando create-key:

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

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-policycomando:

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.

{ "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-policycomando:

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

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

  • 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:GetKeyPolicykms:PutKeyPolicy, y los permisos de CloudWatch Logs adecuados para llamar a CreateLookupTable oUpdateLookupTable.