Didacticiel : Configurer un KDC dédié à un cluster - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Didacticiel : Configurer un KDC dédié à un cluster

Cette rubrique vous guide tout au long de la création d'un cluster avec un cluster dédié au cluster.centre de distribution de clés (KDC), en ajoutant manuellement des comptes d'utilisateur Linux à tous les nœuds de cluster, en ajoutant des principaux Kerberos au KDC sur le nœud principal et en vérifiant qu'un client Kerberos est installé sur les ordinateurs client.

Pour plus d'informations sur la prise en charge d'Amazon EMR pour Kerberos et KDC, ainsi que sur des liens vers la documentation MIT Kerberos, voirUtilisation de l'authentification Kerberos.

Étape 1 : Création du cluster Kerberized

  1. Créez une configuration de sécurité qui active Kerberos. L'exemple suivant illustre une commande create-security-configuration à partir de l'AWS CLI qui spécifie la configuration de sécurité sous forme de structure JSON en ligne. Vous pouvez également référencer un fichier enregistré localement.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
  2. Créez un cluster qui fait référence à la configuration de sécurité, établit les attributs Kerberos du cluster et ajoute des comptes Linux à l'aide d'une action d'amorçage. L'exemple suivant illustre l'utilisation d'une commande create-cluster à partir de l'AWS CLI. La commande fait référence à la configuration de sécurité que vous avez créée ci-dessus, MyKerberosConfig. Il fait également référence à un script simple,createlinuxusers.sh, sous forme d'action d'amorçage, que vous créez et chargez dans Amazon S3 avant la création du cluster.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-5.35.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

    Le code suivant illustre le contenu de l'createlinuxusers.shqui ajoute user1, user2 et user3 à chaque nœud du cluster. Dans l'étape suivante, vous ajoutez ces utilisateurs en tant que principaux KDC.

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

Étape 2 : Ajouter des principaux au KDC, créer des annuaires d'utilisateurs HDFS et configurer SSH

Le KDC qui s'exécute sur le nœud principal requiert que vous ajoutiez un principal pour l'hôte local et pour chaque utilisateur que vous créez sur le cluster. Vous pouvez également créer des annuaires HDFS pour chaque utilisateur qui a besoin de se connecter au cluster et d'exécuter des travaux Hadoop. De même, configurez le service SSH pour activer l'authentification GSSAPI, qui est obligatoire pour Kerberos. Une fois que vous avez activé GSSAPI, redémarrez le service SSH.

La manière la plus simple d'effectuer ces tâches est d'envoyer une étape au cluster. L'exemple suivant envoie un script bash configurekdc.sh au cluster que vous avez créé dans l'étape précédente, en faisant référence à son ID de cluster. Le script est enregistré dans Amazon S3. Sinon, vous pouvez vous connecter au nœud principal à l'aide d'une paire de clés EC2 pour exécuter les commandes ou envoyer l'étape lors de la création du cluster.

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"]

Le code suivant illustre le contenu de l'configurekdc.shscript.

#!/bin/bash #Add a principal to the KDC for the master node, using the master 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 master 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

Les utilisateurs que vous avez ajoutés doivent maintenant être en mesure de se connecter au cluster à l'aide de SSH. Pour plus d'informations, consultez Utilisation de SSH pour se connecter à des clusters Kerberized.