

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à.

# Configurazione di Kerberos su Amazon EMR
<a name="emr-kerberos-configure"></a>

Questa sezione fornisce dettagli ed esempi di configurazione per configurare Kerberos con architetture comuni. Indipendentemente dall'architettura scelta, i passaggi di base delle configurazione sono gli stessi e vengono effettuati in tre fasi. Se si utilizza un KDC esterno o si imposta un trust tra realm, è necessario accertarsi che ogni nodo in un cluster disponga di un instradamento di rete al KDC esterno, compresa la configurazione dei gruppi di sicurezza applicabili per consentire il traffico Kerberos in entrata e in uscita.

## Fase 1: creazione di una configurazione di sicurezza con le proprietà di Kerberos
<a name="emr-kerberos-step1-summary"></a>

La configurazione di sicurezza specifica i dettagli del server KDC Kerberos e consente il riutilizzo della configurazione di Kerberos a ogni creazione di un cluster. Puoi creare una configurazione di sicurezza utilizzando la console Amazon EMR AWS CLI, o l'API EMR. La configurazione di sicurezza può inoltre contenere altre opzioni di sicurezza, ad esempio la crittografia. Per ulteriori informazioni sulla creazione di configurazioni di sicurezza e la specifica di una configurazione di sicurezza al momento della creazione di un cluster, consulta [Usa le configurazioni di sicurezza per configurare la sicurezza dei cluster Amazon EMR](emr-security-configurations.md). Per informazioni sulle proprietà di Kerberos in una configurazione di sicurezza, consulta [Impostazioni Kerberos per configurazioni di sicurezza](emr-kerberos-configure-settings.md#emr-kerberos-security-configuration).

## Fase 2: creazione di un cluster e specifica di attributi Kerberos appositi per il cluster
<a name="emr-kerberos-step2-summary"></a>

Quando crei un cluster, specifichi una configurazione di sicurezza Kerberos insieme alle opzioni di Kerberos specifiche del cluster stesso. Quando utilizzi la console di Amazon EMR, sono disponibili solo le opzioni di Kerberos compatibili con la configurazione di sicurezza specificata. Quando utilizzi l'API AWS CLI o Amazon EMR, assicurati di specificare opzioni Kerberos compatibili con la configurazione di sicurezza specificata. Ad esempio, se quando crei un cluster con la CLI specifichi una password principale per un trust tra più realm ma la configurazione di sicurezza specificata non include parametri per questa situazione, si verifica un errore. Per ulteriori informazioni, consulta [Impostazioni Kerberos per i cluster](emr-kerberos-configure-settings.md#emr-kerberos-cluster-configuration).

## Fase 3: configurazione del nodo primario del cluster
<a name="emr-kerberos-step3-summary"></a>

In base ai requisiti dell'architettura e dell'implementazione, può essere necessaria una configurazione aggiuntiva sul cluster. È possibile farlo dopo la sua creazione o utilizzando operazioni di bootstrap o fasi durante il processo di creazione.

Per ogni utente autenticato Kerberos che si connette al cluster tramite SSH, è necessario accertarsi che vengano creati account Linux corrispondenti agli utenti di Kerberos. Se le entità principali dell'utente vengono fornite da un controller di dominio Active Directory, sia come KDC esterno che attraverso un trust tra realm, Amazon EMR crea automaticamente account Linux. Se Active Directory non viene utilizzato, è necessario creare principali per ciascun utente corrispondenti al rispettivo utente Linux. Per ulteriori informazioni, consulta [Configurazione di un cluster Amazon EMR per utenti HDFS autenticati da Kerberos e connessioni SSH](emr-kerberos-configuration-users.md).

Ogni utente deve inoltre disporre di una directory HDFS di proprietà, che è necessario creare. Inoltre, SSH deve essere configurato con GSSAPI abilitato per consentire le connessioni dagli utenti autenticati con Kerberos. GSSAPI deve essere abilitato sul nodo primario e l'applicazione client SSH deve essere configurata per l'utilizzo di GSSAPI. Per ulteriori informazioni, consulta [Configurazione di un cluster Amazon EMR per utenti HDFS autenticati da Kerberos e connessioni SSH](emr-kerberos-configuration-users.md).

# Configurazione di sicurezza e impostazioni del cluster per Kerberos su Amazon EMR
<a name="emr-kerberos-configure-settings"></a>

Quando crei un cluster che utilizza Kerberos, specifichi la configurazione di sicurezza con attributi Kerberos specifici del cluster. Non puoi specificare un set senza l'altro, altrimenti si verifica un errore.

Questo argomento fornisce una panoramica dei parametri di configurazione disponibili per Kerberos al momento della creazione di una configurazione di sicurezza e di un cluster. Inoltre, sono riportati esempi di CLI per la creazione di configurazioni di sicurezza e cluster compatibili per architetture comuni.

## Impostazioni Kerberos per configurazioni di sicurezza
<a name="emr-kerberos-security-configuration"></a>

Puoi creare una configurazione di sicurezza che specifichi gli attributi Kerberos utilizzando la console Amazon EMR, AWS CLI o l'API EMR. La configurazione di sicurezza può inoltre contenere altre opzioni di sicurezza, ad esempio la crittografia. Per ulteriori informazioni, consulta [Crea una configurazione di sicurezza con la console Amazon EMR o con AWS CLI](emr-create-security-configuration.md).

Utilizza i seguenti riferimenti per comprendere le impostazioni di configurazione di sicurezza disponibili per l'architettura Kerberos scelta. Vengono visualizzate le impostazioni della console di Amazon EMR. Per le corrispondenti opzioni con la CLI, consulta [Specificare le impostazioni Kerberos utilizzando il AWS CLI](emr-create-security-configuration.md#emr-kerberos-cli-parameters) o [Esempi di configurazione](emr-kerberos-config-examples.md).

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/emr-kerberos-configure-settings.html)

## Impostazioni Kerberos per i cluster
<a name="emr-kerberos-cluster-configuration"></a>

Puoi specificare le impostazioni Kerberos quando crei un cluster utilizzando la console Amazon EMR, AWS CLI o l'API EMR.

Utilizza i seguenti riferimenti per comprendere le impostazioni di configurazione di cluster disponibili per l'architettura Kerberos scelta. Vengono visualizzate le impostazioni della console di Amazon EMR. Per le corrispondenti opzioni con la CLI, consulta [Esempi di configurazione](emr-kerberos-config-examples.md).


| Parametro | Description | 
| --- | --- | 
|  Realm (Dominio)  |  Il nome di realm Kerberos per il cluster. La convenzione Kerberos consiste a impostare un nome identico al nome di dominio, ma in maiuscolo. Ad esempio, per il dominio `ec2.internal`, utilizza `EC2.INTERNAL` come nome di realm.  | 
|  Password amministratore KDC  |  La password utilizzata nel cluster per `kadmin` o `kadmin.local`. Queste sono interfacce a riga di comando per il sistema di amministrazione Kerberos V5, che gestisce principali Kerberos, policy sulle password e keytab per il cluster.   | 
|  Password del principale del trust tra realm (facoltativa)  |  Richiesta quando si stabilisce un trust tra realm. La password del principale inter-realm, che deve essere identica in tutti i realm. Utilizzare una password complessa.  | 
|  Utente di aggiunta al dominio Active Directory (facoltativo)  |  Richiesto durante l'utilizzo di Active Directory in un trust tra realm. Questo è il nome di accesso utente per un account Active Directory con l'autorizzazione per aggiungere computer al dominio. Amazon EMR utilizza questa identità per aggiungere il cluster al dominio. Per ulteriori informazioni, consulta [Fase 3: aggiunta di account al dominio per il cluster EMR](emr-kerberos-cross-realm.md#emr-kerberos-ad-users).  | 
|  Password di aggiunta al dominio Active Directory (facoltativa)  |  La password per l'utente di aggiunta al dominio Active Directory. Per ulteriori informazioni, consulta [Fase 3: aggiunta di account al dominio per il cluster EMR](emr-kerberos-cross-realm.md#emr-kerberos-ad-users).  | 

# Esempi di configurazione
<a name="emr-kerberos-config-examples"></a>

Gli esempi seguenti illustrano le configurazioni di sicurezza e le configurazioni dei cluster per scenari comuni. AWS CLI i comandi sono mostrati per brevità.

## KDC locale
<a name="emr-kerberos-example-local-kdc"></a>

I seguenti comandi creano un cluster con un KDC dedicato in esecuzione sul nodo primario. È necessaria una configurazione aggiuntiva sul cluster. Per ulteriori informazioni, consulta [Configurazione di un cluster Amazon EMR per utenti HDFS autenticati da Kerberos e connessioni SSH](emr-kerberos-configuration-users.md).

**Crea una configurazione di sicurezza**

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

**Crea cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge \
--applications Name=Hadoop Name=Hive --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole \
--security-configuration LocalKDCSecurityConfig \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=MyPassword
```

## KDC dedicato del cluster con trust tra realm Active Directory
<a name="emr-kerberos-example-crossrealm"></a>

I seguenti comandi creano un cluster con un KDC dedicato in esecuzione sul nodo primario e un trust tra realm con un dominio di Active Directory. È necessaria una configurazione aggiuntiva sul cluster e in Active Directory. Per ulteriori informazioni, consulta [Tutorial: Configurazione di un trust tra realm con un controller di dominio Active Directory](emr-kerberos-cross-realm.md).

**Crea una configurazione di sicurezza**

```
aws emr create-security-configuration --name LocalKDCWithADTrustSecurityConfig \
--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"}}}}}'
```

**Crea cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop Name=Hive \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole --security-configuration KDCWithADTrustSecurityConfig \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=MyClusterKDCAdminPassword,\
ADDomainJoinUser=ADUserLogonName,ADDomainJoinPassword=ADUserPassword,\
CrossRealmTrustPrincipalPassword=MatchADTrustPassword
```

## KDC esterno su un altro cluster
<a name="emr-kerberos-example-extkdc-cluster"></a>

I seguenti comandi creano un cluster che fa riferimento a un KDC dedicato sul nodo primario di un altro cluster per autenticare i principali. È necessaria una configurazione aggiuntiva sul cluster. Per ulteriori informazioni, consulta [Configurazione di un cluster Amazon EMR per utenti HDFS autenticati da Kerberos e connessioni SSH](emr-kerberos-configuration-users.md).

**Crea una configurazione di sicurezza**

```
aws emr create-security-configuration --name ExtKDCOnDifferentCluster \
--security-configuration '{"AuthenticationConfiguration": \
{"KerberosConfiguration": {"Provider": "ExternalKdc", \
"ExternalKdcConfiguration": {"KdcServerType": "Single", \
"AdminServer": "MasterDNSOfKDCMaster:749", \
"KdcServer": "MasterDNSOfKDCMaster:88"}}}}'
```

**Crea cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge \
--applications Name=Hadoop Name=Hive \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole --security-configuration ExtKDCOnDifferentCluster \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=KDCOnMasterPassword
```

## KDC esterno del cluster con trust tra realm Active Directory
<a name="emr-kerberos-example-extkdc-ad-trust"></a>

I seguenti comandi creano un cluster senza KDC. Il cluster fa riferimento a un KDC dedicato in esecuzione sul nodo primario di un altro cluster per autenticare i principali. Il server KDC ha un trust tra realm con controller di dominio Active Directory. È necessaria una configurazione aggiuntiva sul nodo primario con il KDC. Per ulteriori informazioni, consulta [Tutorial: Configurazione di un trust tra realm con un controller di dominio Active Directory](emr-kerberos-cross-realm.md).

**Crea una configurazione di sicurezza**

```
aws emr create-security-configuration --name ExtKDCWithADIntegration \
--security-configuration '{"AuthenticationConfiguration": \
{"KerberosConfiguration": {"Provider": "ExternalKdc", \
"ExternalKdcConfiguration": {"KdcServerType": "Single", \
"AdminServer": "MasterDNSofClusterKDC:749", \
"KdcServer": "MasterDNSofClusterKDC.com:88", \
"AdIntegrationConfiguration": {"AdRealm":"AD.DOMAIN.COM", \
"AdDomain":"ad.domain.com", \
"AdServer":"ad.domain.com"}}}}}'
```

**Crea cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop Name=Hive \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole --security-configuration ExtKDCWithADIntegration \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=KDCOnMasterPassword,\
ADDomainJoinUser=MyPrivilegedADUserName,ADDomainJoinPassword=PasswordForADDomainJoinUser
```

# Configurazione di un cluster Amazon EMR per utenti HDFS autenticati da Kerberos e connessioni SSH
<a name="emr-kerberos-configuration-users"></a>

Amazon EMR crea client utente autenticati in Kerberos per le applicazioni eseguite sul cluster, ad esempio, l'utente `hadoop`, l'utente `spark` e altri utenti. Puoi anche aggiungere utenti autenticati durante i processi del cluster mediante Kerberos. Gli utenti autenticati possono quindi connettersi al cluster con le relative credenziali Kerberos e lavorare con le applicazioni. Per consentire l'autenticazione dell'utente nel cluster, sono necessarie le seguenti configurazioni:
+ Nel cluster deve esistere un account Linux corrispondente all'entità principale di Kerberos nel KDC. Amazon EMR esegue questa operazione automaticamente nelle architetture che si integrano con Active Directory.
+ È necessario creare una directory utente HDFS nel nodo primario per ogni utente e assegnare all'utente le autorizzazioni per la directory.
+ È necessario configurare il servizio SSH in modo che GSSAPI sia abilitato per il nodo primario. Inoltre, gli utenti devono disporre di un client SSH con GSSAPI abilitato.

## Aggiunta di utenti Linux ed entità principali Kerberos al nodo primario
<a name="emr-kerberos-configure-linux-kdc"></a>

Se non utilizzi Active Directory, dovrai creare gli account Linux sul nodo primario del cluster e aggiungere i principali per tali utenti Linux al KDC. Questo include un principale nel KDC per il nodo primario. Oltre ai principali dell'utente, il KDC in esecuzione sul nodo primario necessita di un principale per l'host locale.

Se l'architettura include l'integrazione con Active Directory, i principali e gli utenti Linux sul server locale KDC, se applicabili, vengono creati automaticamente. Puoi ignorare questa fase. Per ulteriori informazioni, consultare [Fiducia tra realm](emr-kerberos-options.md#emr-kerberos-crossrealm-summary) e [KDC esterno: KDC del cluster su un cluster diverso con la relazione di fiducia tra realm Active Directory](emr-kerberos-options.md#emr-kerberos-extkdc-ad-trust-summary).

**Importante**  
Il KDC, insieme al database dei principali, viene perso quando il nodo primario termina perché quest'ultimo utilizza l'archiviazione temporanea. Se si creano utenti per connessioni SSH, è consigliabile stabilire un trust tra realm con un KDC esterno configurato per la disponibilità elevata. In alternativa, se si creano utenti per connessioni SSH utilizzando account Linux, è possibile automatizzare il processo di creazione dell'account utilizzando operazioni di bootstrap e script in modo che possa essere ripetuto quando si crea un nuovo cluster.

Inviare una fase al cluster dopo averla creata oppure quando viene creato il cluster è il modo più semplice per aggiungere utenti e principali di KDC. In alternativa, è possibile connettersi al nodo primario utilizzando una coppia di chiavi EC2 come utente `hadoop` predefinito per l'esecuzione dei comandi. Per ulteriori informazioni, consulta [Connect al nodo primario del cluster Amazon EMR tramite SSH](emr-connect-master-node-ssh.md).

L'esempio seguente invia uno script Bash `configureCluster.sh` a un cluster già esistente, facendo riferimento al relativo ID di cluster. Lo script viene salvato in Amazon S3. 

```
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/configureCluster.sh"]
```

L'esempio seguente mostra il contenuto dello script `configureCluster.sh`. Lo script gestisce anche la creazione di directory utente HDFS e l'abilitazione di GSSAPI per SSH, argomenti che saranno trattati nelle sezioni di seguito.

```
#!/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=([lijuan]=pwd1 [marymajor]=pwd2 [richardroe]=pwd3)
for i in ${!arr[@]}; do
    #Assign plain language variables for clarity
     name=${i} 
     password=${arr[${i}]}

     # Create a principal for each user in the primary node and require a new password on first logon
     sudo kadmin.local -q "addprinc -pw $password +needchange $name"

     #Add hdfs directory for each user
     hdfs dfs -mkdir /user/$name

     #Change owner of each user's hdfs directory to that 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
```

## Aggiunta di directory HDFS utente
<a name="emr-kerberos-configure-HDFS"></a>

Per consentire agli utenti di accedere al cluster ed eseguire processi Hadoop, è necessario aggiungere directory utente HDFS per i relativi account Linux e concedere a ciascun utente la proprietà della sua directory.

Inviare una fase al cluster dopo averla creata oppure quando viene creato il cluster è il modo più semplice per creare directory HDFS. In alternativa, è possibile connettersi al nodo primario utilizzando una coppia di chiavi EC2 come utente `hadoop` predefinito per l'esecuzione dei comandi. Per ulteriori informazioni, consulta [Connect al nodo primario del cluster Amazon EMR tramite SSH](emr-connect-master-node-ssh.md).

L'esempio seguente invia uno script Bash `AddHDFSUsers.sh` a un cluster già esistente, facendo riferimento al relativo ID di cluster. Lo script viene salvato in Amazon S3. 

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

L'esempio seguente mostra il contenuto dello script `AddHDFSUsers.sh`.

```
#!/bin/bash
# AddHDFSUsers.sh script

# Initialize an array of user names from AD, or Linux users 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
```

## Abilitazione di GSSAPI per SSH
<a name="emr-kerberos-ssh-config"></a>

Perché gli utenti autenticati in Kerberos possano connettersi al nodo primario tramite SSH, per il servizio SSH deve essere abilitato il metodo di autenticazione GSSAPI. A questo scopo, esegui i seguenti comandi dalla riga di comando del nodo primario oppure utilizza una fase per eseguirla come script. Dopo aver riconfigurato SSH, devi riavviare il servizio.

```
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
```