Cifre los datos de registro en los CloudWatch 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 los datos de registro en los CloudWatch registros mediante AWS Key Management Service

Los datos de los grupos de registros siempre se cifran en CloudWatch los registros. De forma predeterminada, CloudWatch Logs utiliza el cifrado del lado del servidor para los datos de registro en reposo. Como alternativa, puede utilizar AWS Key Management Service para este cifrado. Si lo hace, el cifrado se realiza mediante una AWS KMS clave. El uso del cifrado AWS KMS se habilita a nivel de grupo de registros, mediante la asociación de una clave de KMS a un grupo de registros, ya sea al crear el grupo de registros o después de su existencia.

importante

CloudWatch Los registros ahora admiten el contexto de cifrado, kms:EncryptionContext:aws:logs:arn ya que se utilizan como clave y el ARN del grupo de registros como valor de esa clave. Si tiene grupos de registro que ya ha cifrado con una clave de KMS y desea restringir la clave para que se utilice con una sola cuenta y grupo de registro, debe asignar una nueva clave de KMS que incluya una condición en la política de IAM. Para obtener más información, consulte AWS KMS claves y contexto de cifrado.

Después de asociar una clave de KMS con un grupo de registros, todos los datos ingeridos recientemente para el grupo de registros se cifran mediante la clave. Estos datos se almacenan en formato cifrado durante todo el período de retención. 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 un grupo de CloudWatch registros, Logs cifra los datos recién ingeridos mediante el método de cifrado predeterminado de CloudWatch Logs. Todos los datos ingeridos anteriormente que se cifraron con la clave KMS permanecen cifrados con la clave KMS. CloudWatch Los registros pueden seguir devolviendo esos datos una vez desasociada la clave de KMS, ya que CloudWatch los registros pueden seguir haciendo referencia a la clave. Sin embargo, si la clave se deshabilita posteriormente, CloudWatch Logs no podrá leer los registros que se cifraron con esa clave.

importante

CloudWatch Los registros solo admiten claves KMS simétricas. No utilice una clave asimétrica administrada por el cliente para cifrar los datos de los grupos de registros. Para obtener más información, consulte Utilización de claves simétricas y asimétricas.

Límites

  • Para realizar los siguientes pasos, debe tener los siguientes permisos: kms:CreateKey, kms:GetKeyPolicy y kms:PutKeyPolicy.

  • Después de asociar o desvincular una clave desde un grupo de registros, puede tardar hasta cinco minutos para que la operación surta efecto.

  • Si revoca el acceso de CloudWatch los registros a una clave asociada o elimina una clave de KMS asociada, los datos cifrados de los CloudWatch registros ya no se podrán recuperar.

  • No puede asociar una clave de KMS a un grupo de registros mediante la CloudWatch consola.

Paso 1: Crear una AWS KMS clave

Para crear una clave de KMS, 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" ] } }

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. Sin embargo, el propietario del recurso puede conceder permisos para que otros usuarios y recursos accedan a la clave de KMS. Con este paso, concedes al servicio de CloudWatch registros el permiso principal para usar la clave. El principal de este servicio debe estar en la misma AWS región en la que se almacena la clave de KMS.

Como práctica recomendada, le recomendamos que restrinja el uso de la clave KMS únicamente a las AWS cuentas o grupos de registros que especifique.

En primer lugar, guarde la política predeterminada de su clave 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 archivo policy.json en un editor de texto y agregue la sección en negrita desde una de las instrucciones siguientes. Separe la instrucción existente de la nueva instrucción con una coma. Estas instrucciones utilizan Condition secciones para mejorar la seguridad de la AWS KMS clave. Para obtener más información, consulte AWS KMS claves y contexto de cifrado.

La sección Condition de este ejemplo restringe la clave a un ARN único de grupo 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" } } } ] }

La sección Condition de este ejemplo limita la utilización de la clave de AWS KMS a la cuenta especificada, pero se puede utilizar para cualquier grupo de registro.

{ "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 ú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: asociar una clave de KMS a un grupo de registros

Puede asociar una clave de KMS a un grupo de registros al crearlo o posteriormente.

Para saber si un grupo de registros ya tiene asociada una clave KMS, utilice el siguiente describe-log-groupscomando:

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

Si la salida incluye un campo kmsKeyId, el grupo de registro se asocia con la clave mostrada para el valor de ese campo.

Para asociar la clave de KMS a un grupo de registros al crearlo

Utilice el comando create-log-group como se indica a continuación:

aws logs create-log-group --log-group-name my-log-group --kms-key-id "key-arn"
Para asociar la clave de KMS a un grupo de registros existente

Utilice el comando associate-kms-key como se indica a continuación:

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

Paso 4: desasociar una clave de un grupo de registros

Para desasociar la clave de KMS asociada a un grupo de registros, utilice el siguiente disassociate-kms-keycomando:

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

AWS KMS claves y contexto de cifrado

Para mejorar la seguridad de AWS Key Management Service las claves y los grupos de CloudWatch registros cifrados, Logs ahora incluye los ARN de los grupos de registros como parte del contexto de cifrado que se utiliza para cifrar los datos de registro. El contexto de cifrado es un conjunto de pares clave-valor que se utilizan como datos autenticados adicionales. El contexto de cifrado le permite utilizar las condiciones de la política de IAM para limitar el acceso a su AWS KMS clave por AWS cuenta y grupo de registros. Para obtener más información, consulte Contexto de cifrado y Elementos de la política de JSON de IAM: condición.

Recomendamos que utilice diferentes claves de KMS para cada uno de los grupos de registro cifrados.

Si tiene un grupo de registros que cifró anteriormente y ahora desea cambiar el grupo de registros para utilizar una nueva clave de KMS que funcione solo para ese grupo de registros, siga estos pasos.

Para convertir un grupo de registros cifrado a fin de utilizar una clave de KMS con una política que la limite a ese grupo de registros
  1. Ingrese el siguiente comando para encontrar el ARN de la clave actual del grupo de registros:

    aws logs describe-log-groups

    La salida incluye la siguiente línea. Tome nota del ARN. Tiene que utilizarlo en el paso 7.

    ... "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef" ...
  2. Ingrese el siguiente comando para crear una nueva clave de KMS:

    aws kms create-key
  3. Escriba el siguiente comando para guardar la política de la nueva clave en un archivo policy.json:

    aws kms get-key-policy --key-id new-key-id --policy-name default --output text > ./policy.json
  4. Utilice un editor de texto para abrir policy.json y agregar una expresión Condition a la 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. Ingrese el siguiente comando para agregar la política actualizada a la nueva clave de KMS:

    aws kms put-key-policy --key-id new-key-ARN --policy-name default --policy file://policy.json
  6. Ingrese el siguiente comando para asociar la política al grupo de registros:

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

    CloudWatch Ahora, Logs cifra todos los datos nuevos con la nueva clave.

  7. Luego, revoque todos los permisos excepto Decrypt en la antigua clave. En primer lugar, ingrese el siguiente comando para recuperar la política anterior:

    aws kms get-key-policy --key-id old-key-ARN --policy-name default --output text > ./policy.json
  8. Utilice un editor de texto para abrir policy.json y eliminar todos los valores de la lista Action, excepto 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. Ingrese el siguiente comando para agregar la política actualizada a la antigua clave:

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