

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: Configurazione di un trust tra realm con un controller di dominio Active Directory
<a name="emr-kerberos-cross-realm"></a>

Quando configuri un trust tra realm, autorizzi i principali (di solito utenti) di un altro realm Kerberos a eseguire l'autenticazione a componenti dell'applicazione sul cluster EMR. Il *key distribution center (KDC)* dedicato al cluster stabilisce una relazione di fiducia con un altro KDC utilizzando un'*entità principale tra realm* esistente in entrambi i KDC. Il nome e la password del principale corrispondono in modo preciso.

Un trust tra realm richiede che i KDC possano accedere l'uno all'altro sulla rete e risolvere i nomi di dominio mutualmente. Di seguito sono riportate le fasi per stabilire una relazione di trust tra realm con un controller di dominio Microsoft AD eseguito come istanza EC2, nonché un esempio di configurazione di rete che fornisce la connettività e la risoluzione dei nomi di dominio necessarie. È accettabile qualsiasi configurazione di rete che consenta il traffico di rete tra server KDC.

Facoltativamente, dopo aver stabilito un trust tra realm con Active Directory utilizzando un KDC su un cluster, è possibile creare un altro cluster utilizzando un'altra configurazione di sicurezza per fare riferimento al KDC del primo cluster come KDC esterno. Per un esempio di configurazione di sicurezza e di impostazione del cluster, consultare [KDC esterno del cluster con trust tra realm Active Directory](emr-kerberos-config-examples.md#emr-kerberos-example-extkdc-ad-trust).

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

**Importante**  
Amazon EMR non supporta trust cross-realm con. AWS Directory Service for Microsoft Active Directory

[Fase 1: Configurazione di VPC e sottorete](#emr-kerberos-ad-network)

[Fase 2: Avvio e installazione del controller di dominio Active Directory](#emr-kerberos-ad-dc)

[Fase 3: aggiunta di account al dominio per il cluster EMR](#emr-kerberos-ad-users)

[Fase 4: Configurazione di un trust in entrata sul controller di dominio Active Directory](#emr-kerberos-ad-configure-trust)

[Fase 5: Utilizzo di un set di opzioni DHCP per specificare il controller di dominio Active Directory come server DNS di VPC](#emr-kerberos-ad-DHCP)

[Fase 6: avvio di un cluster EMR che utilizza Kerberos](#emr-kerberos-ad-cluster)

[Fase 7: creazione di utenti HDFS e impostazione di autorizzazioni sul cluster per account Active Directory](#emr-kerberos-ad-hadoopuser)

## Fase 1: Configurazione di VPC e sottorete
<a name="emr-kerberos-ad-network"></a>

Le fasi seguenti descrivono la creazione di un VPC e di una sottorete di modo che il KDC dedicato al cluster possa accedere al controller di dominio Active Directory e risolvere il relativo nome di dominio. In queste fasi, la risoluzione dei nomi di dominio viene fornita facendo riferimento al controller di dominio Active Directory come server dei nomi di dominio nel set di opzioni DHCP. Per ulteriori informazioni, consulta [Fase 5: Utilizzo di un set di opzioni DHCP per specificare il controller di dominio Active Directory come server DNS di VPC](#emr-kerberos-ad-DHCP).

Il KDC e il controller di dominio Active Directory devono essere in grado di risolvere uno il nome di dominio dell'altro. Ciò consente ad Amazon EMR di aggiungere computer al dominio e di configurare automaticamente gli account Linux e i parametri SSH corrispondenti sulle istanze del cluster. 

Se Amazon EMR non è in grado di risolvere il nome di dominio, è possibile fare riferimento al trust utilizzando l'indirizzo IP del controller di dominio Active Directory. Tuttavia, è necessario aggiungere manualmente gli account Linux, aggiungere i principali corrispondenti al KDC dedicato al cluster e configurare SSH.

**Per configurare VPC e sottorete**

1. Creazione di un Amazon VPC con una singola sottorete pubblica Per ulteriori informazioni, consulta [Fase 1: Creazione del VPC](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/getting-started-ipv4.html#getting-started-create-vpc) nella *Guida alle nozioni di base su Amazon VPC*.
**Importante**  
Quando utilizzi un controller di dominio Microsoft Active Directory, scegli un blocco CIDR per il cluster EMR in modo che tutti gli indirizzi IPv4 abbiano una lunghezza inferiore a nove caratteri (ad esempio, 10.0.0. 0/16). Questo perché i nomi DNS dei computer del cluster vengono utilizzati quando i computer si aggiungono alla directory di Active Directory. AWS assegna [nomi host DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-hostnames) basati sull'indirizzo IPv4 in modo che indirizzi IP più lunghi possano dare come risultato nomi DNS più lunghi di 15 caratteri. Active Directory ha un limite di 15 caratteri per la registrazione di nomi di computer aggiunti e tronca i nomi più lunghi, condizione che può causare errori imprevedibili.

1. Rimuovere il set di opzioni DHCP di default assegnato al VPC. Per ulteriori informazioni, consulta [Modifica di un VPC per non utilizzare opzioni DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html#DHCP_Use_No_Options). Successivamente, aggiungere un nuovo set che specifica il controller di dominio Active Directory come server DNS. 

1. Confermare che il supporto DNS è attivato per il VPC, ovvero, che gli hostname DNS e la risoluzione DNS sono attivati (impostazione predefinita). Per ulteriori informazioni, consulta [Aggiornamento del supporto DNS per il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).

1. Confermare che il VPC dispone di un gateway Internet associato (impostazione predefinita). Per ulteriori informazioni, consulta l'argomento relativo alla [creazione e all'associazione di un gateway Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway).
**Nota**  
Un gateway Internet è utilizzato in questo esempio in quanto si sta creando un nuovo controller di dominio per il VPC. È tuttavia possibile che un gateway Internet non sia necessario per l'applicazione. Il solo requisito è che il KDC dedicato al cluster possa accedere al controller di dominio Active Directory.

1. Creare una tabella di routing personalizzata, aggiungere un instradamento che porta al gateway Internet, quindi associarlo alla sottorete. Per ulteriori informazioni, consulta [Creazione di una tabella di routing personalizzata](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Routing).

1. Quando si avvia l'istanza EC2 per il controller di dominio, questa deve avere un indirizzo IPv4 pubblico statico affinché sia possibile eseguire la connessione alla stessa tramite RDP. Il modo più semplice di procedere è di configurare la sottorete per l'assegnazione automatica degli indirizzi IPv4 pubblici, che non è l'impostazione predefinita quando si crea una sottorete. Per ulteriori informazioni, consulta [Modifica dell'attributo di indirizzamento IPv4 pubblico della sottorete](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip). Eventualmente, è possibile assegnare l'indirizzo all'avvio dell'istanza. Per ulteriori informazioni, consulta [Assegnazione di un indirizzo IPv4 pubblico durante l'avvio dell'istanza](https://docs.aws.amazon.com/vpc/latest/userguide/using-instance-addressing.html#public-ip-addresses).

1. Al termine, annotare l'ID del VPC e della sottorete. Questi ID saranno utilizzati in seguito quando si avvia il controller di dominio Active Directory e il cluster.

## Fase 2: Avvio e installazione del controller di dominio Active Directory
<a name="emr-kerberos-ad-dc"></a>

1. Avviare un'istanza EC2 basata sull'AMI di base di Microsoft Windows Server 2016. Consigliamo un tipo di istanza m4.xlarge o superiore. Per ulteriori informazioni, consulta [Launching an Marketplace AWS Instance](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/launch-marketplace-console.html) nella *Amazon EC2* User Guide.

1. Prendere nota dell'ID del gruppo di sicurezza associato all'istanza EC2. Servirà per [Fase 6: avvio di un cluster EMR che utilizza Kerberos](#emr-kerberos-ad-cluster). Utilizziamo. {{sg-012xrlmdomain345}} In alternativa, è possibile specificare gruppi di sicurezza diversi per il cluster EMR e per questa istanza che consente il traffico tra di essi. Per ulteriori informazioni, consulta [Gruppi di sicurezza Amazon EC2 per le istanze Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) nella *Guida per l'utente di Amazon EC2*.

1. Connettersi all'istanza EC2 utilizzando RDP. Per ulteriori informazioni, consulta [Connessione all'istanza Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html) nella Guida per l'*utente di Amazon EC2*.

1. Avvia **Server Manager** per installare e configurare il ruolo dei servizi di dominio Active Directory sul server. Alzare il livello del server a controller di dominio e assegnare un nome di dominio (l'esempio utilizzato qui è `{{ad.domain.com}}`). Annotare il nome di dominio in quanto sarà necessario in un secondo momento quando si crea la configurazione di sicurezza EMR e il cluster. Per informazioni sulla configurazione di Active Directory, segui le istruzioni contenute in [Come configurare Active Directory (AD) in Windows Server 2016](https://ittutorials.net/microsoft/windows-server-2016/setting-up-active-directory-ad-in-windows-server-2016/).

   L'istanza viene riavviata al termine della procedura.

## Fase 3: aggiunta di account al dominio per il cluster EMR
<a name="emr-kerberos-ad-users"></a>

Esegui una connessione RDP al controller di dominio Active Directory per creare account in utenti e computer Active Directory per ogni utente del cluster. Per ulteriori informazioni, consulta [Create a User Account in Active Directory Users and Computers](https://technet.microsoft.com/en-us/library/dd894463(v=ws.10).aspx) sul sito *Microsoft Learn*. Annotare **User logon name (Nome di accesso utente)** di ogni utente. Questi nomi saranno necessari in seguito per la configurazione del cluster. 

Inoltre, crea un account con privilegi sufficienti per aggiungere computer al dominio. Questo account viene specificato quando si crea un cluster. Amazon EMR lo utilizza per aggiungere istanze di cluster al dominio. Questo account e la relativa password sono specificati in [Fase 6: avvio di un cluster EMR che utilizza Kerberos](#emr-kerberos-ad-cluster). Per delegare privilegi di aggiunta di computer all'account, è consigliabile creare un gruppo con privilegi di aggiunta e quindi assegnare l'utente al gruppo. Per istruzioni, consulta [Delega dei privilegi di aggiunta di directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_join_privileges.html) nella *Guida per l'amministrazione di AWS Directory Service *.

## Fase 4: Configurazione di un trust in entrata sul controller di dominio Active Directory
<a name="emr-kerberos-ad-configure-trust"></a>

I comandi di esempio seguenti creano un trust in Active Directory, ovvero un trust tra realm unidirezionale, in entrata e non transitivo con il KDC dedicato al cluster. L'esempio che utilizziamo per il realm del cluster è `{{EC2.INTERNAL}}`. Sostituisci il nome {{KDC-FQDN}} con il nome **DNS pubblico** indicato per il nodo primario di Amazon EMR che ospita il KDC. Il parametro `passwordt` specifica la **cross-realm principal password (password del principale inter-realm)**, definita insieme al **realm** del cluster quando si crea un cluster. Il nome di realm è derivato dal nome di dominio di default in `us-east-1` per il cluster. `Domain` è il dominio di Active Directory in cui si crea il trust, che è minuscolo per convenzione. L'esempio utilizza `{{ad.domain.com}}`.

Aprire il prompt dei comandi di Windows con privilegi di amministratore e digitare i comandi seguenti per creare la relazione di trust sul controller di dominio Active Directory:

```
C:\Users\Administrator> ksetup /addkdc {{EC2.INTERNAL}} {{KDC-FQDN}}
C:\Users\Administrator> netdom trust {{EC2.INTERNAL}} /Domain:{{ad.domain.com}} /add /realm /passwordt:{{MyVeryStrongPassword}}
C:\Users\Administrator> ksetup /SetEncTypeAttr EC2.INTERNAL AES256-CTS-HMAC-SHA1-96
```

## Fase 5: Utilizzo di un set di opzioni DHCP per specificare il controller di dominio Active Directory come server DNS di VPC
<a name="emr-kerberos-ad-DHCP"></a>

Ora che il controller di dominio Active Directory è configurato, è necessario configurare il VPC per utilizzarlo come server dei nomi di dominio per la risoluzione dei nomi in VPC. A questo proposito, associare un set di opzioni DHCP. Specifica il **Domain name (Nome di dominio)** come nome di dominio del cluster, ad esempio `ec2.internal` se il cluster si trova in us-east-1 o `{{region}}.compute.internal` per le altre Regioni. **Per **i server con nomi di dominio**, è necessario specificare l'indirizzo IP del controller di dominio Active Directory (che deve essere raggiungibile dal cluster) come prima voce, seguita da **AmazonProvidedDNS (ad esempio, DNS**). {{xx.xx.xx.xx}} AmazonProvided** Per ulteriori informazioni, consulta [Modifica dei set di opzioni DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html#DHCPOptions).

## Fase 6: avvio di un cluster EMR che utilizza Kerberos
<a name="emr-kerberos-ad-cluster"></a>

1. In Amazon EMR, crea una configurazione di sicurezza che specifica il controller di dominio Active Directory creato nelle fasi precedenti. Un esempio di comando è riportato di seguito. Sostituire il dominio, `{{ad.domain.com}}`, con il nome del dominio specificato in [Fase 2: Avvio e installazione del controller di dominio Active Directory](#emr-kerberos-ad-dc).

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

1. Creare il cluster con gli attributi seguenti:
   + Utilizzare l'opzione `--security-configuration` per specificare la configurazione di sicurezza creata. {{MyKerberosConfig}}Nell'esempio utilizziamo.
   + Utilizzare la proprietà `SubnetId` di `--ec2-attributes option` per specificare la sottorete creata in [Fase 1: Configurazione di VPC e sottorete](#emr-kerberos-ad-network). Usiamo {{step1-subnet}} nell'esempio.
   + Utilizza `AdditionalMasterSecurityGroups` e `AdditionalSlaveSecurityGroups` dell'opzione `--ec2-attributes` per specificare che il gruppo di sicurezza associato al controller di dominio AD da [Fase 2: Avvio e installazione del controller di dominio Active Directory](#emr-kerberos-ad-dc) è associato al nodo primario del cluster, nonché ai nodi principali e attività. Usiamo {{sg-012xrlmdomain345}} nell'esempio.

   Utilizzare `--kerberos-attributes` per specificare i seguenti attributi Kerberos specifici del cluster:
   + Il realm per il cluster specificato nella configurazione del controller di dominio Active Directory.
   + La password del principale del trust tra realm specificata come `passwordt` in [Fase 4: Configurazione di un trust in entrata sul controller di dominio Active Directory](#emr-kerberos-ad-configure-trust).
   + Una `KdcAdminPassword`, che può essere utilizzata per amministrare il KDC dedicato al cluster.
   + La password e il nome di accesso utente dell'account Active Directory con privilegi di aggiunta di computer creati in [Fase 3: aggiunta di account al dominio per il cluster EMR](#emr-kerberos-ad-users).

   L'esempio seguente avvia un cluster che utilizza Kerberos.

   ```
   aws emr create-cluster --name "{{MyKerberosCluster}}" \
   --release-label emr-5.10.0 \
   --instance-type {{m5.xlarge}} \
   --instance-count {{3}} \
   --ec2-attributes InstanceProfile={{EMR_EC2_DefaultRole}},KeyName={{MyEC2KeyPair}},\
   SubnetId={{step1-subnet}}, AdditionalMasterSecurityGroups={{sg-012xrlmdomain345}},
   AdditionalSlaveSecurityGroups={{sg-012xrlmdomain345}}\
   --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}},\
   ADDomainJoinUser={{ADUserLogonName}},ADDomainJoinPassword={{ADUserPassword}},\
   CrossRealmTrustPrincipalPassword={{MatchADTrustPwd}}
   ```

## Fase 7: creazione di utenti HDFS e impostazione di autorizzazioni sul cluster per account Active Directory
<a name="emr-kerberos-ad-hadoopuser"></a>

Quando si configura una relazione di trust con Active Directory, Amazon EMR crea utenti Linux sul cluster per ogni account Active Directory. Ad esempio, il nome di accesso utente `LiJuan` in Active Directory dispone di un account Linux `lijuan`. I nomi utente Active Directory possono contenere lettere maiuscole, ma Linux non supporta la combinazione di maiuscole e minuscole di Active Directory.

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. A questo proposito, consigliamo di eseguire uno script salvato in Amazon S3 come fase di cluster. In alternativa, è possibile eseguire i comandi nello script illustrato di seguito dalla riga di comando sul nodo primario. Utilizza la coppia di chiavi EC2 specificata durante la creazione del cluster per eseguire la connessione al nodo primario tramite SSH come utente Hadoop. Per ulteriori informazioni, consulta [Usa una coppia di chiavi EC2 per le credenziali SSH per Amazon EMR](emr-plan-access-ssh.md).

Esegui il comando seguente per aggiungere un passaggio al cluster che esegue uno script,{{AddHDFSUsers.sh}}.

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

Il contenuto del file {{AddHDFSUsers.sh}} è il seguente.

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

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

### Gruppi Active Directory mappati a gruppi Hadoop
<a name="emr-kerberos-ad-group"></a>

Amazon EMR utilizza System Security Services Daemon (SSD) per mappare gruppi Active Directory a gruppi Hadoop. Per confermare le mappature dei gruppi, dopo aver eseguito l'accesso al nodo primario come descritto in [Utilizzo di SSH per connettersi a cluster kerberizzati con Amazon EMR](emr-kerberos-connect-ssh.md), puoi utilizzare il comando `hdfs groups` per confermare che i gruppi Active Directory a cui l'account Active Directory appartiene siano stati mappati a gruppi Hadoop per l'utente Hadoop corrispondente sul cluster. È inoltre possibile verificare le mappature di gruppi di altri utenti specificando uno o più nomi utente con il comando, ad esempio `hdfs groups {{lijuan}}`. Per ulteriori informazioni, consulta [groups](https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html#groups) nella [Apache HDFS Commands Guide](https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html).