Cree una configuración de seguridad con la consola de Amazon EMR o con la AWS CLI - Amazon EMR

Cree una configuración de seguridad con la consola de Amazon EMR o con la AWS CLI

En este tema, se abordan los procedimientos generales para crear una configuración de seguridad con la ayuda de la consola de Amazon EMR y la AWS CLI, así como una referencia para los parámetros de cifrado, autenticación y roles de IAM para EMRFS. Para obtener más información sobre estas características, consulte los siguientes temas:

Creación de una configuración de seguridad utilizando la consola
  1. Abra la consola de Amazon EMR enhttps://console.aws.amazon.com/emr.

  2. En el panel de navegación, elija Security Configurations (Configuraciones de seguridad), Create security configuration (Crear configuración de seguridad).

  3. Escriba un nombre para la configuración de seguridad en el campo Name (Nombre).

  4. Elija opciones de Cifrado y Autenticación, tal y como se describe en las secciones siguientes y, a continuación, elija Crear.

Creación de una configuración de seguridad utilizando la AWS CLI
  • Utilice el comando create-security-configuration, tal y como se muestra en el ejemplo siguiente.

    • En SecConfigName, especifique el nombre de la configuración de seguridad. Este es el nombre que especifica cuando crea un clúster que usa esta configuración de seguridad.

    • En SecConfigDef, especifique una estructura JSON en línea o la ruta a un archivo JSON local, como por ejemplo, file://MySecConfig.json. Los parámetros de JSON definen opciones de Cifrado, Roles de IAM para el acceso de EMRFS a Amazon S3 y Autenticación, tal como se describe en las secciones siguientes.

    aws emr create-security-configuration --name "SecConfigName" --security-configuration SecConfigDef

Configuración del cifrado de datos

Antes de configurar el cifrado en una configuración de seguridad, cree las claves y los certificados que se utilizan para el cifrado. Para obtener más información, consulte Proporcionar claves para cifrado de datos en reposo y Proporcionar certificados para el cifrado de datos en tránsito con el cifrado de Amazon EMR.

Al crear una configuración de seguridad, debe especificar dos conjuntos de opciones de cifrado: cifrado de datos en reposo y cifrado de datos en tránsito. Las opciones para el cifrado de datos en reposo incluyen tanto Amazon S3 con EMRFS y el cifrado de disco local. Las opciones de cifrado en tránsito habilitan las características de cifrado de código abierto para determinadas aplicaciones que admiten Transport Layer Security (TLS). Las opciones en reposo y en tránsito se pueden habilitar juntas o por separado. Para obtener más información, consulte Cifrar datos en reposo y en tránsito con Amazon EMR.

nota

Cuando utilice AWS KMS, se aplican cargos por el almacenamiento y el uso de las claves de cifrado. Para más información, consulte Precios de AWS KMS.

Especificación de las opciones de cifrado con la consola

Elija opciones en Encryption (Cifrado) de acuerdo con las siguientes directrices.

  • Elija las opciones en At rest encryption (Cifrado en reposo) para cifrar los datos almacenados en el sistema de archivos.

    Puede elegir cifrar datos en Amazon S3, discos locales o ambas opciones.

  • En Cifrado de datos de S3, para Modo de cifrado, seleccione un valor para determinar cómo Amazon EMR cifra los datos de Amazon S3 con EMRFS.

    Lo que haga a continuación depende del modo de cifrado que haya elegido:

  • En Local disk encryption (Cifrado de disco local), seleccione un valor para Key provider type (Tipo de proveedor de clave).

    • AWS KMS key

      Seleccione esta opción para especificar una AWS KMS key. En AWS KMS key, seleccione una clave. La clave debe existir en la misma región que su clúster de EMR. Para obtener más información sobre los requisitos de claves, consulte Uso de AWS KMS keys para el cifrado.

      Cifrado de EBS

      Cuando especifique AWS KMS como su proveedor de claves, puede habilitar el cifrado de EBS para cifrar los volúmenes de almacenamiento y de dispositivo raíz de EBS. Para habilitar esta opción, debe conceder el rol de servicio de Amazon EMR EMR_DefaultRole con permisos para utilizar la AWS KMS key que especifique. Para obtener más información sobre los requisitos de claves, consulte Habilitación del cifrado de EBS proporcionando permisos adicionales para las claves de KMS.

    • Personalizada

      Seleccione esta opción para especificar un proveedor de claves personalizadas. En Objeto de S3, especifique la ubicación en Amazon S3 o el ARN de Amazon S3 del archivo JAR del proveedor de claves personalizadas. En Key provider class (Clase de proveedor de claves), escriba el nombre de clase completo de una clase declarada en la aplicación que implementa la interfaz EncryptionMaterialsProvider. El nombre de clase que proporcione aquí debe ser distinto al nombre de clase proporcionado para CSE-Custom.

  • Seleccione In-transit encryption (Cifrado en tránsito.) para habilitar las características de cifrado TLS de código abierto para los datos en tránsito. Elija un Certificate provider type (Tipo de proveedor de certificados) de acuerdo con las directrices siguientes:

    • PEM

      Seleccione esta opción para utilizar los archivos PEM que proporcione dentro de un archivo zip. Se requieren dos artefactos dentro del archivo zip: privateKey.pem y certificateChain.pem. Un tercer archivo, trustedCertificates.pem, es opcional. Para obtener más información, consulte Proporcionar certificados para el cifrado de datos en tránsito con el cifrado de Amazon EMR. En Objeto de S3, especifique la ubicación en Amazon S3 o el ARN de Amazon S3 del campo del archivo ZIP.

    • Personalizada

      Seleccione esta opción para especificar un proveedor de certificados personalizado y, a continuación, en Objeto de S3, especifique la ubicación en Amazon S3 o el ARN de Amazon S3 del archivo JAR del proveedor de certificados personalizado. En Key provider class (Clase de proveedor de claves), escriba el nombre de clase completo de una clase declarada en la aplicación que implemente la interfaz TLSArtifactsProvider.

Especificación de las opciones de cifrado con AWS CLI

Las secciones que aparecen a continuación utilizan escenarios de ejemplo para ilustrar una estructura JSON --security-configuration con el formato correcto para diferentes configuraciones y proveedores de claves, así como una referencia para los parámetros JSON y sus valores adecuados.

Opciones de cifrado de datos en tránsito de ejemplo

El ejemplo siguiente ilustra el supuesto siguiente:

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": false, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": false, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" } } } }'

Opciones de cifrado de datos en reposo de ejemplo

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está deshabilitado y el cifrado de datos en reposo está habilitado.

  • SSE-S3 se utiliza para el cifrado de Amazon S3.

  • El cifrado de disco local utiliza AWS KMS como proveedor de claves.

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": false, "EnableAtRestEncryption": true, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-S3" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está habilitado y hace referencia a un archivo ZIP con certificados PEM en Amazon S3 utilizando el ARN.

  • SSE-KMS se utiliza para el cifrado de Amazon S3.

  • El cifrado de disco local utiliza AWS KMS como proveedor de claves.

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "arn:aws:s3:::MyConfigStore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-KMS", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está habilitado y hace referencia a un archivo ZIP con certificados PEM en Amazon S3.

  • CSE-KMS se utiliza para el cifrado de Amazon S3.

  • El cifrado en disco local utiliza un proveedor de claves personalizadas al que hace referencia su ARN.

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "CSE-KMS", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "Custom", "S3Object": "arn:aws:s3:::artifacts/MyKeyProvider.jar", "EncryptionKeyProviderClass": "com.mycompany.MyKeyProvider" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está habilitado con un proveedor de claves personalizadas.

  • CSE-Custom se utiliza para los datos de Amazon S3.

  • El cifrado de disco local utiliza un proveedor de claves personalizadas.

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": "true", "EnableAtRestEncryption": "true", "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" } }, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "CSE-Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "EncryptionKeyProviderClass": "com.mycompany.MyKeyProvider" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "EncryptionKeyProviderClass": "com.mycompany.MyKeyProvider" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está deshabilitado y el cifrado de datos en reposo está habilitado.

  • El cifrado de Amazon S3 está habilitado con SSE-KMS.

  • Se utilizan varias claves de AWS KMS, una por cada bucket de S3, y se aplican excepciones de cifrado a estos buckets de S3 individuales.

  • El cifrado de disco local se ha deshabilitado.

aws emr create-security-configuration --name "MySecConfig" --security-configuration '{ "EncryptionConfiguration": { "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-KMS", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012", "Overrides": [ { "BucketName": "amzn-s3-demo-bucket1", "EncryptionMode": "SSE-S3" }, { "BucketName": "amzn-s3-demo-bucket2", "EncryptionMode": "CSE-KMS", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, { "BucketName": "amzn-s3-demo-bucket3", "EncryptionMode": "SSE-KMS", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } ] } }, "EnableInTransitEncryption": false, "EnableAtRestEncryption": true } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está deshabilitado y el cifrado de datos en reposo está habilitado.

  • El cifrado de Amazon S3 se habilita con SSE-S3 y el cifrado de disco local se deshabilita.

aws emr create-security-configuration --name "MyS3EncryptionConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": false, "EnableAtRestEncryption": true, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-S3" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está deshabilitado y el cifrado de datos en reposo está habilitado.

  • El cifrado de disco local se habilita con AWS KMS como el proveedor de claves y el cifrado de Amazon S3 se deshabilita.

aws emr create-security-configuration --name "MyLocalDiskEncryptionConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": false, "EnableAtRestEncryption": true, "AtRestEncryptionConfiguration": { "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

  • El cifrado de datos en tránsito está deshabilitado y el cifrado de datos en reposo está habilitado.

  • El cifrado de disco local se habilita con AWS KMS como el proveedor de claves y el cifrado de Amazon S3 se deshabilita.

  • El cifrado de la EBS está habilitado.

aws emr create-security-configuration --name "MyLocalDiskEncryptionConfig" --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption": false, "EnableAtRestEncryption": true, "AtRestEncryptionConfiguration": { "LocalDiskEncryptionConfiguration": { "EnableEbsEncryption": true, "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

El ejemplo siguiente ilustra el supuesto siguiente:

SSE-EMR-WAL se utiliza para el cifrado EMR WAL

aws emr create-security-configuration --name "MySecConfig" \ --security-configuration '{ "EncryptionConfiguration": { "EMRWALEncryptionConfiguration":{ }, "EnableInTransitEncryption":false, "EnableAtRestEncryption":false } }'

EnableInTransitEncryption y EnableAtRestEncryption aún podrían ser verdaderos, si desea habilitar el cifrado relacionado.

El ejemplo siguiente ilustra el supuesto siguiente:

  • SSE-KMS-WAL se utiliza para cifrado EMR WAL

  • El cifrado del lado del servidor utiliza AWS Key Management Service como el proveedor de claves

aws emr create-security-configuration --name "MySecConfig" \ --security-configuration '{ "EncryptionConfiguration": { "EMRWALEncryptionConfiguration":{ "AwsKmsKey":"arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" }, "EnableInTransitEncryption":false, "EnableAtRestEncryption":false } }'

EnableInTransitEncryption y EnableAtRestEncryption aún podrían ser verdaderos, si desea habilitar el cifrado relacionado.

Referencia de JSON para la configuración de cifrado

En la siguiente tabla se muestran los parámetros JSON de configuración de cifrado y se ofrece una descripción de valores aceptados para cada parámetro.

Parámetro Descripción
"EnableInTransitEncryption": true | false Specify true to enable in-transit encryption and false to disable it. If omitted, false is assumed, and in-transit encryption is disabled.
"EnableAtRestEncryption": true | false Specify true to enable at-rest encryption and false to disable it. If omitted, false is assumed and at-rest encryption is disabled.
Parámetros de cifrado en tránsito
"InTransitEncryptionConfiguration": Specifies a collection of values used to configure in-transit encryption when EnableInTransitEncryption is true.
"CertificateProviderType": "PEM" | "Custom" Specifies whether to use PEM certificates referenced with a zipped file, or a Personalizada certificate provider. If PEM is specified, S3Object must be a reference to the location in Amazon S3 of a zip file containing the certificates. If Custom is specified, S3Object must be a reference to the location in Amazon S3 of a JAR file, followed by a CertificateProviderClass entry.
"S3Object": "ZipLocation" | "JarLocation" Provides the location in Amazon S3 to a zip file when PEM is specified, or to a JAR file when Personalizada is specified. The format can be a path (for example, s3://MyConfig/artifacts/CertFiles.zip) or an ARN (for example, arn:aws:s3:::Code/MyCertProvider.jar). If a zip file is specified, it must contain files named exactly privateKey.pem and certificateChain.pem. A file named trustedCertificates.pem is optional.
"CertificateProviderClass": "MyClassID" Required only if Personalizada is specified for CertificateProviderType. MyClassID specifies a full class name declared in the JAR file, which implements the TLSArtifactsProvider interface. For example, com.mycompany.MyCertProvider.
Parámetros de cifrado en reposo
"AtRestEncryptionConfiguration": Specifies a collection of values for at-rest encryption when EnableAtRestEncryption is true, including Amazon S3 encryption and local disk encryption.
Parámetros de cifrado de Amazon S3
"S3EncryptionConfiguration": Specifies a collection of values used for Amazon S3 encryption with the Amazon EMR File System (EMRFS).
"EncryptionMode": "SSE-S3" | "SSE-KMS" | "CSE-KMS" | "CSE-Custom" Specifies the type of Amazon S3 encryption to use. If SSE-S3 is specified, no further Amazon S3 encryption values are required. If either SSE-KMS or CSE-KMS is specified, an AWS KMS key ARN must be specified as the AwsKmsKey value. If CSE-Custom is specified, S3Object and EncryptionKeyProviderClass values must be specified.
"AwsKmsKey": "MyKeyARN" Required only when either SSE-KMS or CSE-KMS is specified for EncryptionMode. MyKeyARN must be a fully specified ARN to a key (for example, arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012).
"S3Object": "JarLocation" Required only when CSE-Custom is specified for CertificateProviderType. JarLocation provides the location in Amazon S3 to a JAR file. The format can be a path (for example, s3://MyConfig/artifacts/MyKeyProvider.jar) or an ARN (for example, arn:aws:s3:::Code/MyKeyProvider.jar).
"EncryptionKeyProviderClass": "MyS3KeyClassID" Required only when CSE-Custom is specified for EncryptionMode. MyS3KeyClassID specifies a full class name of a class declared in the application that implements the EncryptionMaterialsProvider interface; for example, com.mycompany.MyS3KeyProvider.
Parámetros de cifrado de disco local
"LocalDiskEncryptionConfiguration" Specifies the key provider and corresponding values to be used for local disk encryption.
"EnableEbsEncryption": true | false Specify true to enable EBS encryption. EBS encryption encrypts the EBS root device volume and attached storage volumes. To use EBS encryption, you must specify AwsKms as your EncryptionKeyProviderType.
"EncryptionKeyProviderType": "AwsKms" | "Custom" Specifies the key provider. If AwsKms is specified, an KMS key ARN must be specified as the AwsKmsKey value. If Personalizada is specified, S3Object and EncryptionKeyProviderClass values must be specified.
"AwsKmsKey: "MyKeyARN" Required only when AwsKms is specified for Tipo. MyKeyARN must be a fully specified ARN to a key (for example, arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-456789012123).
"S3Object": "JarLocation" Required only when CSE-Custom is specified for CertificateProviderType. JarLocation provides the location in Amazon S3 to a JAR file. The format can be a path (for example, s3://MyConfig/artifacts/MyKeyProvider.jar) or an ARN (for example, arn:aws:s3:::Code/MyKeyProvider.jar).

"EncryptionKeyProviderClass" : "MyLocalDiskKeyClassID"

Required only when Personalizada is specified for Tipo. MyLocalDiskKeyClassID specifies a full class name of a class declared in the application that implements the EncryptionMaterialsProvider interface; for example, com.mycompany.MyLocalDiskKeyProvider.
Parámetros de cifrado EMR WAL
"EMRWALEncryptionConfiguration" Specifies the value for EMR WAL encryption.
“AwsKmsKey” Specifies the CMK Key Id Arn.

Configuración de la autenticación de Kerberos

Una configuración de seguridad con la configuración de Kerberos solo se puede utilizar en un clúster que se crea con los atributos de Kerberos o si se produce un error. Para obtener más información, consulte Uso de Kerberos para la autenticación con Amazon EMR. Kerberos solo está disponible en la versión 5.10.0 y posteriores de Amazon EMR.

Especificación de la configuración de Kerberos con la consola

Elija opciones en Kerberos authentication (Autenticación Kerberos) de acuerdo con las siguientes directrices.

Parámetro Descripción

Kerberos

Especifica que Kerberos está habilitado para los clústeres que utilizan esta configuración de seguridad. Si un clúster usa esta configuración de seguridad, también debe tener la configuración de Kerberos especificada o se producirá un error.

Proveedor

KDC dedicado del clúster

Especifica que Amazon EMR crea un KDC en el nodo principal de cualquier clúster que utilice esta configuración de seguridad. Al crear el clúster, debe especificar el nombre del dominio y la contraseña de administrador del KDC.

Si es necesario, puede hacer referencia a este KDC desde otros clústeres. Cree esos clústeres con una configuración de seguridad diferente, especifique un KDC externo y utilice el nombre de dominio y la contraseña de administrador del KDC que especifique para el KDC dedicado al clúster.

KDC externo

Solo está disponible en la versión de Amazon EMR 5.20.0 y posteriores. Especifica que los clústeres que utilizan esta configuración de seguridad autentican las entidades principales de Kerberos mediante un servidor de KDC externo al clúster. No se crea un KDC en el clúster. Al crear el clúster, debe especificar el nombre de dominio y la contraseña de administrador del KDC para el KDC externo.

Ciclo de vida del ticket

Opcional. Especifica el período durante el que un ticket de Kerberos emitido por el KDC es válido en los clústeres que utilizan esta configuración de seguridad.

El ciclo de vida de los tickets es limitado por motivos de seguridad. Las aplicaciones de clúster y los servicios renuevan automáticamente los tickets después de que expiren. Los usuarios que se conecten al clúster mediante SSH utilizando las credenciales de Kerberos tienen que ejecutar el comando kinit desde la línea de comandos del nodo principal para la renovación tras la expiración de un ticket.

Relación de confianza entre ámbitos

Especifica una relación de confianza entre ámbitos entre un KDC dedicado a un clúster en los clústeres que utilizan esta configuración de seguridad y un KDC situado en un ámbito de Kerberos diferente.

Las entidades principales (normalmente los usuarios) de otro ámbito se autentican en los clústeres que utilizan esta configuración. Se requiere una configuración adicional en el otro ámbito de Kerberos. Para obtener más información, consulte Tutorial: Configuración de una relación de confianza entre ámbitos con un dominio de Active Directory.

Propiedades de la relación de confianza entre ámbitos

Ámbito

Especifica el nombre de ámbito de Kerberos del otro ámbito en la relación de confianza. Por convención, los nombres de ámbito de Kerberos son los mismos que los nombres de dominio, pero en mayúsculas.

Dominio

Especifica el nombre de dominio del otro ámbito en la relación de confianza.

Servidor de administración

Especifica el nombre de dominio completo (FQDN) o dirección IP del servidor de administración del otro ámbito de la relación de confianza. El servidor de administración y el servidor de KDC suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos para comunicarse.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 749. También se puede especificar el puerto (por ejemplo, domain.example.com:749).

Servidor de KDC

Especifica el nombre de dominio completo (FQDN) o dirección IP del servidor de KDC del otro ámbito de la relación de confianza. El servidor de KDC y el servidor de administración suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 88. También se puede especificar el puerto (por ejemplo, domain.example.com:88).

KDC externo

Especifica que el clúster utiliza el KDC externo del clúster.

Propiedades de KDC externo

Servidor de administración

Especifica el nombre de dominio completo (FQDN) o la dirección IP del servidor de administración externo. El servidor de administración y el servidor de KDC suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos para comunicarse.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 749. También se puede especificar el puerto (por ejemplo, domain.example.com:749).

Servidor de KDC

Especifica el nombre de dominio completo (FQDN) del servidor de KDC externo. El servidor de KDC y el servidor de administración suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 88. También se puede especificar el puerto (por ejemplo, domain.example.com:88).

Integración de Active Directory

Especifica que la autenticación de la entidad principal de Kerberos está integrada en un dominio de Microsoft Active Directory.

Propiedades de la integración de Active Directory

Ámbito de Active Directory

Especifica el nombre de ámbito de Kerberos del dominio de Active Directory. Por convención, los nombres de ámbito de Kerberos suelen ser los mismos que los nombres de dominio, pero en mayúsculas.

Dominio de Active Directory

Especifica el nombre de dominio de Active Directory.

Servidor de Active Directory

Especifica el nombre de dominio completo (FQDN) del controlador de dominio de Microsoft Active Directory.

Especificación de la configuración de Kerberos con AWS CLI

En la siguiente tabla de referencia, se muestran los parámetros JSON para la configuración de Kerberos en una configuración de seguridad. Para ver configuraciones de ejemplo, consulte Ejemplos de configuraciones.

Parámetro Descripción

"AuthenticationConfiguration": {

Obligatorio para Kerberos. Especifica que una configuración de autenticación forma parte de esta configuración de seguridad.

"KerberosConfiguration": {

Obligatorio para Kerberos. Especifica las propiedades de configuración de Kerberos.

"Provider": "ClusterDedicatedKdc",

o

"Provider: "ExternalKdc",

ClusterDedicatedKdc especifica que Amazon EMR crea un KDC en el nodo principal de cualquier clúster que utilice esta configuración de seguridad. Al crear el clúster, debe especificar el nombre del dominio y la contraseña de administrador del KDC. Si es necesario, puede hacer referencia a este KDC desde otros clústeres. Cree esos clústeres con una configuración de seguridad diferente, especifique un KDC externo y utilice el nombre de ámbito y la contraseña de administrador del KDC que especificó al crear el clúster con el KDC dedicado a un clúster.

ExternalKdc especifica que el clúster usa un KDC externo. Amazon EMR no crea un KDC en el nodo principal. Un clúster que utilice esta configuración de seguridad debe especificar el nombre de ámbito y la contraseña de administrador del KDC del KDC externo.

"ClusterDedicatedKdcConfiguration": {

Es obligatorio cuando se especifica ClusterDedicatedKdc.

"TicketLifetimeInHours": 24,

Opcional. Especifica el período durante el que un ticket de Kerberos emitido por el KDC es válido en los clústeres que utilizan esta configuración de seguridad.

El ciclo de vida de los tickets es limitado por motivos de seguridad. Las aplicaciones de clúster y los servicios renuevan automáticamente los tickets después de que expiren. Los usuarios que se conecten al clúster mediante SSH utilizando las credenciales de Kerberos tienen que ejecutar el comando kinit desde la línea de comandos del nodo principal para la renovación tras la expiración de un ticket.

"CrossRealmTrustConfiguration": {

Especifica una relación de confianza entre ámbitos entre un KDC dedicado a un clúster en los clústeres que utilizan esta configuración de seguridad y un KDC situado en un ámbito de Kerberos diferente.

Las entidades principales (normalmente los usuarios) de otro ámbito se autentican en los clústeres que utilizan esta configuración. Se requiere una configuración adicional en el otro ámbito de Kerberos. Para obtener más información, consulte Tutorial: Configuración de una relación de confianza entre ámbitos con un dominio de Active Directory.

"Realm": "KDC2.COM",

Especifica el nombre de ámbito de Kerberos del otro ámbito en la relación de confianza. Por convención, los nombres de ámbito de Kerberos son los mismos que los nombres de dominio, pero en mayúsculas.

"Domain": "kdc2.com",

Especifica el nombre de dominio del otro ámbito en la relación de confianza.

"AdminServer": "kdc.com:749",

Especifica el nombre de dominio completo (FQDN) o dirección IP del servidor de administración del otro ámbito de la relación de confianza. El servidor de administración y el servidor de KDC suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos para comunicarse.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 749. También se puede especificar el puerto (por ejemplo, domain.example.com:749).

"KdcServer": "kdc.com:88"

Especifica el nombre de dominio completo (FQDN) o dirección IP del servidor de KDC del otro ámbito de la relación de confianza. El servidor de KDC y el servidor de administración suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 88. También se puede especificar el puerto (por ejemplo, domain.example.com:88).

}

}

"ExternalKdcConfiguration": {

Es obligatorio cuando se especifica ExternalKdc.

"TicketLifetimeInHours": 24,

Opcional. Especifica el período durante el que un ticket de Kerberos emitido por el KDC es válido en los clústeres que utilizan esta configuración de seguridad.

El ciclo de vida de los tickets es limitado por motivos de seguridad. Las aplicaciones de clúster y los servicios renuevan automáticamente los tickets después de que expiren. Los usuarios que se conecten al clúster mediante SSH utilizando las credenciales de Kerberos tienen que ejecutar el comando kinit desde la línea de comandos del nodo principal para la renovación tras la expiración de un ticket.

"KdcServerType": "Single",

Especifica que se hace referencia a un único servidor de KDC. Single es el único valor admitido en este momento.

"AdminServer": "kdc.com:749",

Especifica el nombre de dominio completo (FQDN) o la dirección IP del servidor de administración externo. El servidor de administración y el servidor de KDC suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos para comunicarse.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 749. También se puede especificar el puerto (por ejemplo, domain.example.com:749).

"KdcServer": "kdc.com:88",

Especifica el nombre de dominio completo (FQDN) del servidor de KDC externo. El servidor de KDC y el servidor de administración suelen ejecutarse en el mismo equipo con el mismo FQDN, pero utilizan puertos distintos.

Si no se especifica ningún puerto, se usa el puerto predeterminado de Kerberos: el 88. También se puede especificar el puerto (por ejemplo, domain.example.com:88).

"AdIntegrationConfiguration": {

Especifica que la autenticación de la entidad principal de Kerberos está integrada en un dominio de Microsoft Active Directory.

"AdRealm": "AD.DOMAIN.COM",

Especifica el nombre de ámbito de Kerberos del dominio de Active Directory. Por convención, los nombres de ámbito de Kerberos suelen ser los mismos que los nombres de dominio, pero en mayúsculas.

"AdDomain": "ad.domain.com"

Especifica el nombre de dominio de Active Directory.

"AdServer": "ad.domain.com"

Especifica el nombre de dominio completo (FQDN) del controlador de dominio de Microsoft Active Directory.

}

}

}

}

Configuración de roles de IAM para solicitudes de EMRFS a Amazon S3

Los roles de IAM para EMRFS le permiten proporcionar diferentes permisos a los datos de EMRFS en Amazon S3. Puede crear asignaciones que especifiquen un rol de IAM que se use para obtener permisos cuando una solicitud de acceso contenga un identificador que haya especificado. El identificador puede ser un usuario o un rol de Hadoop o un prefijo de Amazon S3.

Para obtener más información, consulte Configuración de roles de IAM para solicitudes de EMRFS a Amazon S3.

Especificación de roles de IAM para EMRFS mediante AWS CLI

A continuación, se muestra un ejemplo de fragmento de JSON para especificar roles de IAM personalizados para EMRFS dentro de una configuración de seguridad. Muestra las asignaciones de roles para los tres tipos de identificadores diferentes, seguidas de una referencia de parámetros.

{ "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_demo_s3_buckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://amzn-s3-demo-bucket1/","s3://amzn-s3-demo-bucket2/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
Parámetro Descripción

"AuthorizationConfiguration":

Obligatorio.

"EmrFsConfiguration":

Obligatorio. Contiene asignaciones de roles.

  "RoleMappings":

Obligatorio. Contiene una o más definiciones de asignación de roles. Las asignaciones de roles se evalúan de forma descendente por orden de aparición. Si una asignación de roles se evalúa como true en una invocación de datos de EMRFS en Amazon S3, no se evalúan más asignaciones de roles y EMRFS utiliza el rol de IAM especificado para la solicitud. Las asignaciones de roles tienen los siguientes parámetros obligatorios:

   "Role":

Especifica el identificador de ARN de un rol de IAM en el formato arn:aws:iam::account-id:role/role-name. Este es el rol de IAM que asume Amazon EMR si la solicitud de EMRFS a Amazon S3 coincide con alguno de los Identifiers especificados.

   "IdentifierType":

Puede ser uno de los siguientes:

  • "User" especifica que los identificadores son uno o más usuarios de Hadoop, que pueden ser usuarios de cuentas de Linux o entidades principales de Kerberos. Cuando la solicitud de EMRFS se origina en el usuario o los usuarios especificados, se asume el rol de IAM.

  • "Prefix" especifica que el identificador es una ubicación de Amazon S3. El rol de IAM se asume para las llamadas a la ubicación o ubicaciones con los prefijos especificados. Por ejemplo, el prefijo s3://amzn-s3-demo-bucket/ coincide con s3://amzn-s3-demo-bucket/mydir y s3://amzn-s3-demo-bucket/yetanotherdir.

  • "Group" especifica que los identificadores son uno o más grupos de Hadoop. El rol de IAM se asume si la solicitud proviene de un usuario del grupo o grupos especificados.

   "Identifiers":

Especifica uno o más identificadores del tipo de identificador adecuado. Separe varios identificadores con comas sin espacios.

Configuración de las solicitudes de servicios de metadatos a las instancias de Amazon EC2

Los metadatos de instancia son datos sobre una instancia que se pueden utilizar para configurar o administrar la instancia en ejecución. Para acceder a los metadatos de instancia desde una instancia en ejecución puede utilizar uno de los métodos siguientes:

  • Servicio de metadatos de instancia, versión 1 (IMDSv1): un método de solicitud y respuesta

  • Servicio de metadatos de instancia, versión 2 (IMDSv2): un método orientado a la sesión

Si bien Amazon EC2 admite IMDSv1 e IMDSv2, Amazon EMR admite IMDSv2 en Amazon EMR 5.23.1, 5.27.1, 5.32 o versiones posteriores y 6.2 o versiones posteriores. En estas versiones, los componentes de Amazon EMR utilizan IMDSv2 para todas las llamadas al IMDS. Para las llamadas al IMDS en el código de la aplicación, puede utilizar IMDSv1 e IMDSv2, o configurar el IMDS para que utilice solo IMDSv2 para mayor seguridad. Si especifica que debe usarse IMDSv2, IMDSv1 dejará de funcionar.

Para obtener más información, consulte Configuración del servicio de metadatos de instancia en la Guía del usuario de Amazon EC2.

nota

En versiones anteriores de Amazon EMR 5.x o 6.x, la desactivación de IMDSv1 provocaba un error en el arranque del clúster, ya que los componentes de Amazon EMR utilizaban IMDSv1 para todas las llamadas al IMDS. Al desactivar IMDSv1, asegúrese de que cualquier software personalizado que utilice IMDSv1 esté actualizado para usar IMDSv2.

Especificación de la configuración del servicio de metadatos de la instancia mediante AWS CLI

A continuación, se muestra un ejemplo de un fragmento de JSON para especificar el servicio de metadatos de instancias (IMDS) de Amazon EC2 dentro de una configuración de seguridad. El uso de una configuración de seguridad personalizada es opcional.

{ "InstanceMetadataServiceConfiguration" : { "MinimumInstanceMetadataServiceVersion": integer, "HttpPutResponseHopLimit": integer } }
Parámetro Descripción

"InstanceMetadataServiceConfiguration":

Si no especifica el IMDS en una configuración de seguridad y utiliza una versión de Amazon EMR que requiera IMDSv1, Amazon EMR utilizará IMDSv1 de forma predeterminada como la versión de servicio de metadatos de instancia mínima. Si desea utilizar su propia configuración, se requieren los dos parámetros siguientes.

"MinimumInstanceMetadataServiceVersion":

Obligatorio. Indique 1 o 2. Un valor de 1 permite el uso de IMDSv1 e IMDSv2. Un valor de 2 solo permite el uso de IMDSv2.

"HttpPutResponseHopLimit":

Obligatorio. Límite de saltos de respuesta HTTP PUT deseado para las solicitudes de metadatos de instancia. Cuanto mayor sea el número, más solicitudes de metadatos de instancia pueden viajar. Predeterminado: 1. Puede especificar un número entero del 1 al 64.

Especificación la configuración del servicio de metadatos de la instancia con la consola

Puede configurar el uso del IMDS para un clúster al lanzarlo desde la consola de Amazon EMR.

Para configurar el uso del IMDS mediante la consola:
  1. Al crear una nueva configuración de seguridad en la página Configuraciones de seguridad, seleccione Configurar el servicio de metadatos de instancias de EC2 en la configuración del servicio de metadatos de instancias de EC2. Esta configuración solo se admite en Amazon EMR 5.23.1, 5.27.1, 5.32 o versiones posteriores y 6.2 o versiones posteriores.

  2. Para ver la opción Versión mínima del servicio de metadatos de instancias, seleccione una de las siguientes opciones:

    • Desactivar IMDSv1 y permitir solo IMDSv2 si quiere permitir únicamente el uso de IMDSv2 en este clúster. Consulte Transición al uso del servicio de metadatos de instancias, versión 2 en la Guía del usuario de Amazon EC2.

    • Permitir tanto IMDSv1 como IMDSv2 en el clúster si quiere permitir el uso de IMDSv1 e IMDSv2 orientado a la sesión en este clúster.

  3. En IMDSv2, también puede configurar el número permitido de saltos de red para el token de metadatos configurando un número entero entre 1 y 64 en Límite de saltos de respuesta de HTTP PUT.

Para obtener más información, consulte Configuración del servicio de metadatos de instancia en la Guía del usuario de Amazon EC2.

Consulte Configuración de los detalles de la instancia y Configuración del servicio de metadatos de instancia en la Guía del usuario de Amazon EC2.