Cifrado del Catálogo de datos
El cifrado AWS Glue Data Catalog permite una seguridad mejorada para los datos confidenciales. AWS Glue se integra con AWS Key Management Service (AWS KMS) para cifrar los metadatos almacenados en el Catálogo de datos. Las configuraciones de cifrado para los recursos en el Catálogo de datos se pueden activar o desactivar a través de la consola de AWS Glue o el AWS CLI.
Si el cifrado está activado en el Catálogo de datos, se cifrarán todos los objetos nuevos que se creen. Si el cifrado está desactivado, no se cifrarán los objetos nuevos que se creen, pero los objetos que ya estén cifrados permanecerán cifrados.
Se puede cifrar el Catálogo de datos en su totalidad con las claves de cifrado administradas por AWS o con las claves de cifrado administradas por el cliente. Para obtener más información sobre los tipos y los estados de las claves, consulte Conceptos de AWS Key Management Service en la Guía para desarrolladores de AWS Key Management Service.
Claves administradas de AWS
Las claves administradas de AWS son claves KMS que aparecen en su cuenta y que un servicio de AWS integrado con AWS KMS crea, administra y utiliza en su nombre. Las claves administradas de AWS en su cuenta se pueden visualizar, junto con sus políticas de claves, y en los registros de AWS CloudTrail se puede auditar su utilización. Sin embargo, estas claves no se pueden administrar ni cambiar sus permisos.
El cifrado en reposo se integra de manera automática con AWS KMS para administrar las claves administradas de AWS para AWS Glue y que se utilizan para cifrar los metadatos. Si no existe una clave administrada por AWS cuando se active el cifrado de los metadatos, AWS KMS creará una nueva de manera automática.
Para obtener más información, consulte Claves administradas de AWS.
Claves administradas por el cliente
Las claves administradas por el cliente son claves KMS de su Cuenta de AWS, que usted ha creado, posee y administra. Usted tiene el control total sobre estas claves de KMS. Puede hacer lo siguiente:
-
Establecer y mantener las políticas de claves, las políticas de IAM y las subvenciones
-
Habilitar y deshabilitar las claves
-
Rotar su material de cifrado
-
Agregue etiquetas
-
Crear alias que hagan referencia a las claves
-
Programar la eliminación de las claves
Para obtener más información sobre la administración de los permisos de una clave administrada por el cliente, consulte Claves administradas por el cliente.
AWS Glue solo es compatible con las claves simétricas administradas por el cliente. La lista de claves de KMS solo muestra las claves simétricas. Sin embargo, si selecciona Seleccionar un ARN de clave de KMS, la consola le deja escribir un ARN para cualquier tipo de clave. Asegúrese de introducir sólo ARN para claves simétricas.
Para crear una clave simétrica administrada por el cliente, siga las instrucciones para la creación de claves simétricas administradas por el cliente en la Guía para desarrolladores de AWS Key Management Service.
Al activar el cifrado del Catálogo de datos en reposo, se cifran con claves MKS los tipos de recursos que se mencionan a continuación:
Bases de datos
Tablas
Particiones
Versiones de tablas
Estadísticas de las columnas
Funciones definidas por el usuario
Vistas del Catálogo de datos
Contexto de cifrado de AWS Glue
Un contexto de cifrado es un conjunto de pares de valor de clave opcional que pueden contener información contextual adicional sobre los datos. AWS KMS utiliza el contexto de cifrado como información autenticada adicional 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 cifrar los datos, se incluye el mismo contexto de cifrado en la solicitud. AWS Glue utiliza el mismo contexto de cifrado en todas las operaciones de cifrado de AWS KMS, en las cuales glue_catalog_id
es la clave y el valor es catalogId
.
"encryptionContext": {
"glue_catalog_id": "111122223333"
}
Al utilizar una clave administrada por AWS o una clave simétrica administrada por el cliente para cifrar el Catálogo de datos, también se puede utilizar un contexto de cifrado en los documentos de la auditoría y en los registros para identificar la clave que se utiliza. El contexto de cifrado también aparece en los registros que generan los registros de AWS CloudTrail o de Amazon CloudWatch.
Habilitación del cifrado
El cifrado de los objetos de AWS Glue Data Catalog se puede activar en Configuraciones del Catálogo de datos en la consola de AWS Glue o con la AWS CLI.
- Console
-
Para habilitar el cifrado mediante la consola
Inicie sesión en la AWS Management Console y abra la consola de AWS Glue en https://console.aws.amazon.com/glue/.
-
Seleccione Catálogo de datos en el panel de navegación.
-
En la página Configuraciones del Catálogo de datos, seleccione la casilla Cifrado de metadatos y luego seleccione una clave de AWS KMS.
Al activar el cifrado, y si no se especificó una clave administrada por el cliente, las configuraciones de cifrado utilizan una clave de KMS administrada por AWS.
-
(Opcional) Al utilizar una clave administrada por el cliente para cifrar el Catálogo de datos, el Catálogo ofrece una opción para registrar un rol de IAM para cifrar y descifrar los recursos. Debe conceder permisos de rol de IAM para que los asuma AWS Glue en su nombre. Esto incluye los permisos de AWS KMS para cifrar y descifrar datos.
Al crear un recurso nuevo en el Catálogo de datos, AWS Glue asume el rol de IAM que se brindó para cifrar los datos. De forma similar, cuando un cliente accede al recurso, AWS Glue asume el rol de IAM para cifrar los datos. Si se registra un rol de IAM con los permisos necesarios, la entidad principal que realiza la llamada ya no necesita permisos para acceder a la clave y descifrar los datos.
Las operaciones de KMS se pueden delegar a un rol de IAM solo cuando se utiliza una clave administrada por el cliente para cifrar los recursos del Catálogo de datos. La característica de delegación de roles de KMS no es compatible con la utilización de claves administradas de AWS para el cifrado de los recursos del Catálogo de datos en este momento.
Al activar un rol de IAM para delegar las operaciones de KMS, ya no podrá acceder a los recursos del Catálogo de datos cifrados anteriormente con una clave administrada de AWS.
-
Para habilitar un rol de IAM que AWS Glue pueda asumir para cifrar y descifrar los datos en su nombre, seleccione la opción Delegar operaciones de KMS a un rol de IAM.
-
Luego, seleccione un rol de IAM.
Para crear un rol de IAM;, consulte Crear un rol de IAM para AWS Glue.
El rol de IAM asumido por AWS Glue para acceder al Catálogo de datos debe contar con los permisos para cifrar y descifrar los metadatos en el Catálogo de datos. Puede crear un rol de IAM y adjuntar las políticas integradas que me enumeran a continuación:
-
La política que figura a continuación se puede agregar para incluir los permisos de AWS KMS para cifrar y descifrar el Catálogo de datos.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:GenerateDataKey"
],
"Resource": "arn:aws:kms:<region>
:<account-id>
:key/<key-id>
"
}
]
}
-
Luego, agregue al rol la política a continuación para que el servicio de AWS Glue asuma el rol de IAM.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
Luego, agregue el permiso de iam:PassRole
al rol de IAM.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::<account-id>
:role/<encryption-role-name>
"
]
}
]
}
Al activar el cifrado, y si no se especificó un rol de IAM para que AWS Glue asuma, la entidad principal que acceda al Catálogo de datos debe contar con los permisos para realizar las operaciones de API que se enumeran a continuación:
-
kms:Decrypt
-
kms:Encrypt
-
kms:GenerateDataKey
- AWS CLI
-
Para habilitar el cifrado mediante el SDK o AWS CLI
-
Use la operación PutDataCatalogEncryptionSettings
de la API. Si no se especifica ninguna clave, AWS Glue utiliza una clave de cifrado administrada por AWS para la cuenta del cliente para cifrar el Catálogo de datos.
aws glue put-data-catalog-encryption-settings \
--data-catalog-encryption-settings '{
"EncryptionAtRest": {
"CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE",
"SseAwsKmsKeyId": "arn:aws:kms:<region>
:<account-id>
:key/<key-id>
",
"CatalogEncryptionServiceRole":"arn:aws:iam::<account-id>
:role/<encryption-role-name>
"
}
}'
Al activar el cifrado, se cifran todos los objetos que se creen en el Catálogo de datos. Si elimina la configuración, ya no se cifrarán los objetos que se creen en el Catálogo de datos. Puede seguir accediendo a los objetos que ya están cifrados en el Catálogo de datos con los permisos de KMS requeridos.
La clave AWS KMS debe permanecer disponible en el almacén de claves AWS KMS para todos los objetos que se cifran con ella en el Catálogo de datos. Si elimina la clave, los objetos ya no se podrán descifrar. Es posible que en determinados casos le interese esta opción para evitar el acceso a los metadatos del Catálogo de datos.
|
Monitoreo de las claves de KMS para AWS Glue
Al utilizar las claves de KMS para los recursos del Catálogo de datos, se pueden utilizar los Registros de AWS CloudTrail o de Amazon CloudWatch para rastrear las solicitudes que envía AWS Glue a AWS KMS. AWS CloudTrail monitorea y registra las operaciones de KMS a las cuales AWS Glue llama para acceder a los datos cifrados con las claves de KMS.
Los ejemplos que se muestran a continuación son eventos de AWS CloudTrail para las operaciones de Decrypt
y GenerateDataKey
.
- Decrypt
-
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXPHTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2024-01-10T14:33:56Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "glue.amazonaws.com"
},
"eventTime": "2024-01-10T15:18:11Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "eu-west-2",
"sourceIPAddress": "glue.amazonaws.com",
"userAgent": "glue.amazonaws.com",
"requestParameters": {
"encryptionContext": {
"glue_catalog_id": "111122223333"
},
"encryptionAlgorithm": "SYMMETRIC_DEFAULT"
},
"responseElements": null,
"requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df",
"eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:<region>
:111122223333
:key/<key-id>
"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management",
"sessionCredentialFromConsole": "true"
}
- GenerateDataKey
-
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXPHTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2024-01-05T21:15:47Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "glue.amazonaws.com"
},
"eventTime": "2024-01-05T21:15:47Z",
"eventSource": "kms.amazonaws.com",
"eventName": "GenerateDataKey",
"awsRegion": "eu-west-2",
"sourceIPAddress": "glue.amazonaws.com",
"userAgent": "glue.amazonaws.com",
"requestParameters": {
"keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE",
"encryptionContext": {
"glue_catalog_id": "111122223333"
},
"keySpec": "AES_256"
},
"responseElements": null,
"requestID": "64d1783a-4b62-44ba-b0ab-388b50188070",
"eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}