Tutorial: Configuración de una relación de confianza entre ámbitos con un dominio de Active Directory - 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.

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 al clúster establece una relación de confianza con otro KDC mediante un principal multidominio que existe en ambos. KDCs El nombre y la contraseña de la entidad principal deben coincidir exactamente.

Una confianza entre dominios requiere que KDCs puedan comunicarse entre sí a través de la red y resolver los nombres de dominio de los demás. A continuación, se proporcionan los pasos para establecer una relación de confianza entre dominios con un controlador de dominio de Microsoft AD que se ejecuta como EC2 instancia, junto con un ejemplo de configuración de red que proporciona la conectividad y la resolución de nombres de dominio necesarias. Se acepta cualquier configuración de red que permita el tráfico de red necesario entre KDCs ellos.

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 fideicomisos entre dominios 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 CIDR para el clúster de EMR de modo que IPv4 todas las direcciones tengan menos de nueve caracteres (por ejemplo, 10.0.0.0/16). Esto se debe a que los nombres DNS de los equipos del clúster se utilizan cuando los equipos se unen al directorio de Active Directory. AWS asigna nombres de host DNS en función de la IPv4 dirección, de manera que las direcciones IP más largas pueden dar como resultado nombres 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 EC2 instancia para el controlador de dominio, debe tener una IPv4 dirección pública estática para que pueda conectarse a ella mediante RDP. La forma más sencilla de hacerlo es configurar la subred para que asigne automáticamente direcciones públicas IPv4 . Este no es el valor predeterminado cuando se crea una subred. Para obtener más información, consulte Modificación del atributo de IPv4 direccionamiento público de la subred. Si lo prefiere, puede asignar la dirección al lanzar la instancia. Para obtener más información, consulta Cómo asignar una IPv4 dirección pública durante el lanzamiento de una instancia.

  7. Cuando termine, anote la VPC y la subred. IDs 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 EC2 instancia basada en la AMI básica de Microsoft Windows Server 2016. Le recomendamos un tipo de instancia m4.xlarge o mejor. Para obtener más información, consulta Cómo lanzar una AWS Marketplace instancia en la Guía del EC2 usuario de Amazon.

  2. Anote el ID de grupo del grupo de seguridad asociado a la EC2 instancia. Lo necesitará para Paso 6: Lanzar un clúster de EMR que utiliza Kerberos. Usamossg-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, consulta los grupos EC2 de seguridad de Amazon para instancias de Linux en la Guía del EC2 usuario de Amazon.

  3. Conéctate a la EC2 instancia mediante RDP. Para obtener más información, consulta Cómo conectarse a tu instancia de Windows en la Guía del EC2 usuario de Amazon.

  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 el KDC-FQDN nombre de DNS público que aparece en la lista 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 el caso de los servidores de nombres de dominio, debe especificar la dirección IP del controlador de dominio de Active Directory (al que se debe poder acceder desde el clúster) como primera entrada, seguida del AmazonProvidedDNS (por ejemplo xx.xx.xx.xx, AmazonProvided DNS). 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. Usamos 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. Usamos 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. Usamos 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. Use el par de EC2 claves que especificó 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 Utilice un par de EC2 claves para las credenciales SSH de 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.