Si sus flujos de trabajo utilizan actualmente CSE-KMS para el cifrado de datos de tablas, realice la transición a SSE-KMS siguiendo estos pasos.
Requisito previo
Si sigue escribiendo datos con un grupo de trabajo de CSE-KMS o con una configuración del lado del cliente, siga los pasos que se indican en Migración de CSE-KMS a SSE-KMS para actualizarlos a SSE-KMS. Esto evita que se agreguen nuevos datos cifrados con CSE-KMS durante el proceso de migración desde cualquier otro flujo de trabajo que pueda escribir en las tablas.
Migración de datos
-
Compruebe si la tabla tiene la propiedad
has_encrypted_data
establecida entrue
. Esta propiedad especifica que la tabla puede contener datos cifrados con CSE-KMS. Sin embargo, es importante tener en cuenta que esta propiedad podría estar presente incluso en tablas sin ningún dato real cifrado con CSE-KMS.-
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
Elija Iniciar editor de consultas.
-
En el lado izquierdo del editor, en Base de datos, elija la base de datos que desea consultar.
-
En el editor de consultas, ejecute la siguiente consulta para ver el valor establecido en la propiedad
has_encrypted_data table
.SHOW TBLPROPERTIES
<table_name>
('has_encrypted_data');
-
Para cada objeto cifrado con CSE-KMS en la tabla.
-
Descargue el objeto de S3 mediante el cliente de cifrado S3 y descífrelo. Este es un ejemplo con el AWS SDK V2 de Java.
Importaciones
import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.encryption.s3.S3EncryptionClient; import software.amazon.encryption.s3.materials.Keyring; import software.amazon.encryption.s3.materials.KmsDiscoveryKeyring;
Código
final Keyring kmsDiscoveryKeyRing = KmsDiscoveryKeyring.builder() .enableLegacyWrappingAlgorithms(true) .build(); final S3EncryptionClient s3EncryptionClient = S3EncryptionClient.builder() .enableLegacyUnauthenticatedModes(true) .keyring(kmsDiscoveryKeyRing) .build(); GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket("
amzn-s3-demo-bucket
") .key("<my-key>
") .build(); ResponseInputStream<GetObjectResponse> s3Object = s3EncryptionClient.getObject(getObjectRequest); -
Cargue el objeto en S3 con el mismo nombre y el cifrado SSE-KMS. A continuación, se muestra un ejemplo con el AWS SDK V2 de Java.
Importaciones
import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.ServerSideEncryption;
Código
final S3Client s3Client = S3Client.builder() .build(); PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket("
amzn-s3-demo-bucket
") .key("<my-key>
") .serverSideEncryption(ServerSideEncryption.AWS_KMS) .ssekmsKeyId("<my-kms-key>
") .build(); s3Client.putObject(putObjectRequest, RequestBody.fromBytes(s3Object.readAllBytes()));
-
Después de la migración
Tras volver a cifrar correctamente todos los archivos CSE-KMS de la tabla, lleve a cabo los siguientes pasos.
-
Quite la propiedad
has_encrypted_data
de la tabla.-
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
Elija Iniciar editor de consultas.
-
En el lado izquierdo del editor, en Base de datos, elija la base de datos que desea consultar.
-
En el editor de consultas, ejecute la siguiente consulta para su tabla.
ALTER TABLE
<database-name>
.<table-name>
UNSET TBLPROPERTIES ('has_encrypted_data')
-
Actualice sus flujos de trabajo para utilizar un cliente S3 básico en lugar de un cliente de cifrado S3 y, a continuación, especifique el cifrado SSE-KMS para la escritura de datos.