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
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
yhdfs 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.jsonnota
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
-
Lance su clúster con una versión de Amazon EMR posterior a la 4.1.0.
-
Conéctese al nodo maestro del clúster con SSH.
-
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.
-
Cree la ruta de la zona de cifrado en HDFS.
$ hadoop fs -mkdir /myHDFSPath2
-
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
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
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.jsonnota
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 enfalse
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.jsonnota
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ónhadoop-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.jsonnota
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
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ónhdfs-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.