Uso de AWS KMS con la API de datos de Amazon Redshift - Amazon Redshift

Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la publicación del blog.

Uso de AWS KMS con la API de datos de Amazon Redshift

Al cifrar el clúster de Amazon Redshift o el grupo de trabajo sin servidor de Redshift con una clave administrada por el cliente, la API de datos de Amazon Redshift utiliza esa misma clave administrada por el cliente para almacenar y cifrar las consultas y los resultados.

La API de datos cifra los datos de forma predeterminada para proteger la información confidencial, como el texto y los resultados de las consultas. Utiliza claves de cifrado de AWS KMS que son propiedad de AWS para esta protección.

El cifrado predeterminado de los datos en reposo reduce la sobrecarga operativa y la complejidad al proteger la información confidencial. Este enfoque lo ayuda a crear aplicaciones seguras que cumplen con los estrictos requisitos normativos y de conformidad del cifrado.

Uso de concesiones en AWS KMS

La API de datos requiere una concesión para utilizar la clave administrada por el cliente.

Cuando llama a ExecuteStatement o BatchExecuteStatement en contra de un clúster cifrado con una clave administrada por el cliente, Amazon Redshift crea una concesión en su nombre mediante el envío de una solicitud CreateGrant a AWS KMS. AWS KMS usa concesiones para otorgar a la API de datos acceso a una clave de KMS en la cuenta.

La API de datos necesita la concesión para utilizar la clave administrada por el cliente para las siguientes operaciones:

  • Envíe solicitudes de Encrypt a AWS KMS para cifrar los metadatos de las consultas con la clave administrada por el cliente.

  • Envíe solicitudes de GenerateDataKey a AWS KMS para generar claves de datos cifradas por la clave administrada por el cliente.

  • Envíe solicitudes de Decrypt a AWS KMS para descifrar las claves de datos cifradas, para que puedan cifrarse los datos.

Puede revocar el acceso a la concesión o eliminar el acceso de Amazon Redshift a la clave administrada por el cliente en cualquier momento. Si lo hace, la API de datos ya no puede acceder a datos cifrados por la clave administrada por el cliente, lo que afecta a las operaciones que dependan de esos datos. Por ejemplo, si intenta recuperar los resultados de una consulta o realizar un seguimiento del estado de la consulta después de revocar la concesión, la API de datos devuelve una AccessDeniedException.

Políticas de claves para la clave administrada por el cliente

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 más información, consulte las claves administradas por el cliente en la Guía para desarrolladores de AWS Key Management Service.

Para utilizar las claves administradas por el cliente con la API de datos, primero debe permitir el acceso a Amazon Redshift. Las operaciones de la API siguientes se deben permitir en la política de claves:

  • kms:CreateGrant: agrega una concesión a una clave administrada por el cliente. Concede acceso de control a una clave de AWS KMS especificada, lo que permite acceder a las operaciones de concesión que Amazon Redshift necesita. Para obtener más información, consulte Uso de concesiones en AWS KMS.

A continuación, se muestra una política de claves de ejemplo:

"Statement":[ { "Sid":"Allow access to principals authorized to use Amazon Redshift", "Effect":"Allow", "Principal":{ "AWS":"*" }, "Action":[ "kms:DescribeKey", "kms:CreateGrant" ], "Resource":"*", "Condition":{ "StringEquals":{ "kms:ViaService":"redshift.amazonaws.com", "kms:CallerAccount":"111122223333" } } }, { "Sid":"AllowKeyAdministratorsAccess", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::111122223333:role/ExampleAdminRole" }, "Action":"kms:*", "Resource":"*" }, { "Sid":"AllowKeyUseForExampleRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action":[ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource":"*" } ]

Contexto de cifrado de API de datos

Un contexto de cifrado es un conjunto de pares de valor de clave opcional que contiene información contextual adicional sobre los datos. AWS KMS utiliza el contexto de cifrado como datos autenticados adicionales para permitir el cifrado autenticado. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vincula el contexto de cifrado a los datos cifrados. Para descifrar los datos, debe incluir el mismo contexto de cifrado en la solicitud.

La API de datos utiliza los mismos tres pares clave-valor del contexto de cifrado en todas las operaciones criptográficas de AWS KMS de los clústeres aprovisionados:

  • aws:redshift:arn: el nombre de recurso de Amazon (ARN) del clúster

  • aws:redshift:createtime: la marca temporal en que solicitó la creación de un clúster

  • serviceNameRedshiftDataAPI

"EncryptionContextSubset": { "aws:redshift:arn": "arn:aws:redshift:us-east-1:123456789012:cluster:redshift-cluster", "aws:redshift:createtime": "20250815T0000Z", "serviceName": "RedshiftDataAPI", }

La API de datos utiliza dos pares clave-valor del contexto de cifrado en todas las operaciones criptográficas de AWS KMS de los grupos de trabajo sin servidor:

  • aws:redshift-serverless:arn: el nombre de recurso de Amazon (ARN) del espacio de nombres

  • serviceName: RedshiftDataAPI

"EncryptionContextSubset": { "aws:redshift-serverless:arn": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace:12345678-1234-1234-1234-123456789012", "serviceName": "RedshiftDataAPI" }

Para obtener más información sobre el cifrado, consulte Introducción a los detalles criptográficos de AWS KMS. Para obtener más información sobre Amazon Redshift y la integración de AWS KMS, consulte Cómo Amazon Redshift utiliza AWS KMS.