Cifrado transparente en el HDFS en Amazon EMR - Amazon EMR

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.

Cifrado transparente en el HDFS en Amazon EMR

El cifrado transparente se implementa mediante el uso de zonas de cifrado de HDFS, que son rutas de HDFS definidas por usted. Cada zona de cifrado tiene su propia clave, que se almacena en el servidor de claves especificado mediante la clasificación de configuración hdfs-site.

A partir de la versión 4.8.0 de Amazon EMR, puede utilizar configuraciones de seguridad de Amazon EMR para definir configuraciones de cifrado de datos para los clústeres de manera más sencilla. Las configuraciones de seguridad ofrecen ajustes para habilitar la seguridad de los datos en tránsito y de los datos en reposo en volúmenes de almacenamiento de Amazon Elastic Block Store (Amazon EBS) y datos de EMRFS en Amazon S3. Para obtener más información, consulte Cifrado de datos en tránsito y en reposo en la Guía de administración de Amazon EMR.

Amazon EMR usa el KMS de Hadoop de forma predeterminada; sin embargo, puede usar otro KMS que implemente la operación de la API. KeyProvider Cada archivo de una zona de cifrado HDFS tiene su propia clave de cifrado de datos exclusiva, que se cifra mediante la clave de zona de cifrado. Los datos de HDFS se cifran end-to-end (en reposo y en tránsito) cuando se escriben en una zona de cifrado, ya que las actividades de cifrado y descifrado solo se llevan a cabo en el cliente.

No puede mover archivos entre zonas de cifrado o desde una zona de cifrado a las rutas no cifradas.

El cliente HDFS NameNode y el cliente HDFS interactúan con el KMS de Hadoop (o un KMS alternativo que haya configurado) a través de la operación de la API. KeyProvider El KMS es responsable de almacenar las claves de cifrado en el almacén de claves de copia de seguridad. Además, Amazon EMR incluye la política de seguridad ilimitada de JCE, por lo que puede crear claves con la longitud deseada.

Para obtener más información, consulte Cifrado transparente en el HDFS en la documentación de Hadoop.

nota

En Amazon EMR, KMS sobre HTTPS no está habilitado de forma predeterminada con Hadoop KMS. Para obtener más información sobre cómo habilitar KMS sobre HTTPS, consulte la documentación de Hadoop KMS.

Configuración del cifrado transparente de HDFS

Puede configurar el cifrado transparente en Amazon EMR mediante la creación de claves y la adición de zonas de cifrado. Puede hacer esto de varias formas:

  • Uso de la operación del API de configuración de Amazon EMR al crear un clúster

  • Mediante un paso de JAR de Hadoop con command-runner.jar

  • Registrando en el nodo principal del clúster de Hadoop y utilizando los clientes de línea de comando hadoop key y hdfs crypto

  • Utilizando las API de REST para Hadoop KMS y HDFS

Para obtener más información acerca de los API de REST, consulte la documentación correspondiente para Hadoop KMS y HDFS.

Para crear zonas de cifrado y sus claves en la creación del clúster mediante la interfaz de línea de comandos (CLI)

La clasificación hdfs-encryption-zones en la operación de la API de configuración le permite especificar un nombre de clave y una zona de cifrado al crear un clúster. Amazon EMR crea esta clave en Hadoop KMS en su clúster y configura la zona de cifrado.

  • Cree un clúster con el siguiente comando.

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    myConfig.json:

    [ { "Classification": "hdfs-encryption-zones", "Properties": { "/myHDFSPath1": "path1_key", "/myHDFSPath2": "path2_key" } } ]
Para crear zonas de cifrado y sus claves manualmente en el nodo principal
  1. Lance su clúster con una versión de Amazon EMR posterior a la 4.1.0.

  2. Conéctese al nodo maestro del clúster con SSH.

  3. Cree una clave en Hadoop KMS.

    $ hadoop key create path2_key path2_key has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=256, description='null', attributes=null}. KMSClientProvider[http://ip-x-x-x-x.ec2.internal:16000/kms/v1/] has been updated.
    importante

    Hadoop KMS requiere que sus nombres de clave estén en minúsculas. Si utiliza una clave que tiene mayúsculas entonces el clúster provocará un error durante el lanzamiento.

  4. Cree la ruta de la zona de cifrado en HDFS.

    $ hadoop fs -mkdir /myHDFSPath2
  5. Haga de la ruta de HDFS una zona de cifrado con la clave que ha creado.

    $ hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2 Added encryption zone /myHDFSPath2
Para crear zonas de cifrado y sus claves manualmente mediante AWS CLI
  • Añada pasos para crear manualmente las zonas de cifrado y las claves de KMS con el siguiente comando.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Create First Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path1_key\""] \ Type=CUSTOM_JAR,Name="Create First Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create First Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path1_key -path /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path2_key\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath2\""] \ Type=CUSTOM_JAR,Name="Create Second Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2\""]
    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

Consideraciones para cifrado transparente de HDFS

Una práctica recomendada consiste en crear una zona de cifrado para cada aplicación en la que pueda escribir archivos. Además, puede cifrar todos los HDFS mediante la hdfs-encryption-zones clasificación de la API de configuración y especificar la ruta raíz (/) como zona de cifrado.

Hadoop Key Management Server

Hadoop KMS es un servidor de administración de claves que ofrece la posibilidad de implementar servicios criptográficos para clústeres de Hadoop y puede funcionar como proveedor de claves para Cifrado transparente en el HDFS en Amazon EMR. Hadoop KMS en Amazon EMR se instala y habilita de forma predeterminada al seleccionar la aplicación de Hadoop al lanzar un clúster de EMR. El Hadoop KMS no almacena las claves en sí, salvo en el caso de almacenamiento temporal en caché. Hadoop KMS actúa como un proxy entre el proveedor de claves y el elemento de confianza cliente para un almacén de claves de respaldo: no es un almacén de claves. El almacén de claves predeterminado que se crea para Hadoop KMS es la extensión de criptografía de Java (JCEKS). KeyStore La política de seguridad ilimitada de JCE también se incluye, por lo que puede crear claves con la longitud deseada. Hadoop KMS también es compatible con una gran variedad de ACL que controlan el acceso a las claves y a las operaciones de claves independientemente de otras aplicaciones cliente como, por ejemplo, HDFS. La longitud de clave predeterminada en Amazon EMR es de 256 bits.

Para configurar Hadoop KMS, utilice la clasificación para cambiar la configuración. hadoop-kms-site Para configurar los ACL, utilice la clasificación kms-acls.

Para obtener más información, consulte la documentación de Hadoop KMS. Hadoop KMS se utiliza en el cifrado transparente de Hadoop HDFS. Para obtener más información sobre el cifrado transparente de HDFS, consulte el tema Cifrado transparente de HDFS en la documentación de Apache Hadoop.

nota

En Amazon EMR, KMS sobre HTTPS no está habilitado de forma predeterminada con Hadoop KMS. Para obtener información sobre cómo habilitar KMS sobre HTTPS, consulte la documentación de Hadoop KMS.

importante

Hadoop KMS requiere que sus nombres de clave estén en minúsculas. Si utiliza una clave que tiene mayúsculas entonces el clúster provocará un error durante el lanzamiento.

Configuración de Hadoop KMS en Amazon EMR

En la versión de lanzamiento de Amazon EMR 4.6.0 o posterior, kms-http-port es 9700 y kms-admin-port es 9701.

Puede configurar Hadoop KMS en el momento de la creación del clúster mediante la API de configuración para versiones de Amazon EMR. A continuación se enumeran las clasificaciones de objetos de configuración disponibles para Hadoop KMS:

Clasificaciones de configuración de Hadoop KMS
Clasificación Filename
hadoop-kms-site kms-site.xml
hadoop-kms-acls kms-acls.xml
hadoop-kms-env kms-env.sh
hadoop-kms-log4j kms-log4j.properties
Para configurar los ACL de Hadoop KMS a través de la interfaz de línea de comandos (CLI)
  • Cree un clúster con Hadoop KMS con ACL utilizando el siguiente comando:

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-acls", "Properties": { "hadoop.kms.blacklist.CREATE": "hdfs,foo,myBannedUser", "hadoop.kms.acl.ROLLOVER": "myAllowedUser" } } ]
Para deshabilitar la caché de Hadoop KMS a través de la interfaz de línea de comandos (CLI)
  • Cree un clúster con Hadoop KMS hadoop.kms.cache.enable definido en false utilizando el siguiente comando:

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.cache.enable": "false" } } ]
Para configurar las variables de entorno en el script kms-env.sh mediante la interfaz de línea de comandos (CLI)
  • Cambie la configuración a kms-env.sh través de la configuración hadoop-kms-env. Cree un clúster con Hadoop KMS utilizando el siguiente comando:

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-env", "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_LIBRARY_PATH": "/path/to/files", "KMS_SSL_KEYSTORE_FILE": "/non/Default/Path/.keystore", "KMS_SSL_KEYSTORE_PASS": "myPass" }, "Configurations": [ ] } ] } ]

Para obtener información acerca de la configuración de Hadoop KMS, consulte la documentación de Hadoop KMS.

Cifrado transparente de HDFS en clústeres de EMR con varios nodos maestros

Apache Ranger KMS se utiliza en un clúster de Amazon EMR con varios nodos principales para el cifrado transparente en el HDFS.

Apache Ranger KMS almacena su clave raíz y las claves de la zona de cifrado (EZ) en su Amazon RDS para un clúster de Amazon EMR con varios nodos principales. Para habilitar el cifrado transparente en el HDFS en un clúster de Amazon EMR con varios nodos principales, debe proporcionar las siguientes configuraciones.

  • Amazon RDS o su propia URL de conexión de servidor MySQL para almacenar la clave principal de Ranger KMS y la clave de EZ

  • Nombre de usuario y contraseña de MySQL

  • Contraseña de la clave principal de Ranger KMS

  • Archivo PEM de la entidad de certificación (CA) para la conexión SSL al servidor MySQL

Puede proporcionar estas configuraciones mediante las clasificaciones ranger-kms-dbks-site y ranger-kms-db-ca, tal y como se muestra en el siguiente ejemplo.

[ { "Classification": "ranger-kms-dbks-site", "Properties": { "ranger.ks.jpa.jdbc.url": "jdbc:log4jdbc:mysql://mysql-host-url.xx-xxx-1.xxx.amazonaws.com:3306/rangerkms", "ranger.ks.jpa.jdbc.user": "mysql-user-name", "ranger.ks.jpa.jdbc.password": "mysql-password", "ranger.db.encrypt.key.password": "password-for-encrypting-a-master-key" } }, { "Classification": "ranger-kms-db-ca", "Properties": { "ranger.kms.trust.ca.file.s3.url": "s3://rds-downloads/rds-ca-2019-root.pem" } } ]

A continuación se muestran las clasificaciones de objetos de configuración para Apache Ranger KMS.

Clasificaciones de configuración de Hadoop KMS
Clasificación Descripción
ranger-kms-dbks-site Cambie los valores del archivo dbks-site.xml de Ranger KMS.
ranger-kms-site Cambie los valores en el ranger-kms-site archivo.xml del Ranger KMS.
ranger-kms-env Cambie los valores del entorno Ranger KMS.
ranger-kms-log4j Cambie los valores del archivo kms-log4j.properties de Ranger KMS.
ranger-kms-db-ca Cambie los valores del archivo CA en S3 para la conexión SSL de MySQL con Ranger KMS.

Consideraciones

  • Se recomienda encarecidamente cifrar la instancia de Amazon RDS para mejorar la seguridad. Para obtener más información, consulte Información general del cifrado de los recursos de Amazon RDS.

  • Se recomienda encarecidamente utilizar una base de datos MySQL independiente en cada clúster de Amazon EMR con nodos principales para aumentar la seguridad.

  • Para configurar el cifrado transparente en el HDFS en un clúster de Amazon EMR con varios nodos principales, debe especificar la clasificación hdfs-encryption-zones al crear el clúster. De lo contrario, Ranger KMS no se configurará ni iniciará. La reconfiguración de la clasificación hdfs-encryption-zones o cualquiera de las clasificaciones de configuración de Hadoop KMS en un clúster en ejecución no se admite en clúster de Amazon EMR con varios nodos principales.