View a markdown version of this page

Activación del cifrado de datos en reposo de un clúster elástico de Amazon DocumentDB - Amazon DocumentDB

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.

Activación del cifrado de datos en reposo de un clúster elástico de Amazon DocumentDB

Los siguientes temas le ayudan a conocer, crear y supervisar las claves de AWS Key Management Service cifrado para los clústeres elásticos de Amazon DocumentDB:

Los clústeres elásticos de Amazon DocumentDB se integran automáticamente con AWS Key Management Service (AWS KMS) para administrar las claves y utilizan un método conocido como cifrado de sobres para proteger los datos. Para obtener más información acerca del cifrado de sobre, consulte Cifrado de sobre en la Guía para desarrolladores de AWS Key Management Service .

Un AWS KMS key es una representación lógica de una clave. La clave de KMS incluye metadatos, como el ID de clave, la fecha de creación, la descripción y el estado de la clave. La clave de KMS también contiene el material de claves utilizado para cifrar y descifrar datos. Para obtener más información acerca de las claves de KMS, consulte AWS KMS keys en la Guía para desarrolladores de AWS Key Management Service .

Los clústeres elásticos de Amazon DocumentDB admiten el cifrado con dos tipos de claves:

  • AWS claves propias: los clústeres elásticos de Amazon DocumentDB utilizan estas claves de forma predeterminada para cifrar automáticamente los datos de identificación personal. No puede ver, administrar ni usar claves AWS propias ni auditar su uso. Sin embargo, no tiene que realizar ninguna acción ni cambiar ningún programa para proteger las claves que cifran sus datos. Para obtener más información, consulte las claves propiedad de AWS en la Guía para desarrolladores de AWS Key Management Service .

  • Customer-managed claves: son simétricas y tú AWS KMS keys las creas, posees y administras. Como usted tiene el control total de este cifrado, puede realizar dichas tareas como:

    • Establecer y mantener políticas de claves

    • Establecer y mantener concesiones y políticas de IAM

    • Habilitar y deshabilitar políticas de claves

    • Rotar el material criptográfico

    • Adición de etiquetas de

    • Crear alias de clave

    • Programar la eliminación de claves

    Para obtener más información, consulte las claves administradas por el cliente en la  Guía para desarrolladores de AWS Key Management Service .

importante

Debe utilizar una clave de cifrado de KMS simétrica para cifrar el clúster, ya que Amazon DocumentDB solo admite claves de cifrado de KMS de cifrado simétricas. No utilice una CMK asimétrica para intentar cifrar los datos de los clústeres elásticos de Amazon DocumentDB. Para obtener más información, consulte claves asimétricas de AWS KMS en la Guía para desarrolladores de AWS Key Management Service .

Si Amazon DocumentDB ya no puede obtener acceso a la clave de cifrado de un clúster, por ejemplo, cuando se revoca el acceso a una clave, el clúster cifrado entra en un estado terminal. En este caso, solo puede restaurar el clúster desde una copia de seguridad. Para Amazon DocumentDB, las copias de seguridad siempre están habilitadas durante 1 día. Además, si deshabilita la clave de un clúster cifrado de Amazon DocumentDB, eventualmente perderá el acceso de lectura y escritura a ese clúster. Cuando Amazon DocumentDB encuentra una instancia que está cifrada con una clave a la que no tiene acceso, pone el clúster en un estado terminal. En dicho estado, el clúster ya no está disponible y no es posible recuperar su estado actual. Para restaurar el clúster, debe volver a activar el acceso a la clave de cifrado para Amazon DocumentDB y después restaurar el clúster a partir de una copia de seguridad.

importante

No puede cambiar la clave KMS de un clúster cifrado después de haberlo creado. Asegúrese de determinar los requisitos de clave de cifrado antes de crear el clúster elástico cifrado.

Cómo utilizan los clústeres elásticos de Amazon DocumentDB las subvenciones en AWS KMS

Los clústeres elásticos de Amazon DocumentDB requieren una concesión para utilizar la clave administrada por el cliente.

Cuando crea un clúster cifrado con una clave gestionada por el cliente, los clústeres elásticos de Amazon DocumentDB crean una concesión en su nombre enviando una CreateGrant solicitud a. AWS KMS Las concesiones se AWS KMS utilizan para dar a los clústeres elásticos de Amazon DocumentDB acceso a una clave de KMS en una cuenta de cliente.

Los clústeres elásticos de Amazon DocumentDB necesitan la concesión para utilizar la clave administrada por el cliente para las siguientes operaciones internas:

  • Envíe DescribeKey solicitudes AWS KMS para verificar que el ID de clave simétrico administrado por el cliente, introducido al crear un clúster elástico, sea válido.

  • Envía GenerateDataKey solicitudes AWS KMS para generar claves de datos cifradas con tu clave gestionada por el cliente.

  • Envíe Decrypt solicitudes AWS KMS para descifrar las claves de datos cifradas para que puedan usarse para cifrar sus datos.

  • Puede revocar el acceso a la concesión o eliminar el acceso del servicio a la clave administrada por el cliente en cualquier momento. Si lo hace, los clústeres elásticos de Amazon DocumentDB no podrán acceder a ninguno de los datos cifrados por la clave administrada por el cliente, lo que afectará a las operaciones que dependen de esos datos.

Creación de una clave administrada por el cliente

Puede crear una clave simétrica administrada por el cliente mediante la API Consola de administración de AWS o la API. AWS KMS

Creación de claves simétricas administradas por el cliente

Siga los pasos para crear una clave simétrica administrada por el cliente en la Guía para AWS Key Management Service desarrolladores.

Política de claves

Las políticas de clave controlan el acceso a la clave administrada por el cliente. Cada clave administrada por el cliente debe tener exactamente una política de clave, que contiene instrucciones que determinan quién puede usar la clave y cómo puede utilizarla. Cuando crea la clave administrada por el cliente, puede especificar una política de clave. Para obtener más información, consulte la información de acceso a la clave de KMS que se encuentra en la descripción general de AWS Key Management Service de la Guía para desarrolladores de AWS Key Management Service .

Para utilizar la clave administrada por el cliente con los recursos de los clústeres elásticos de Amazon DocumentDB, se deben permitir las siguientes operaciones de API en la política de claves:

  • kms:CreateGrant: agrega una concesión a una clave administrada por el cliente. Otorga el acceso de control a una clave de KMS específica, lo que permite el acceso a las operaciones de concesión que requieren los clústeres elásticos de Amazon DocumentDB. Para obtener más información sobre las concesiones, consulte Uso de concesiones AWS KMS en la Guía para desarrolladores de AWS Key Management Service .

  • kms:DescribeKey— Proporciona los detalles de la clave administrada por el cliente para permitir que los clústeres elásticos de Amazon DocumentDB validen la clave.

  • kms:Decrypt— Permite a los clústeres elásticos de Amazon DocumentDB utilizar la clave de datos cifrados almacenada para acceder a los datos cifrados.

  • kms:GenerateDataKey— Permite que los clústeres elásticos de Amazon DocumentDB generen una clave de datos cifrada y la almacenen, ya que la clave de datos no se utiliza inmediatamente para cifrar.

Para obtener más información, consulte los permisos para los AWS servicios en las políticas de claves y la solución de problemas de acceso a las claves en la Guía para AWS Key Management Service desarrolladores.

Restricción del acceso a las claves gestionadas por el cliente mediante políticas de IAM

Además de las políticas clave de KMS, también puede restringir los permisos de clave de KMS en una política de IAM.

Puede hacer que la política de IAM sea más estricta de varias maneras. Por ejemplo, para permitir que la clave administrada por el cliente se utilice solo para solicitudes que se originen en clústeres elásticos de Amazon DocumentDB, puede utilizar la kms:ViaServiceclave de condición con el valor docdb-elastic.<region-name>.amazonaws.com.

Para obtener más información, consulte Cómo permitir a los usuarios de otras cuentas utilizar una clave de KMS en la Guía para desarrolladores de AWS Key Management Service .

Supervisión de las claves de cifrado de clústeres elásticos de Amazon DocumentDB

Cuando utiliza una clave gestionada por el cliente con sus recursos de clústeres elásticos de Amazon DocumentDB, puede utilizar AWS CloudTrail Amazon CloudWatch Logs para realizar un seguimiento de las solicitudes a las que envían los clústeres elásticos de Amazon DocumentDB. AWS KMS

Los siguientes ejemplos son AWS CloudTrail eventos paraCreateGrant, GenerateDataKeyWithoutPlainTextDecrypt, y DescribeKey para supervisar AWS KMS key las operaciones convocadas por los clústeres elásticos de Amazon DocumentDB para acceder a los datos cifrados por la clave gestionada por el cliente:

CreateGrant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-09T23:04:20Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-09T23:55:48Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "retiringPrincipal": "docdb-elastic.us-east-1.amazonaws.com", "granteePrincipal": "docdb-elastic.us-east-1.amazonaws.com", "operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey" ], "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
GenerateDataKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-10T18:02:59Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-10T18:03:25Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
Decrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-10T18:05:49Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-10T18:06:19Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-09T23:04:20Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-09T23:55:48Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "keyId": "alias/SampleKmsKey" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Más información

Los siguientes recursos proporcionan más información sobre cifrado de datos en reposo:

  • Para obtener más información sobre AWS KMS los conceptos, consulte los conceptos AWS Key Management Service básicos en la Guía para AWS Key Management Service desarrolladores.

  • Para obtener más información sobre AWS KMS la seguridad, consulte las prácticas recomendadas de seguridad AWS Key Management Service de la Guía para AWS Key Management Service desarrolladores.