Crea claves y certificados para el cifrado de datos con 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.

Crea claves y certificados para el cifrado de datos con Amazon EMR

Antes de especificar las opciones de cifrado mediante una configuración de seguridad, decida el proveedor que desea usar para las claves y los artefactos de cifrado. Por ejemplo, puede usar AWS KMS o un proveedor personalizado que cree. A continuación, cree las claves o el proveedor tal y como se describe en esta sección.

Proporcionar claves para cifrar los datos en reposo

Puedes usar AWS Key Management Service (AWS KMS) o un proveedor de claves personalizadas para el cifrado de datos en reposo en AmazonEMR. Cuando lo usas AWS KMS, se cobran cargos por el almacenamiento y el uso de las claves de cifrado. Para obtener más información, consulte Precios de AWS KMS.

En este tema se proporcionan detalles de la política clave de una KMS clave que se va a utilizar con AmazonEMR, así como directrices y ejemplos de código para escribir una clase de proveedor de claves personalizada para el cifrado de Amazon S3. Para más información sobre la creación de claves, consulte Creación de claves en la Guía para desarrolladores de AWS Key Management Service .

Utilización AWS KMS keys para el cifrado

La clave de AWS KMS cifrado debe crearse en la misma región que la instancia de EMR clúster de Amazon y los buckets de Amazon S3 que se utilizan con EMRFS ella. Si la clave que especificas está en una cuenta diferente de la que utilizas para configurar un clúster, debes especificar la clave con la suyaARN.

El rol del perfil de EC2 instancia de Amazon debe tener permisos para usar la KMS clave que especifiques. El rol predeterminado para el perfil de instancia en Amazon EMR esEMR_EC2_DefaultRole. Si usa un rol diferente para el perfil de la instancia o usa IAM roles para EMRFS las solicitudes a Amazon S3, asegúrese de añadir cada rol como usuario clave, según corresponda. Esto le da al rol permisos para usar la KMS clave. Para obtener más información, consulte Uso de políticas clave en la Guía para AWS Key Management Service desarrolladores y Configuración de IAM roles para EMRFS solicitudes a Amazon S3.

Puede utilizar el AWS Management Console para añadir su perfil de instancia o perfil de EC2 instancia a la lista de usuarios clave para la KMS clave especificada, o puede utilizar el AWS CLI o an AWS SDK para adjuntar una política de claves adecuada.

Ten en cuenta que Amazon solo EMR admite KMSclaves simétricas. No puedes usar una KMSclave asimétrica para cifrar los datos en reposo en un clúster de AmazonEMR. Para obtener ayuda para determinar si una KMS clave es simétrica o asimétrica, consulta Cómo identificar claves simétricas y asimétricas. KMS

El siguiente procedimiento describe cómo añadir el perfil de EMR instancia de Amazon predeterminado, EMR_EC2_DefaultRole como usuario clave, mediante AWS Management Console. Se supone que ya ha creado una KMS clave. Para crear una KMS clave nueva, consulte Creación de claves en la Guía para AWS Key Management Service desarrolladores.

Para añadir el perfil de EC2 instancia de Amazon EMR a la lista de usuarios de claves de cifrado
  1. Inicia sesión en la consola AWS Key Management Service (AWS KMS) AWS Management Console y ábrela en https://console.aws.amazon.com/kms.

  2. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

  3. Seleccione el alias de la KMS clave que desee modificar.

  4. En la página de detalles de la clave, en Key Users (Usuarios de claves), seleccione Add (Añadir).

  5. En el cuadro de diálogo Add key users (Añadir usuarios clave), seleccione el rol adecuado. El nombre del rol predeterminado es EMR_EC2_DefaultRole.

  6. Elija Añadir.

Habilitar el EBS cifrado proporcionando permisos adicionales para KMS las claves

A partir de la EMR versión 5.24.0 de Amazon, puede cifrar los dispositivos EBS raíz y los volúmenes de almacenamiento mediante una opción de configuración de seguridad. Para habilitar esta opción, debe especificarlo AWS KMS como su proveedor de claves. Además, debe conceder al rol EMR_DefaultRole de servicio permisos para usar el AWS KMS key que especifique.

Puede usar el AWS Management Console para agregar el rol de servicio a la lista de usuarios clave para la KMS clave especificada, o puede usar AWS CLI o an AWS SDK para adjuntar una política de clave adecuada.

El siguiente procedimiento describe cómo utilizar el AWS Management Console para añadir el rol de EMR servicio de Amazon predeterminado EMR_DefaultRole como usuario clave. Se supone que ya ha creado una KMS clave. Para crear una KMS clave nueva, consulte Creación de claves en la Guía para AWS Key Management Service desarrolladores.

Para añadir el rol de EMR servicio de Amazon a la lista de usuarios de claves de cifrado
  1. Inicie sesión en la consola AWS Key Management Service (AWS KMS) AWS Management Console y ábrala en https://console.aws.amazon.com/kms.

  2. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

  3. Elija Claves administradas por el cliente en la barra lateral izquierda.

  4. Seleccione el alias de la KMS clave que desee modificar.

  5. En la página de detalles de la clave, en Key Users (Usuarios de claves), seleccione Add (Añadir).

  6. En la sección Añadir usuarios clave, seleccione el rol adecuado. El nombre del rol de servicio predeterminado de Amazon EMR esEMR_DefaultRole.

  7. Elija Añadir.

Creación de un proveedor de claves personalizadas

Cuando se utiliza una configuración de seguridad, es necesario especificar un nombre de clase de proveedor distinto para el cifrado de disco local y el cifrado de Amazon S3. Los requisitos del proveedor de claves personalizadas dependen de si utiliza el cifrado de disco local y el cifrado de Amazon S3, así como de la versión de EMR lanzamiento de Amazon.

Según el tipo de cifrado que utilice al crear un proveedor de claves personalizado, la aplicación también debe implementar diferentes EncryptionMaterialsProvider interfaces. Ambas interfaces están disponibles en la versión 1.11.0 y posteriores AWS SDK para Java.

Puede utilizar cualquier estrategia para proporcionar materiales de cifrado para la implementación. Por ejemplo, puede optar por proporcionar materiales de cifrado estáticos o integrarlos con un sistema de administración de claves más complejo.

Si utiliza el cifrado de Amazon S3, debe utilizar los algoritmos de cifrado AES/GCM/NoPaddingpara los materiales de cifrado personalizados.

Si utiliza el cifrado de disco local, el algoritmo de cifrado que se debe utilizar para los materiales de cifrado personalizados varía según la EMR versión. Para Amazon EMR 7.0.0 y versiones anteriores, debes usar AES/GCM/NoPadding. Para Amazon EMR 7.1.0 y versiones posteriores, debes usar AES.

La EncryptionMaterialsProvider clase obtiene los materiales de cifrado según el contexto de cifrado. Amazon EMR rellena la información de contexto de cifrado en tiempo de ejecución para ayudar a la persona que llama a determinar los materiales de cifrado correctos que debe devolver.

ejemplo Ejemplo: uso de un proveedor de claves personalizadas para el cifrado de Amazon S3 con EMRFS

Cuando Amazon EMR busca los materiales de cifrado de la EncryptionMaterialsProvider clase para realizar el cifrado, EMRFS opcionalmente rellena el materialsDescription argumento con dos campos: el Amazon S3 URI para el objeto y el JobFlowId del clúster, que la EncryptionMaterialsProvider clase puede usar para devolver materiales de cifrado de forma selectiva.

Por ejemplo, el proveedor puede devolver claves diferentes para distintos URI prefijos de Amazon S3. Se trata de la descripción de los materiales de cifrado devueltos que finalmente se almacenan con el objeto Amazon S3, y no del materialsDescription valor que genera EMRFS y transfiere al proveedor. Al descifrar un objeto de Amazon S3, la descripción del material de cifrado se pasa a la EncryptionMaterialsProvider clase para que, una vez más, devuelva de forma selectiva la clave correspondiente para descifrar el objeto.

A continuación se EncryptionMaterialsProvider proporciona una implementación de referencia. Otro proveedor personalizado, EMRFSRSAEncryptionMaterialsProvider, está disponible en GitHub.

import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.EncryptionMaterialsProvider; import com.amazonaws.services.s3.model.KMSEncryptionMaterials; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; import java.util.Map; /** * Provides KMSEncryptionMaterials according to Configuration */ public class MyEncryptionMaterialsProviders implements EncryptionMaterialsProvider, Configurable{ private Configuration conf; private String kmsKeyId; private EncryptionMaterials encryptionMaterials; private void init() { this.kmsKeyId = conf.get("my.kms.key.id"); this.encryptionMaterials = new KMSEncryptionMaterials(kmsKeyId); } @Override public void setConf(Configuration conf) { this.conf = conf; init(); } @Override public Configuration getConf() { return this.conf; } @Override public void refresh() { } @Override public EncryptionMaterials getEncryptionMaterials(Map<String, String> materialsDescription) { return this.encryptionMaterials; } @Override public EncryptionMaterials getEncryptionMaterials() { return this.encryptionMaterials; } }

Proporcionar certificados para cifrar los datos en tránsito con el cifrado de Amazon EMR

Con la EMR versión 4.8.0 o posterior de Amazon, tiene dos opciones para especificar artefactos para cifrar los datos en tránsito mediante una configuración de seguridad:

  • Puede crear PEM certificados manualmente, incluirlos en un archivo.zip y, a continuación, hacer referencia al archivo.zip en Amazon S3.

  • Puede implementar un proveedor de certificados personalizado como una clase Java. Debe especificar el JAR archivo de la aplicación en Amazon S3 y, a continuación, proporcionar el nombre de clase completo del proveedor tal y como se indica en la aplicación. La clase debe implementar la TLSArtifactsProviderinterfaz disponible a partir de la AWS SDK for Java versión 1.11.0.

Amazon descarga EMR automáticamente los artefactos en cada nodo del clúster y, posteriormente, los utiliza para implementar las funciones de cifrado en tránsito de código abierto. Para obtener más información sobre las opciones disponibles, consulte Cifrado en tránsito.

Uso de certificados PEM

Al especificar un archivo.zip para el cifrado en tránsito, la configuración de seguridad espera que PEM los nombres de los archivos incluidos en el archivo.zip sean exactamente como aparecen a continuación:

Certificados de cifrado en tránsito
Nombre de archivo Obligatorio/opcional Detalles
privateKey.pem Obligatoria Clave privada
certificateChain.pem Obligatoria Cadena de certificados
trustedCertificates.pem Opcional Obligatorio si el certificado proporcionado no está firmado por la autoridad de certificación (CA) raíz de confianza predeterminada de Java o una CA intermedia que enlace a la CA de raíz de confianza predeterminada de Java. La raíz de confianza predeterminada de Java CAs se encuentra en. jre/lib/security/cacerts

Es probable que desees configurar el PEM archivo de clave privada para que sea un certificado comodín que permita el acceso al VPC dominio de Amazon en el que residen las instancias de tu clúster. Por ejemplo, si el clúster se encuentran en la región us-east-1 (Norte de Virginia), puede elegir especificar un nombre común en la configuración de certificado que permita el acceso al clúster especificando CN=*.ec2.internal en la definición del sujeto del certificado. Si el clúster reside en us-west-2 (Oregón), puede especificar CN=*.us-west-2.compute.internal.

Si el PEM archivo proporcionado en el artefacto de cifrado no tiene ningún carácter comodín en la CN del dominio, debes cambiar el valor de a. hadoop.ssl.hostname.verifier ALLOW_ALL Esto se hace con la clasificación core-site al enviar las configuraciones a un clúster o al agregar este valor en el archivo core-site.xml. Este cambio es necesario porque el verificador de nombres de host predeterminado no aceptará un nombre de host sin el comodín, lo que provocará un error. Para obtener más información sobre la configuración de EMR clústeres en AmazonVPC, consulteConfigurar redes en un VPC para Amazon EMR.

El siguiente ejemplo muestra cómo usar Open SSL para generar un certificado X.509 autofirmado con una clave privada de 1024 bitsRSA. La clave permite el acceso a las instancias del EMR clúster de Amazon del emisor en la región us-west-2 (Oregón), tal como se especifica en el nombre de *.us-west-2.compute.internal dominio como nombre común.

Se especifican otros elementos del sujeto opcionales como país (C), estado (S) y configuración regional (L). Dado que se genera un certificado autofirmado, el segundo comando del ejemplo copia el archivo certificateChain.pem en el archivo trustedCertificates.pem. El tercer comando utiliza zip para crear el archivo my-certs.zip que contiene los certificados.

importante

Este ejemplo es solo una proof-of-concept demostración. El uso de certificados autofirmados no se recomienda y presenta un posible riesgo para la seguridad. En el caso de los sistemas de producción, utilice una autoridad de certificación (CA) de confianza para emitir certificados.

$ openssl req -x509 -newkey rsa:1024 -keyout privateKey.pem -out certificateChain.pem -days 365 -nodes -subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.us-west-2.compute.internal' $ cp certificateChain.pem trustedCertificates.pem $ zip -r -X my-certs.zip certificateChain.pem privateKey.pem trustedCertificates.pem