

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.

# Tutoriel : Configuration d'un KDC dédié au cluster avec Amazon EMR
<a name="emr-kerberos-cluster-kdc"></a>

Cette rubrique vous guide dans la création d'un cluster avec un centre de* diffusion d'une clé (KDC)* dédié au cluster, dans l'ajout manuel de comptes Linux à tous les nœuds du cluster, dans l'ajout de principaux Kerberos au KDC sur le nœud primaire et dans la vérification de l'installation d'un client Kerberos sur les ordinateurs clients.

Pour plus d'informations sur la prise en charge de Kerberos et de KDC par Amazon EMR, ainsi que des liens vers la documentation MIT Kerberos, consultez [Utilisation de Kerberos pour l'authentification avec Amazon EMR](emr-kerberos.md).

## Étape 1 : Créer le cluster activé pour Kerberos
<a name="emr-kerberos-clusterdedicated-cluster"></a>

1. Créez une configuration de sécurité qui active Kerberos. L'exemple suivant illustre une `create-security-configuration` commande utilisant le AWS CLI qui spécifie la configuration de sécurité sous la forme d'une structure JSON intégrée. 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}}}}}}'
   ```

1. 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`. Elle 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-7.13.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://{{amzn-s3-demo-bucket}}/createlinuxusers.sh
   ```

   Le code suivant illustre le contenu du script `createlinuxusers.sh` qui 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 répertoires d'utilisateurs HDFS et configurer SSH
<a name="emr-kerberos-clusterdedicated-KDC"></a>

Le KDC qui s'exécute sur le nœud primaire 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 primaire à 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://{{amzn-s3-demo-bucket}}/configurekdc.sh"]
```

Le code suivant illustre le contenu du 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
```

Les utilisateurs que vous avez ajoutés doivent maintenant être en mesure de se connecter au cluster à l'aide de SSH. Pour de plus amples informations, veuillez consulter [Utilisation de SSH pour se connecter à des clusters Kerberisés avec Amazon EMR](emr-kerberos-connect-ssh.md).