

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial: configura un KDC dedicato al cluster con Amazon EMR
<a name="emr-kerberos-cluster-kdc"></a>

Questo argomento illustra come creare un cluster con un *key distribution center (KDC)* dedicato, aggiungendo manualmente account Linux a tutti i nodi cluster, aggiungendo entità principali Kerberos al KDC sul nodo primario e verificando che un client Kerberos sia installato nei computer client.

Per maggiori informazioni sul supporto di Amazon EMR per Kerberos e KDC, nonché sui collegamenti alla documentazione di MIT Kerberos, consulta [Utilizzo di Kerberos per l'autenticazione con Amazon EMR](emr-kerberos.md).

## Fase 1: Creazione del cluster che utilizza Kerberos
<a name="emr-kerberos-clusterdedicated-cluster"></a>

1. Creare una configurazione di sicurezza che attiva Kerberos. L'esempio seguente mostra un `create-security-configuration` comando che utilizza il AWS CLI che specifica la configurazione di sicurezza come struttura JSON in linea. È anche possibile fare riferimento a un file salvato in locale.

   ```
   aws emr create-security-configuration --name MyKerberosConfig \
   --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": 
   {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
   ```

1. Creare un cluster che fa riferimento alla configurazione di sicurezza, stabilisce attributi Kerberos per il cluster e aggiunge account Linux utilizzando un'operazione di bootstrap. L'esempio seguente illustra l'utilizzo di un comando `create-cluster `con l' AWS CLI. Il comando fa riferimento alla configurazione di sicurezza creata precedentemente, `MyKerberosConfig`, nonché a uno script semplice, `createlinuxusers.sh`, come un'operazione di bootstrap, che deve essere creato e caricato in Amazon S3 prima di creare il cluster.

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

   Il codice seguente mostra il contenuto dello script `createlinuxusers.sh`, che aggiunge user1, user2 e user3 a ogni nodo nel cluster. Nella fase successiva, si aggiungeranno questi utenti come principali KDC.

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

## Fase 2: Aggiunta di entità principali al KDC, creazione di directory utente HDFS e configurazione di SSH
<a name="emr-kerberos-clusterdedicated-KDC"></a>

Il KDC in esecuzione sul nodo primario necessita di un principale aggiunto per l'host locale e per ciascun utente creato nel cluster. È anche possibile creare directory HDFS per ogni utente che deve connettersi al cluster ed eseguire processi Hadoop. Analogamente, configurare il servizio SSH per attivare l'autenticazione GSSAPI, necessaria per Kerberos. Dopo aver attivato GSSAPI, riavviare il servizio SSH.

Il modo più semplice di eseguire queste operazioni è di inviare una fase al cluster. L'esempio seguente invia uno script Bash `configurekdc.sh` al cluster creato nella fase precedente, facendo riferimento al relativo ID di cluster. Lo script viene salvato in Amazon S3. In alternativa, puoi connetterti al nodo primario utilizzando una coppia di chiavi EC2 per eseguire i comandi o inviare la fase durante la creazione del 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"]
```

Il codice seguente mostra il contenuto dello 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
```

Gli utenti aggiunti ora dovrebbero essere in grado di connettersi al cluster tramite SSH. Per ulteriori informazioni, consulta [Utilizzo di SSH per connettersi a cluster kerberizzati con Amazon EMR](emr-kerberos-connect-ssh.md).