Tutorial: Configurar un clúster dedicado KDC - 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: Configurar un clúster dedicado KDC

En este tema se explica cómo crear un clúster con un centro de distribución de claves dedicado al clúster (KDC), cómo añadir manualmente cuentas de Linux a todos los nodos del clúster, cómo añadir las principales de Kerberos al nodo principal y cómo garantizar que los ordenadores cliente tengan KDC instalado un cliente Kerberos.

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

Paso 1: creación del clúster que utiliza Kerberos

  1. Cree una configuración de seguridad que habilite Kerberos. El siguiente ejemplo muestra un create-security-configuration comando que utiliza el AWS CLI que especifica la configuración de seguridad como una estructura en JSON línea. También puede hacer referencia a un archivo guardado de forma local.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
  2. Cree un clúster que haga referencia a la configuración de seguridad, establezca los atributos de Kerberos para el clúster y añada las cuentas de Linux mediante una acción de arranque. El siguiente ejemplo muestra el uso de un comando create-cluster en la AWS CLI. El comando hace referencia a la configuración de seguridad que se ha creado anteriormente, MyKerberosConfig. También hace referencia a un script sencillo, createlinuxusers.sh, como acción de arranque, que debe crear y cargar en Amazon S3 antes de crear el clúster.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-7.2.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair \ --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 \ --bootstrap-actions Path=s3://DOC-EXAMPLE-BUCKET/createlinuxusers.sh

    El siguiente código ilustra el contenido del script createlinuxusers.sh, que agrega user1, user2 y user3 en cada nodo del clúster. En el siguiente paso, agregará estos usuarios como KDC principales.

    #!/bin/bash sudo adduser user1 sudo adduser user2 sudo adduser user3

Paso 2: Agregue los principalesKDC, cree los directorios HDFS de usuarios y configure SSH

La KDC ejecución en el nodo principal necesita que se añada un principal para el host local y para cada usuario que cree en el clúster. También puede crear HDFS directorios para cada usuario si necesita conectarse al clúster y ejecutar tareas de Hadoop. Del mismo modo, configure el SSH servicio para habilitar la GSSAPI autenticación, que es necesaria para Kerberos. Tras activarloGSSAPI, reinicie el SSH servicio.

La forma más sencilla de realizar estas tareas es enviar un paso para el clúster. El siguiente ejemplo envía un script bash configurekdc.sh al clúster que ha creado en el paso anterior, haciendo referencia a su ID de clúster. El script se almacena en Amazon S3. Como alternativa, puede conectarse al nodo principal mediante un EC2 key pair para ejecutar los comandos o enviar el paso durante la creación del clúster.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myregion.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://DOC-EXAMPLE-BUCKET/configurekdc.sh"]

El siguiente código muestra el contenido del script configurekdc.sh.

#!/bin/bash #Add a principal to the KDC for the primary node, using the primary node's returned host name sudo kadmin.local -q "ktadd -k /etc/krb5.keytab host/`hostname -f`" #Declare an associative array of user names and passwords to add declare -A arr arr=([user1]=pwd1 [user2]=pwd2 [user3]=pwd3) for i in ${!arr[@]}; do #Assign plain language variables for clarity name=${i} password=${arr[${i}]} # Create principal for sshuser in the primary node and require a new password on first logon sudo kadmin.local -q "addprinc -pw $password +needchange $name" #Add user hdfs directory hdfs dfs -mkdir /user/$name #Change owner of user's hdfs directory to user hdfs dfs -chown $name:$name /user/$name done # Enable GSSAPI authentication for SSH and restart SSH service sudo sed -i 's/^.*GSSAPIAuthentication.*$/GSSAPIAuthentication yes/' /etc/ssh/sshd_config sudo sed -i 's/^.*GSSAPICleanupCredentials.*$/GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config sudo systemctl restart sshd

Los usuarios que ha agregado ahora deberían poder conectarse al clúster medianteSSH. Para obtener más información, consulte Se utiliza SSH para conectarse a clústeres kerberizados.