Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Cifrado en reposo: Cómo utilizar claves administradas por el cliente para cifrar tablas en Amazon Keyspacess.

Modo de enfoque
Cifrado en reposo: Cómo utilizar claves administradas por el cliente para cifrar tablas en Amazon Keyspacess. - Amazon Keyspaces (para Apache Cassandra)

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.

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.

Puede utilizar la consola o CQL las instrucciones AWS KMS key para especificar las tablas nuevas y actualizar las claves de cifrado de las tablas existentes en Amazon Keyspaces. En el siguiente tema se describe cómo implementar claves administradas por el cliente para tablas nuevas y existentes.

Requisitos previos: Crear una clave gestionada por el cliente AWS KMS y conceder permisos a Amazon Keyspaces

Para poder proteger una tabla de Amazon Keyspaces con una clave gestionada por el cliente, primero debe crear la clave en AWS Key Management Service (AWS KMS) y, a continuación, autorizar a Amazon Keyspaces a utilizarla.

Paso 1: Crear una clave administrada por el cliente utilizando AWS KMS

Para crear una clave gestionada por el cliente que se utilice para proteger una tabla de Amazon Keyspaces, puede seguir los pasos que se indican en Creación de KMS claves de cifrado simétricas mediante la consola o el. AWS API

Paso 2: Autorizar el uso de su clave administrada por el cliente

Para que pueda elegir una clave administrada por el cliente para proteger una tabla de Amazon Keyspaces, las políticas de dicha clave administrada por el cliente deben conceder a Amazon Keyspaces permiso para utilizarla en su nombre. Usted tiene el control total sobre las políticas y concesiones de la clave administrada por el cliente. Puede proporcionar estos permisos en una política de claves, una política de IAM o una concesión.

Amazon Keyspaces no necesita autorización adicional para utilizar la Clave propiedad de AWS predeterminada para proteger las tablas de Amazon Keyspaces en su cuenta de AWS .

En los temas siguientes se muestra cómo configurar los permisos necesarios mediante IAM políticas y concesiones que permiten a las tablas de Amazon Keyspaces utilizar una clave gestionada por el cliente.

Política de claves para claves administradas por el cliente

Al seleccionar una clave administrada por el cliente para proteger una tabla de Amazon Keyspaces, Amazon Keyspaces obtiene permiso para utilizar la clave administrada por el cliente en nombre de la entidad principal que realiza la selección. Esa entidad principal, un usuario o rol debe tener en la clave administrada por el cliente los permisos que Amazon Keyspaces requiere.

Como mínimo, Amazon Keyspaces requiere los siguientes permisos en una clave administrada por el cliente:

Política de claves de ejemplo

Por ejemplo, la política de claves de ejemplo siguiente proporciona solo los permisos necesarios. La política tiene las siguientes consecuencias:

  • Permite a Amazon Keyspaces utilizar la clave administrada por el cliente en operaciones de cifrado y crear concesiones, pero solo cuando actúa en nombre de entidades principales de la cuenta que tienen permiso para utilizar Amazon Keyspaces. Si las entidades principales especificadas en la declaración de la política no tienen permiso para utilizar Amazon Keyspaces, la llamada falla, aunque proceda del servicio Amazon Keyspaces.

  • La clave kms: ViaService condition permite los permisos solo cuando la solicitud proviene de Amazon Keyspaces en nombre de las entidades principales que figuran en la declaración de política. Estas entidades principales no pueden llamar a estas operaciones directamente. Tenga en cuenta que el valor kms:ViaService, cassandra.*.amazonaws.com, tiene un asterisco (*) en la posición Región. Amazon Keyspaces requiere el permiso para ser independiente de cualquier elemento concreto. Región de AWS

  • Otorga a los administradores de la clave administrada por el cliente (usuarios que pueden asumir la función db-team) acceso de solo lectura a la clave administrada por el cliente y permiso para revocar concesiones, incluyendo las concesiones que Amazon Keyspaces requiere para proteger la tabla.

  • Otorga a Amazon Keyspaces acceso de solo lectura a la clave administrada por el cliente. En este caso, Amazon Keyspaces puede llamar directamente a estas operaciones. No tiene que actuar en nombre de una entidad principal de la cuenta.

Antes de utilizar un ejemplo de política de claves, sustituya los principios de ejemplo por los principios reales de su empresa. Cuenta de AWS

{ "Id": "key-policy-cassandra", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon Keyspaces for all principals in the account that are authorized to use Amazon Keyspaces", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "cassandra.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the customer managed key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }

Uso de concesiones para autorizar a Amazon Keyspaces

Además de las políticas de claves, Amazon Keyspaces utiliza concesiones para establecer permisos en una clave administrada por el cliente. Para ver las concesiones que tiene una clave administrada por el cliente en su cuenta, utilice la operación ListGrants. Amazon Keyspaces no necesita concesiones, ni ningún permiso adicional, para utilizar la Clave propiedad de AWS para proteger su tabla.

Amazon Keyspaces utiliza los permisos de concesión cuando realiza tareas de mantenimiento del sistema en segundo plano y de protección continua de datos. También utiliza las concesiones para generar las claves de la tabla.

Cada concesión es específica de una tabla. Si la cuenta incluye múltiples tablas cifradas bajo la misma clave administrada por el cliente, existe una concesión de cada tipo para cada tabla. La concesión está limitada por el contexto de cifrado de Amazon Keyspaces, que incluye el nombre de la tabla y Cuenta de AWS el ID. La concesión incluye el permiso para retirar la concesión si ya no fuera necesaria.

Para crear las concesiones, Amazon Keyspaces debe tener permiso para llamar a CreateGrant en nombre del usuario que creó la tabla cifrada.

La política de claves también puede permitir a la cuenta revocar la concesión en la clave administrada por el cliente. Sin embargo, si revoca la concesión en una tabla cifrada activa, Amazon Keyspaces no podrá proteger ni mantener la tabla.

Paso 3: Especificar una clave administrada por el cliente para una tabla nueva

Siga estos pasos para especificar la clave gestionada por el cliente en una tabla nueva mediante la consola Amazon Keyspaces o. CQL

Creación de una tabla cifrada utilizando una clave administrada por el cliente (consola)

  1. Inicia sesión en la AWS Management Console consola de Amazon Keyspaces y ábrela desde casahttps://console.aws.amazon.com/keyspaces/.

  2. En el panel de navegación, elija Tablas y, a continuación, seleccione Crear tabla.

  3. En la página Crear tabla, en la sección Detalles de la tabla, seleccione un espacio de claves y proporcione un nombre para la nueva tabla.

  4. En la sección Esquema, cree el esquema para su tabla.

  5. En la sección Configuración de la tabla, elija Personalizar configuración.

  6. Continúe en Configuración del cifrado.

    En este paso, usted selecciona la configuración del cifrado para la tabla.

    En la sección Cifrado en reposo, en Elija una AWS KMS key, elija la opción Elegir una KMS clave diferente (avanzada) y, en el campo de búsqueda, elija AWS KMS key o introduzca un nombre de recurso de Amazon (ARN).

    nota

    Si no se puede acceder a la clave que ha seleccionado o le faltan los permisos necesarios, consulte Solución de problemas de acceso a claves en la Guía para AWS Key Management Service desarrolladores.

  7. Elija Crear para crear la tabla cifrada.

Cree una tabla nueva con una clave gestionada por el cliente para el cifrado en reposo (CQL)

Para crear una nueva tabla que utilice una clave administrada por el cliente para el cifrado en reposo, puede utilizar la instrucción CREATE TABLE como se muestra en el siguiente ejemplo. Asegúrese de sustituir la clave ARN por una clave válida ARN con los permisos concedidos a Amazon Keyspaces.

CREATE TABLE my_keyspace.my_table(id bigint, name text, place text STATIC, PRIMARY KEY(id, name)) WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

Si recibe una Invalid Request Exception, debe confirmar que la clave administrada por el cliente sea válida y que Amazon Keyspaces disponga de los permisos necesarios. Para confirmar que la clave se ha configurado correctamente, consulte Solución de problemas de acceso a claves en la Guía para AWS Key Management Service desarrolladores.

Paso 4: Actualizar la clave de cifrado de una tabla existente

También puede utilizar la consola Amazon Keyspaces o CQL cambiar las claves de cifrado de una tabla existente entre una clave gestionada por el cliente Clave propiedad de AWS y una KMS clave gestionada por el cliente en cualquier momento.

Actualización de una tabla existente con la nueva clave administrada por el cliente (consola)

  1. Inicia sesión en la AWS Management Console consola de Amazon Keyspaces y ábrela desde casahttps://console.aws.amazon.com/keyspaces/.

  2. En el panel de navegación, elija Tablas.

  3. Elija la tabla que desee actualizar y luego la pestaña Configuración adicional.

  4. En la sección Cifrado en reposo, elija Administrar cifrado para editar la configuración del cifrado de la tabla.

    En Elige una AWS KMS key, selecciona la opción Elige una KMS clave diferente (avanzada) y, en el campo de búsqueda, selecciona AWS KMS key o introduce un nombre de recurso de Amazon (ARN).

    nota

    Si la clave que ha seleccionado no es válida, consulte Solución de problemas de acceso a claves en la Guía para AWS Key Management Service desarrolladores.

    Como alternativa, puede elegir una Clave propiedad de AWS para una tabla cifrada con una clave gestionada por el cliente.

  5. Elija Guardar para guardar los cambios en la tabla.

Actualización de la clave de cifrado utilizada en una tabla existente

Para cambiar la clave de cifrado de una tabla existente, utilice la instrucción ALTER TABLE para especificar una clave administrada por el cliente para el cifrado en reposo. Asegúrese de sustituir la clave ARN por una clave válida ARN con los permisos concedidos a Amazon Keyspaces.

ALTER TABLE my_keyspace.my_table WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

Si recibe una Invalid Request Exception, debe confirmar que la clave administrada por el cliente sea válida y que Amazon Keyspaces disponga de los permisos necesarios. Para confirmar que la clave se ha configurado correctamente, consulte Solución de problemas de acceso a claves en la Guía para AWS Key Management Service desarrolladores.

Para volver a cambiar la clave de cifrado por la opción de cifrado en reposo predeterminada Claves propiedad de AWS, puede utilizar la ALTER TABLE sentencia que se muestra en el siguiente ejemplo.

ALTER TABLE my_keyspace.my_table WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type' : 'AWS_OWNED_KMS_KEY' } };

Paso 5: Utilizar el contexto de cifrado de Amazon Keyspaces en los registros

Un contexto de cifrado es un conjunto de pares de clave-valor que contienen datos no secretos arbitrarios. Al incluir un contexto de cifrado en una solicitud de cifrado de datos, vincula AWS KMS criptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasar el mismo contexto de cifrado.

Amazon Keyspaces utiliza el mismo contexto de cifrado en todas las operaciones AWS KMS criptográficas. Si utiliza una clave administrada por el cliente para proteger su tabla de Amazon Keyspaces, puede utilizar el contexto de cifrado para identificar el uso de la clave administrada por el cliente en los registros de auditoría y en los registros. También aparece en texto plano en los registros, como en los registros de Amazon Logs AWS CloudTraily Amazon CloudWatch Logs.

En sus solicitudes AWS KMS, Amazon Keyspaces utiliza un contexto de cifrado con tres pares clave-valor.

"encryptionContextSubset": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "mytable" "aws:cassandra:subscriberId": "111122223333" }
  • Espacio de claves: el primer par clave-valor identifica el espacio de claves que incluye la tabla que Amazon Keyspaces está cifrando. La clave es aws:cassandra:keyspaceName. El valor es el nombre del espacio de claves.

    "aws:cassandra:keyspaceName": "<keyspace-name>"

    Por ejemplo:

    "aws:cassandra:keyspaceName": "my_keyspace"
  • Tabla: el segundo par clave-valor identifica la tabla que Amazon Keyspaces está cifrando. La clave es aws:cassandra:tableName. El valor es el nombre de la tabla.

    "aws:cassandra:tableName": "<table-name>"

    Por ejemplo:

    "aws:cassandra:tableName": "my_table"
  • Cuenta: el tercer par clave-valor identifica la Cuenta de AWS. La clave es aws:cassandra:subscriberId. El valor es el ID de la cuenta.

    "aws:cassandra:subscriberId": "<account-id>"

    Por ejemplo:

    "aws:cassandra:subscriberId": "111122223333"

Paso 6: Configure la supervisión con AWS CloudTrail

Si utilizas una clave gestionada por el cliente para proteger tus tablas de Amazon Keyspaces, puedes utilizar AWS CloudTrail los registros para realizar un seguimiento de las solicitudes que Amazon Keyspaces envía en tu nombre. AWS KMS

Las solicitudes GenerateDataKey, DescribeKey, Decrypt y CreateGrant se tratan en esta sección. Además, Amazon Keyspaces utiliza una RetireGrantoperación para eliminar una concesión al eliminar una tabla.

GenerateDataKey

Amazon Keyspaces crea una clave de tabla única para cifrar los datos en reposo. Envía una GenerateDataKeysolicitud a la AWS KMS que se especifica la KMS clave de la tabla.

El evento que registra la operación GenerateDataKey es similar al siguiente evento de ejemplo. El usuario es la cuenta de servicio de Amazon Keyspaces. Los parámetros incluyen el nombre del recurso de Amazon (ARN) de la clave administrada por el cliente, un especificador de clave que requiere una clave de 256 bits y el contexto de cifrado que identifica el espacio de claves, la tabla y el. Cuenta de AWS

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T04:56:05Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keySpec": "AES_256", "encryptionContext": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" }, "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" }, "responseElements": null, "requestID": "5e8e9cb5-9194-4334-aacc-9dd7d50fe246", "eventID": "49fccab9-2448-4b97-a89d-7d5c39318d6f", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012", "sharedEventID": "84fbaaf0-9641-4e32-9147-57d2cb08792e" }
DescribeKey

Amazon Keyspaces utiliza una DescribeKeyoperación para determinar si la KMS clave que ha seleccionado existe en la cuenta y la región.

El evento que registra la operación DescribeKey es similar al siguiente evento de ejemplo. El usuario es la cuenta de servicio de Amazon Keyspaces. Los parámetros incluyen ARN la clave administrada por el cliente y un especificador de clave que requiere una clave de 256 bits.

{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZ3FNIIVIZZ6H7CFQG", "arn": "arn:aws:iam::123SAMPLE012:user/admin", "accountId": "123SAMPLE012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "admin", "sessionContext": { "sessionIssuer": {}, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-16T04:55:42Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T04:55:58Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" }, "responseElements": null, "requestID": "c25a8105-050b-4f52-8358-6e872fb03a6c", "eventID": "0d96420e-707e-41b9-9118-56585a669658", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012" }
Decrypt

Al acceder a una tabla de Amazon Keyspaces cifrada, Amazon Keyspaces necesita descifrar la clave de la tabla de manera que pueda descifrar las claves de menor nivel en la jerarquía. A continuación, descifra los datos de la tabla. Para descifrar la clave de la tabla, Amazon Keyspaces envía una solicitud de descifrado AWS KMS a la que se especifica KMS la clave de la tabla.

El evento que registra la operación Decrypt es similar al siguiente evento de ejemplo. El usuario principal que accede a la tabla es el Cuenta de AWS usuario principal. Los parámetros incluyen la clave de la tabla cifrada (como un bloque de texto cifrado) y el contexto de cifrado que identifica la tabla y la. Cuenta de AWS AWS KMS obtiene el ID de la clave gestionada por el cliente a partir del texto cifrado.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T05:29:44Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "50e80373-83c9-4034-8226-5439e1c9b259", "eventID": "8db9788f-04a5-4ae2-90c9-15c79c411b6b", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012", "sharedEventID": "7ed99e2d-910a-4708-a4e3-0180d8dbb68e" }
CreateGrant

Al utilizar una clave administrada por el cliente para proteger su tabla de Amazon Keyspaces, Amazon Keyspaces utiliza concesiones para permitir que el servicio realice tareas continuas de protección, mantenimiento y durabilidad de los datos. Estas concesiones no son necesarias en las Claves propiedad de AWS.

Las concesiones que Amazon Keyspaces crea son específicas de una tabla. La entidad principal en la solicitud CreateGrant es el usuario que creó la tabla.

El evento que registra la operación CreateGrant es similar al siguiente evento de ejemplo. Los parámetros incluyen ARN la clave gestionada por el cliente para la tabla, el principal beneficiario y el principal que se jubila (el servicio Amazon Keyspaces) y las operaciones que cubre la subvención. También incluye una restricción que exige que todas las operaciones de cifrado utilicen el contexto de cifrado especificado.

{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZ3FNIIVIZZ6H7CFQG", "arn": "arn:aws:iam::arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111:user/admin", "accountId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "admin", "sessionContext": { "sessionIssuer": {}, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-16T04:55:42Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T05:11:10Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keyId": "a7d328af-215e-4661-9a69-88c858909f20", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ], "constraints": { "encryptionContextSubset": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" } }, "retiringPrincipal": "cassandratest.us-east-1.amazonaws.com", "granteePrincipal": "cassandratest.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "18e4235f1b07f289762a31a1886cb5efd225f069280d4f76cd83b9b9b5501013" }, "requestID": "b379a767-1f9b-48c3-b731-fb23e865e7f7", "eventID": "29ee1fd4-28f2-416f-a419-551910d20291", "readOnly": false, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012" }
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.