Tutorial: Configuración de una relación de confianza entre ámbitos con un dominio de Active Directory - Amazon EMR

Tutorial: Configuración de una relación de confianza entre ámbitos con un dominio de Active Directory

Al crear una relación de confianza entre ámbitos, se permite a las entidades principales (normalmente usuarios) de otro ámbito de Kerberos autenticar a los componentes de la aplicación en el clúster de EMR. El centro de distribución de claves (KDC) dedicado del clúster establece una relación de confianza con otro KDC utilizando una entidad principal de confianza entre ámbitos que existe en los dos KDC. El nombre y la contraseña de la entidad principal deben coincidir exactamente.

Una relación de confianza entre ámbitos requiere que los KDC puedan tener acceso entre sí a través de la red y resolver sus nombres de dominio. Pasos para establecer una relación de confianza con un ámbito Microsoft AD controlador de dominio se ejecutan como una instancia de EC2 se suministran a continuación, junto con un ejemplo de configuración de red que proporciona la conectividad y la resolución de nombres de dominio. Es aceptable cualquier configuración de red que permita el tráfico de red necesario entre KDC.

Opcionalmente, después de establecer una relación de confianza entre ámbitos con Active Directory utilizando un KDC en un clúster, puede crear otro clúster con una configuración de seguridad diferente para hacer referencia al KDC en el primer clúster como un KDC externo. Para ver un ejemplo de la configuración de seguridad y la configuración del clúster, consulte KDC externo del clúster con una relación de confianza entre ámbitos de Active Directory.

Para obtener más información sobre la compatibilidad de Amazon EMR con Kerberos y KDC, así como enlaces a la documentación de Kerberos del MIT, consulte Uso de Kerberos para la autenticación con Amazon EMR.

importante

Amazon EMR no admite las relaciones de confianza entre ámbitos con AWS Directory Service for Microsoft Active Directory.

Paso 1: Configuración de la VPC y la subred

Paso 2: lanzamiento e instalación del controlador de dominio de Active Directory

Paso 3: adición de cuentas al dominio para el clúster de EMR

Paso 4: configuración de una relación de confianza entrante en el controlador de dominio de Active Directory

Paso 5: uso de un conjunto de opciones de DHCP para especificar el controlador de dominio de Active Directory como un servidor DNS de la VPC

Paso 6: Lanzar un clúster de EMR que utiliza Kerberos

Paso 7: creación de usuarios de HDFS y configuración de permisos en el clúster para las cuentas de usuario de Active Directory

Paso 1: Configuración de la VPC y la subred

Los pasos siguientes muestran cómo crear una VPC y una subred para que el KDC dedicado del clúster pueda tener acceso al controlador de dominio de Active Directory y resolver su nombre de dominio. En estos pasos, la resolución de nombres de dominio se proporciona haciendo referencia al controlador de dominio de Active Directory como el servidor de nombres de dominio en el conjunto de opciones de DHCP. Para obtener más información, consulte Paso 5: uso de un conjunto de opciones de DHCP para especificar el controlador de dominio de Active Directory como un servidor DNS de la VPC.

El KDC y el controlador de dominio de Active Directory deben ser capaces de resolver sus respectivos nombres de dominio. Esto permite a Amazon EMR incorporar equipos al dominio y configurar automáticamente las cuentas de Linux y los parámetros de SSH correspondientes en las instancias de clúster.

Si Amazon EMR no puede resolver el nombre de dominio, se puede hacer referencia a la relación de confianza mediante la dirección IP del controlador de dominio de Active Directory. Sin embargo, debe agregar manualmente las cuentas de usuario de Linux, agregar las correspondientes entidades principales al KDC dedicado del clúster y configurar SSH.

Para configurar la VPC y la subred
  1. Cree una instancia de Amazon VPC con una única subred pública. Para obtener más información, consulte Paso 1: creación de la VPC en la Guía de introducción a Amazon VPC.

    importante

    Cuando utilice un controlador de dominio de Microsoft Active Directory, elija un bloque de CIDR para el clúster de EMR, de forma que todas las direcciones IPv4 tengan menos de nueve caracteres (por ejemplo, 10.0.0.0/16). Esto se debe a que los nombres de DNS de los equipos del clúster se utilizan cuando los equipos se incorporan al directorio de Active Directory. AWS asigna nombres de host de DNS en función de la dirección IPv4, de forma que las direcciones IP más largas pueden dar como resultado nombres de DNS de más de 15 caracteres. Active Directory tiene un límite de 15 caracteres para registrar los nombres de los equipos que se incorporan, y trunca los nombres que son más largos, lo que puede provocar errores impredecibles.

  2. Elimine el conjunto de opciones de DHCP predeterminado asignado a la VPC. Para obtener más información, consulte Cambiar una VPC para que no utilice ninguna opción de DHCP. Posteriormente, puede añadir uno nuevo que especifique el controlador de dominio de Active Directory como servidor DNS.

  3. Confirme que se ha activado el soporte de DNS para la VPC, es decir, que se han activado los nombres de host DNS y la resolución de DNS. De forma predeterminada, están habilitadas. Para obtener más información, consulte Actualización de la compatibilidad de DNS para su VPC.

  4. Confirme que la VPC tiene un asociada una gateway de Internet, que es la opción predeterminada. Para obtener más información, consulte Creación y asociación de una gateway de Internet.

    nota

    En este ejemplo, se utiliza una gateway de Internet porque se está estableciendo un nuevo controlador de dominio para la VPC. Puede que no sea necesaria una gateway de Internet para su aplicación. El único requisito es que el KDC dedicado del clúster pueda tener acceso al controlador de dominio de Active Directory.

  5. Cree una tabla de ruteo personalizada, añada una ruta que se dirija a la gateway de Internet y, a continuación, asóciela a la subred. Para obtener más información, consulte Creación de una tabla de enrutamiento personalizada.

  6. Al lanzar la instancia de EC2 para el dominio, debe disponer de un controlador estático de direcciones IPv4 públicas para que pueda conectarse a ella con RDP. La forma más sencilla de hacerlo es configurar la subred pública automáticamente asignar direcciones IPv4. Este no es el valor predeterminado cuando se crea una subred. Para obtener más información, consulte Modificación del atributo de direcciones IPv4 públicas de su subred. Si lo prefiere, puede asignar la dirección al lanzar la instancia. Para obtener más información, consulte Asignación de una dirección IPv4 pública durante el lanzamiento de la instancia.

  7. Cuando termine, tome nota de los ID de la VPC y de la subred. Los utilizará posteriormente al lanzar el controlador de dominio de Active Directory y el clúster.

Paso 2: lanzamiento e instalación del controlador de dominio de Active Directory

  1. Lance una instancia de EC2 basada en la AMI base de Microsoft Windows Server 2016. Le recomendamos un tipo de instancia m4.xlarge o mejor. Para obtener más información, consulte Lanzamiento de una instancia AWS Marketplace en la Guía del usuario de Amazon EC2.

  2. Anote el Group ID (ID de grupo) del grupo de seguridad asociado a la instancia EC2. Lo necesitará para Paso 6: Lanzar un clúster de EMR que utiliza Kerberos. Utilizamos sg-012xrlmdomain345. También puede especificar distintos grupos de seguridad para el clúster de EMR y esta instancia que permita el tráfico entre ellos. Para obtener más información, consulte Grupos de seguridad de Amazon EC2 para instancias de Linux en la Guía del usuario de Amazon EC2.

  3. Conéctese a la instancia de EC2 a través de RDP. Para obtener más información, consulte Conexión a su instancia de Windows en la Guía del usuario de Amazon EC2.

  4. Inicie Administrador del servidor para instalar y configurar el rol de los servicios de dominio de Active Directory en el servidor. Promocione el servidor a controlador de dominio y asígnele un nombre de dominio (el ejemplo que utilizamos aquí es ad.domain.com). Anote el nombre de dominio porque lo necesitará más adelante al crear el clúster y la configuración de seguridad de EMR. Si es la primera vez que configura Active Directory, puede seguir las instrucciones de How to Set Up Active Directory (AD) in Windows Server 2016.

    La instancia se reiniciará cuando termine.

Paso 3: adición de cuentas al dominio para el clúster de EMR

Establezca una conexión RDP con el controlador de dominio de Active Directory para crear cuentas de usuario en Usuarios y equipos de Active Directory para cada usuario del clúster. Para obtener más información, consulte Create a User Account in Active Directory Users and Computers en el sitio Microsoft Learn. Anote el User logon name (Nombre de inicio de sesión de usuario) de cada usuario. Necesitas estas versiones posteriores al configurar el clúster.

Cree también una cuenta con privilegios suficientes para incorporar ordenadores al dominio. Tiene que especificar esta cuenta al crear un clúster. Amazon EMR la utiliza para incorporar las instancias del clúster al dominio Solo debe especificar esta cuenta y su contraseña Paso 6: Lanzar un clúster de EMR que utiliza Kerberos. Para delegar los privilegios de incorporación de equipos a la cuenta, le recomendamos que cree un grupo con privilegios de incorporación y, a continuación, asigne el usuario al grupo. Para obtener instrucciones, consulte Delegación de privilegios de vinculación a directorios en la Guía de administración de AWS Directory Service.

Paso 4: configuración de una relación de confianza entrante en el controlador de dominio de Active Directory

Los comandos del ejemplo siguiente crean una relación de confianza en Active Directory, que es una confianza de ámbito, entrante, unidireccional y no transitiva con el KDC dedicado del clúster. El ejemplo que utilizamos para el ámbito del clúster es EC2.INTERNAL. Sustituya KDC-FQDN por el nombre de DNS público que aparece para el nodo principal de Amazon EMR que aloja el KDC. El parámetro passwordt especifica la cross-realm principal password (contraseña de la entidad principal de confianza entre ámbitos), que se especifica junto con el realm (ámbito) del clúster al crear un clúster. El nombre del ámbito se deriva del nombre de dominio predeterminado en us-east-1 para el clúster. El Domain es el dominio de Active Directory en el que va a crear la confianza, que es en minúsculas por convención. El ejemplo utiliza ad.domain.com

Abra el símbolo del sistema de Windows con privilegios de administrador y escriba los siguientes comandos para crear la relación de confianza en el controlador de dominio de Active Directory:

C:\Users\Administrator> ksetup /addkdc EC2.INTERNAL KDC-FQDN C:\Users\Administrator> netdom trust EC2.INTERNAL /Domain:ad.domain.com /add /realm /passwordt:MyVeryStrongPassword C:\Users\Administrator> ksetup /SetEncTypeAttr EC2.INTERNAL AES256-CTS-HMAC-SHA1-96

Paso 5: uso de un conjunto de opciones de DHCP para especificar el controlador de dominio de Active Directory como un servidor DNS de la VPC

Ahora que está configurado el controlador de dominio de Active Directory, debe configurar la VPC para utilizarla como servidor de nombres de dominio para la resolución de nombres en la VPC. Para ello, asocie un conjunto de opciones de DHCP. En Nombre de dominio, especifique el nombre de dominio del clúster; por ejemplo, ec2.internal si el clúster se encuentra en la región us-east-1 o region.compute.internal para las demás regiones. En Domain name servers (Servidores de nombres de dominio), debe especificar la dirección IP del controlador de dominio de Active Directory (al que se debe tener acceso desde el clúster) como la primera entrada, seguida de AmazonProvidedDNS (por ejemplo, xx.xx.xx.xx,AmazonProvidedDNS). Para obtener más información, consulte Cambio de los conjuntos de opciones de DHCP.

Paso 6: Lanzar un clúster de EMR que utiliza Kerberos

  1. En Amazon EMR, cree una configuración de seguridad que especifique el controlador de dominio de Active Directory que ha creado en los pasos anteriores. A continuación se muestra un ejemplo. Sustituya el dominio, ad.domain.compor el nombre del dominio especificado en el Paso 2: lanzamiento e instalación del controlador de dominio de Active Directory.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }'
  2. Cree el clúster con los siguientes atributos:

    • Utilice la opción --security-configuration para especificar la configuración de seguridad que ha creado. Utilizamos MyKerberosConfig en el ejemplo.

    • Utilice la propiedad SubnetId de --ec2-attributes option para especificar la subred que ha creado en Paso 1: Configuración de la VPC y la subred. Utilizamos step1-subnet en el ejemplo.

    • Utilice AdditionalMasterSecurityGroups y AdditionalSlaveSecurityGroups de la opción --ec2-attributes para especificar que el grupo de seguridad asociado al controlador de dominio de AD desde Paso 2: lanzamiento e instalación del controlador de dominio de Active Directory está asociado al nodo principal del clúster, así como a los nodos secundarios y de tareas. Utilizamos sg-012xrlmdomain345 en el ejemplo.

    Utilice --kerberos-attributes para especificar los siguientes atributos de Kerberos específicos del clúster:

    El siguiente ejemplo lanza un clúster que utiliza Kerberos.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-5.10.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair,\ SubnetId=step1-subnet, AdditionalMasterSecurityGroups=sg-012xrlmdomain345, AdditionalSlaveSecurityGroups=sg-012xrlmdomain345\ --service-role EMR_DefaultRole \ --security-configuration MyKerberosConfig \ --applications Name=Hadoop Name=Hive Name=Oozie Name=Hue Name=HCatalog Name=Spark \ --kerberos-attributes Realm=EC2.INTERNAL,\ KdcAdminPassword=MyClusterKDCAdminPwd,\ ADDomainJoinUser=ADUserLogonName,ADDomainJoinPassword=ADUserPassword,\ CrossRealmTrustPrincipalPassword=MatchADTrustPwd

Paso 7: creación de usuarios de HDFS y configuración de permisos en el clúster para las cuentas de usuario de Active Directory

Cuando se configura una relación de confianza con Active Directory, Amazon EMR crea usuarios de Linux en el clúster para cada cuenta de usuario de Active Directory. Por ejemplo, el nombre de inicio de sesión de usuario LiJuan en Active Directory se corresponde con la cuenta de Linux de lijuan. Los nombres de usuario de Active Directory pueden contener letras mayúsculas, pero Linux no distingue entre mayúsculas y minúsculas para dichos nombres.

Para permitir a los usuarios iniciar sesión en el clúster para ejecutar los trabajos de Hadoop, debe agregar directorios de usuario de HDFS para sus cuentas de Linux y conceder a cada usuario la propiedad de su directorio. Para ello, le recomendamos que ejecute un script almacenado en Amazon S3 como un paso de clúster. De forma alternativa, puede ejecutar los comandos en el script siguiente desde la línea de comandos en el nodo principal. Utilice el par de claves de EC2 especificado al crear el clúster para conectarse al nodo principal a través de SSH como usuario de Hadoop. Para obtener más información, consulte Use un par de claves de EC2 para credenciales de SSH para Amazon EMR.

Ejecute el siguiente comando para añadir un paso al clúster que ejecuta un script, AddHDFSUsers.sh.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/AddHDFSUsers.sh"]

El contenido del archivo AddHDFSUsers.sh es el siguiente.

#!/bin/bash # AddHDFSUsers.sh script # Initialize an array of user names from AD or Linux users and KDC principals created manually on the cluster ADUSERS=("lijuan" "marymajor" "richardroe" "myusername") # For each user listed, create an HDFS user directory # and change ownership to the user for username in ${ADUSERS[@]}; do hdfs dfs -mkdir /user/$username hdfs dfs -chown $username:$username /user/$username done

Grupos de Active Directory asignados a grupos de Hadoop

Amazon EMR utiliza System Security Services Daemon (SSD) para asignar grupos de Active Directory a grupos de Hadoop. Para confirmar las asignaciones de grupos, después de iniciar sesión en el nodo principal tal y como se describe en Uso de SSH para conectarse a clústeres que utilizan Kerberos con Amazon EMR, puede utilizar el comando hdfs groups para confirmar que los grupos de Active Directory a los que pertenece su cuenta de Active Directory se han asignado a los grupos de Hadoop del usuario de Hadoop correspondiente en el clúster. También puede comprobar los mapeos de grupos de otros usuarios especificando uno o varios nombres de usuario con el comando, por ejemplo hdfs groups lijuan. Para obtener más información, consulte groups en la Apache HDFS Commands Guide.