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.
Cifrar datos de registro en CloudWatch Logs mediante AWS Key Management Service
Los datos del grupo de registros siempre se cifran en CloudWatch Logs. De forma predeterminada, CloudWatch Logs utiliza el cifrado del servidor con el modo Galois/Counter Mode (AES-GCM) estándar de cifrado avanzado de 256 bits para cifrar los datos en reposo del registro. Como alternativa, puede utilizar AWS Key Management Service para este cifrado. Si lo hace, el cifrado se realiza con una AWS KMS clave de. El cifrado con AWS KMS se habilita en el nivel del grupo de registro mediante la asociación de una clave de KMS con un grupo de registro, ya sea al crear el grupo de registro o después de crearlo.
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 registro como el 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 de y contexto de cifrado.
importante
CloudWatch Ahora es compatible con Logskms:ViaService
, lo que permite a los registros realizar AWS KMS llamadas en tu nombre. Debe añadir esto a sus funciones, que se llaman CloudWatch registros, ya sea en su política clave o en IAM. Para obtener más información, consulte kms: ViaService.
Después de asociar una clave de KMS con un grupo de registro, todos los datos ingeridos recientemente para el grupo de registro se cifran mediante la clave. Estos datos se almacenan en formato cifrado durante todo el periodo de retención. CloudWatch Logs descifra estos datos siempre que se solicita. CloudWatch Los registros deben tener permisos para la clave de KMS cuando se soliciten datos cifrados.
Si más adelante desasocia una clave de KMS de un grupo de registro, CloudWatch Logs cifrará los datos recién capturados mediante el método de cifrado predeterminado de CloudWatch Logs. Todos los datos previamente ingeridos que se cifraron con la clave de KMS permanecen cifrados con dicha clave. CloudWatch Los registros pueden seguir devolviendo esos datos una vez que se haya desasociado la clave de KMS, ya que CloudWatch los registros pueden seguir haciendo referencia a la clave. Sin embargo, si la clave se desactiva posteriormente, CloudWatch Registros no podrá leer los registros cifrados con esa clave.
importante
CloudWatch Logs solo admite claves KMS simétricas. No utilice una clave asimétrica administrada por el cliente para cifrar los datos de los grupos de registro. 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
ykms:PutKeyPolicy
. -
Después de asociar o desvincular una clave desde un grupo de registro, puede tardar hasta cinco minutos para que la operación surta efecto.
-
Si revoca el acceso de CloudWatch Logs a una clave asociada o elimina una clave de KMS asociada, los datos cifrados en CloudWatch Logs ya no se pueden recuperar.
-
No puede asociar una clave de KMS a un grupo de registro existente mediante la CloudWatch consola.
Paso 1: crear una AWS KMS clave de
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 de 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, concede a la entidad principal del servicio de CloudWatch registro y a la función de la persona que llama para utilizar la clave. Esta entidad principal del servicio debe estar en la misma AWS región de en la que está almacenada la clave de KMS.
Como práctica recomendada, le sugerimos que restrinja el uso de la clave de KMS únicamente a las AWS cuentas de o grupos de registro que especifique.
En primer lugar, guarde la política predeterminada para la 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 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 de. Para obtener más información, consulte AWS KMS Claves de y contexto de cifrado.
La sección Condition
de este ejemplo restringe la clave a un ARN único de 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": { "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
:*" } } }
A continuación, añada permisos al rol que denominará a los CloudWatch registros. Para ello, puede añadir una declaración adicional a la política AWS KMS clave o, a través de IAM, sobre el propio rol. CloudWatch Registra las llamadas kms:ViaService
que se utilizan para realizar llamadas AWS KMS en nombre del cliente. Para obtener más información, consulte kms: ViaService.
Para agregar permisos en la política AWS KMS clave, agregue la siguiente declaración adicional a su política clave. Si utiliza este método, como práctica recomendada, aplique la política únicamente a las funciones que van a interactuar con los grupos de registros AWS KMS cifrados.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account_id
:role/role_name
" }, "Action": [ "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region
.amazonaws.com" ] } } }
Como alternativa, si desea gestionar los permisos de los roles en IAM, puede añadir permisos equivalentes mediante la siguiente política. Esto se puede añadir a una política de roles existente o adjuntarse a un rol como una política independiente adicional. Si utiliza este método, como práctica recomendada, aplique la política únicamente a las AWS KMS claves que se utilizarán para el cifrado de registros. Para obtener más información, consulte Editar las políticas de IAM.
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKey*", "kms:Describe*" ], "Condition":{ "StringEquals":{ "kms:ViaService": [ "logs.
region
.amazonaws.com" ] } }, "Resource": "arn:aws:kms:region
:account_id
:key/key_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 registro
Puede asociar una clave de KMS a un grupo de registro al crearlo o posteriormente.
Para averiguar si un grupo de registro ya tiene una clave de KMS asociada, 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 registro 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 registro 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 registro
Para desvincular la clave de KMS asociada a un grupo de registro, utilice el siguiente disassociate-kms-keycomando:
aws logs disassociate-kms-key --log-group-name
my-log-group
AWS KMS Claves de y contexto de cifrado
Para mejorar la seguridad de AWS Key Management Service las claves de y los grupos de registro cifrados, CloudWatch Logs ahora coloca el grupo de registro ARNs como parte del contexto de cifrado utilizado 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 habilita a utilizar condiciones de política de IAM para limitar el acceso a la AWS KMS clave de por AWS cuenta de y grupo de registro. 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 registro que cifró anteriormente y ahora desea cambiar el grupo de registro para utilizar una nueva clave de KMS que funcione solo para ese grupo de registro, siga estos pasos.
Para convertir un grupo de registro cifrado a fin de utilizar una clave de KMS con una política que la limite a ese grupo de registro
Ingrese el siguiente comando para encontrar el ARN de la clave actual del grupo de registro:
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" ...
Ingrese el siguiente comando para crear una nueva clave de KMS:
aws kms create-key
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.jsonUtilice un editor de texto para abrir
policy.json
y agregar una expresiónCondition
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
" } } } ] }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.jsonIngrese el siguiente comando para asociar la política al grupo de registro:
aws logs associate-kms-key --log-group-name
my-log-group
--kms-key-idnew-key-ARN
CloudWatch Logs ahora cifra todos los datos nuevos mediante la nueva clave.
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.jsonUtilice un editor de texto para abrir
policy.json
y eliminar todos los valores de la listaAction
, exceptokms: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": "*" } ] }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