Carga de datos cifrados en Amazon S3 - Amazon Redshift

Carga de datos cifrados en Amazon S3

Amazon S3 admite tanto el cifrado del lado del servidor como el cifrado del lado del cliente. En este tema, se analizan las diferencias entre el cifrado del lado del cliente y el cifrado del lado del servidor, y se describen los pasos para usar un cifrado del lado del cliente con Amazon Redshift. El cifrado del lado del servidor es transparente para Amazon Redshift.

Cifrado en el servidor

El cifrado del lado del servidor es el cifrado de datos en reposo; es decir, Amazon S3 cifra los datos a medida que los carga y los descifra para usted cuando obtiene acceso a estos. Cuando se cargan tablas con un comando COPY, no existe diferencia alguna en la forma de carga desde objetos con cifrado del lado del servidor o sin cifrado en Amazon S3. Para obtener más información acerca del cifrado del lado del servidor, consulte Uso del cifrado del lado del servidor en la Guía del usuario de Amazon Simple Storage Service.

Cifrado del cliente

En el cifrado en el cliente, su aplicación cliente administra el cifrado de los datos, las claves de cifrado y las herramientas relacionadas. Puede cargar los datos a un bucket de Amazon S3 con el cifrado del lado del cliente y, luego, cargar los datos con el comando COPY con la opción ENCRYPTED y una clave de cifrado privada para proporcionar mayor seguridad.

Usted cifra los datos con cifrado de sobre. Con el cifrado de sobre, la aplicación controla todo el cifrado de manera exclusiva. Las claves de cifrado privadas y los datos sin cifrar nunca se envían a AWS, por lo que es muy importante que administre con seguridad las claves de cifrado. Si pierde las claves de cifrado, no podrá descifrar los datos, y estas no se podrán recuperar desde AWS. El cifrado de sobre combina el rendimiento de un cifrado simétrico rápido al mismo tiempo que mantiene la mayor seguridad que brinda la administración de claves con claves asimétricas. El cliente de cifrado de Amazon S3 genera una clave simétrica de un solo uso (la clave simétrica de sobre) para cifrar los datos. Luego, esa clave se cifra mediante la clave raíz y se almacena junto con los datos en Amazon S3. Cuando Amazon Redshift obtiene acceso a los datos durante la carga, la clave simétrica cifrada se recupera y se descifra con la clave real y, luego, se descifran los datos.

Para trabajar en Amazon Redshift con datos cifrados del lado del cliente de Amazon S3, siga los pasos que se indican en el artículo Protección de datos con el cifrado del lado del cliente en la Guía del usuario de Amazon Simple Storage Service, con el requisito adicional de que utilice lo siguiente:

  • Cifrado simétrico: el AWS SDK para Java en su clase AmazonS3EncryptionClient usa el cifrado de sobre, descrito antes, que se basa en el cifrado con claves simétricas. Use esta clase para crear un cliente de Amazon S3 en el que cargar datos cifrados del lado del cliente.

  • Una clave raíz simétrica con cifrado AES de 256 bits: una clave raíz cifra la clave de sobre. La clave raíz se pasa a la instancia de la clase AmazonS3EncryptionClient. Guarde esa clave, ya que la necesitará para copiar los datos en Amazon Redshift.

  • Metadatos de los objetos que van a almacenar la clave de sobre cifrada: de forma predeterminada, Amazon S3 almacena la clave de sobre como metadatos de los objetos de la clase AmazonS3EncryptionClient. La clave de sobre cifrada que se almacena como metadatos de los objetos se usa durante el proceso de descifrado.

nota

Si obtiene un mensaje de error de cifrado cuando usa la Application Programming Interface (API, Interfaz de programación de aplicaciones) de cifrado por primera vez, su versión del Java Development Kit (JDK, Kit de desarrollo de Java) puede tener un archivo de política de jurisdicción de Java Cryptography Extension (JCE, Extensión de criptografía Java) que limite la longitud máxima de la clave para las transformaciones de cifrado y descifrado a 128 bits. Para obtener información acerca de cómo solucionar este problema, consulte Especificación del cifrado del lado del cliente con AWS SDK para Java en la Guía del usuario de Amazon Simple Storage Service.

Para obtener información acerca de la carga de archivos cifrados del lado del cliente en las tablas de Amazon Redshift con el comando COPY, consulte Carga de archivos de datos cifrados desde Amazon S3.

Ejemplo: Carga de datos cifrados en el cliente

Si desea obtener un ejemplo sobre cómo se utiliza AWS SDK para Java para cargar datos cifrados del lado del cliente, consulte Protección de datos mediante el cifrado del lado del cliente en la Guía del usuario de Amazon Simple Storage Service.

En la segunda opción, se muestran las decisiones que debe tomar durante el cifrado del lado del cliente para que los datos puedan cargarse en Amazon Redshift. Específicamente, en el ejemplo se muestra el uso de metadatos de los objetos para almacenar la clave de sobre cifrada y el uso de una clave raíz simétrica con cifrado AES de 256 bits.

En este ejemplo, se proporciona un código de ejemplo que utiliza AWS SDK para Java para crear una clave raíz simétrica con cifrado AES de 256 bits y guardarla en un archivo. Luego, se incluye un ejemplo de carga de un objeto en Amazon S3 con un cliente de cifrado de S3 que primero cifra los datos de muestra en el cliente. En el ejemplo, también se descarga el objeto y se comprueba que los datos sean los mismos.