Cómo AWS CloudTrail usa AWS KMS
En esta sección se describe cómo AWS KMS se usa un registro de seguimiento de CloudTrail cifrado con una clave de SSE-KMS.
importante
AWS CloudTrail y Amazon S3 solo admite CMK AWS KMS keys simétricas. No puede usar una clave KMS asimétrica para cifrar sus registros de CloudTrail. Para obtener ayuda para determinar si una clave KMS es simétrica o asimétrica, consulte Identificación de distintos tipos de claves en la Guía para desarrolladores de AWS Key Management Service.
No se paga un cargo por uso de claves cuando CloudTrail lee o escribe archivos de registro cifrados con una clave SSE-KMS. Sin embargo, se paga un cargo por uso de claves cuando se accede a los archivos de registro de CloudTrail cifrados con una clave SSE-KMS. Para obtener más información acerca de los precios de AWS KMS, consulte Precios de AWS Key Management Service
Conocer cuándo se usa su clave KMS en el registro de seguimiento
El cifrado de los archivos de registro de CloudTrail con AWS KMS se basa en la característica de Amazon S3 denominada cifrado del lado del servidor con AWS KMS key (SSE-KMS). Para obtener más información sobre SSE-KMS, consulte Uso del cifrado del lado del servidor con claves AWS KMS (SSE-KMS) en la Guía del usuario de Amazon Simple Storage Service.
Al configurar AWS CloudTrail para utilizar SSE-KMS para cifrar los archivos de registro, CloudTrail y Amazon S3 usan la AWS KMS keys al realizar determinadas acciones con esos servicios. En las secciones siguientes se explica cuándo y cómo dichos servicios pueden utilizar su clave KMS y se proporciona información adicional que puede utilizar para validar esta explicación.
Acciones que hacen que CloudTrail y Amazon S3 utilicen su clave KMS
Configure CloudTrail para cifrar los archivos de registro con AWS KMS key
Cuando actualice su configuración de CloudTrail para utilizar su clave KMS, CloudTrail envía una solicitud GenerateDataKey a AWS KMS para comprobar que la clave KMS existe y que CloudTrail tiene permiso para utilizarla para el cifrado. CloudTrail no utiliza la clave de datos resultante.
La solicitud GenerateDataKey incluye la siguiente información para el contexto de cifrado:
-
El nombre de recurso de Amazon (ARN) del seguimiento de CloudTrail
-
El ARN del bucket de S3 y la ruta donde se entregan los archivos de registro de CloudTrail
La solicitud GenerateDataKey genera una entrada en los registros de CloudTrail similar al ejemplo siguiente. Cuando aparece una entrada de registro como esta, se puede determinar que CloudTrail ha llamado a la operación de AWS KMS GenerateDataKey para un registro de seguimiento específico. AWS KMS creó la clave de datos con una clave KMS específica.
{ "eventVersion": "1.09", "userIdentity": { "type": "AWSService", "invokedBy": "cloudtrail.amazonaws.com" }, "eventTime": "2024-12-06T20:14:46Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "cloudtrail.amazonaws.com", "userAgent": "cloudtrail.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770", "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/management-events", "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket-123456789012-9af1fb49/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2010Z_TO50OLMG1hIQ1png.json.gz" } }, "responseElements": null, "requestID": "a0555e85-7e8a-4765-bd8f-2222295558e1", "eventID": "e4f3557e-7dbd-4e37-a00a-d86c137d1111", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "sharedEventID": "ce71d6be-0846-498e-851f-111a1af9078f", "eventCategory": "Management" }
CloudTrail guarda un archivo de registro en su bucket de S3
Cada vez que CloudTrail guarda un archivo de registro en un bucket de S3, Amazon S3 envía una solicitud GenerateDataKey a AWS KMS en nombre de CloudTrail. En respuesta a esta solicitud, AWS KMS genera una clave de datos única y, a continuación, envía a Amazon S3 dos copias de la clave de datos, una en texto no cifrado y otra cifrada con la clave KMS especificada. Amazon S3 utiliza la clave de datos de texto no cifrado para cifrar el archivo de registro de CloudTrail y, a continuación, elimina la clave de datos de texto no cifrado de la memoria tan pronto como sea posible después de utilizarla. Amazon S3 almacena la clave de datos cifrada como metadatos cifrados con el archivo de registro de CloudTrail cifrado.
La solicitud GenerateDataKey incluye la siguiente información para el contexto de cifrado:
-
El nombre de recurso de Amazon (ARN) del seguimiento de CloudTrail
-
El ARN del objeto de S3 (el archivo de registro de CloudTrail)
Cada solicitud GenerateDataKey genera una entrada en los registros de CloudTrail similar al ejemplo siguiente. Cuando aparece una entrada de registro como esta, se puede determinar que CloudTrail ha llamado a la operación de AWS KMS GenerateDataKey para un registro de seguimiento específico para proteger un archivo de registro específico. AWS KMS creó la clave de datos con la clave KMS específica, que se muestra dos veces en la misma entrada de registro.
{ "eventVersion": "1.09", "userIdentity": { "type": "AWSService", "invokedBy": "cloudtrail.amazonaws.com" }, "eventTime": "2024-12-06T21:49:28Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "cloudtrail.amazonaws.com", "userAgent": "cloudtrail.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1::trail/insights-trail", "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2150Z_hVXmrJzjZk2wAM2V.json.gz" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a" }, "responseElements": null, "requestID": "11117d14-9232-414a-b3d1-01bab4dc9f99", "eventID": "999e9a50-512c-4e2a-84a3-111a5f511111", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "sharedEventID": "5e663acc-b7fd-4cdd-8328-0eff862952fa", "eventCategory": "Management" }
Obtenga un archivo de registro cifrado del bucket de S3
Cada vez que usted obtiene un archivo de registro de CloudTrail cifrado del bucket de S3, Amazon S3 envía una solicitud Decrypt a AWS KMS en su nombre para descifrar la clave de datos cifrada del archivo de registro. Como respuesta a esta solicitud, AWS KMS utiliza su clave KMS para descifrar la clave de datos y, a continuación, envía la clave de datos en texto no cifrado a Amazon S3. Amazon S3 utiliza la clave de datos de texto no cifrado para descifrar el archivo de registro de CloudTrail y, a continuación, elimina la clave de datos de texto no cifrado de la memoria tan pronto como sea posible después de utilizarla.
La solicitud Decrypt incluye la siguiente información para el contexto de cifrado:
-
El nombre de recurso de Amazon (ARN) del seguimiento de CloudTrail
-
El ARN del objeto de S3 (el archivo de registro de CloudTrail)
Cada solicitud Decrypt genera una entrada en los registros de CloudTrail similar al ejemplo siguiente. Cuando aparece una entrada de registro como esta, se puede determinar que un rol que se asumió ha llamado a la operación de AWS KMS Decrypt para un registro de seguimiento específico y un archivo de registro específico. AWS KMS descifró la clave de datos con una clave KMS específica.
{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:sts::123456789012:assumed-role/Admin", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "attributes": { "creationDate": "2024-12-06T22:04:04Z", "mfaAuthenticated": "false" } }, "invokedBy": "AWS Internal" }, "eventTime": "2024-12-06T22:26:34Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/insights-trail", "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T0000Z_aAAsHbGBdye3jp2R.json.gz" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "1ab2d2d2-111a-2222-a59b-11a2b3832b53", "eventID": "af4d4074-2849-4b3d-1a11-a1aaa111a111", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }