

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

# Utilizzo dell'autenticazione LDAP con Presto on Amazon EMR
<a name="emr-presto-ldap"></a>

Seguire le procedure di questa sezione per configurare LDAP. Vedi ogni passo per esempi e link per ulteriori informazioni.

**Topics**
+ [Fase 1: è possibile ottenere informazioni sui server LDAP e copiare il certificato server su Amazon S3](#emr-presto-ldap-server-prereq)
+ [Fase 2: impostazione di una configurazione di sicurezza](#emr-presto-ldap-seccfg)
+ [Fase 3: crea una configurazione JSON con le proprietà Presto per LDAP](#emr-presto-ldap-prestoconfig)
+ [Fase 4: creare lo script per copiare il certificato del server LDAP e caricarlo su Amazon S3](#emr-presto-ldap-servercert)
+ [Fase 5: creazione del cluster](#emr-presto-ldap-createcluster)

## Fase 1: è possibile ottenere informazioni sui server LDAP e copiare il certificato server su Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

Sarà necessario disporre delle informazioni e degli elementi nella sezione seguente dal server LDAP per configurare l'autenticazione LDAP.

### L'indirizzo IP o il nome host del server LDAP
<a name="w2aac60c39c13b7b5"></a>

Il coordinatore Presto sul nodo master Amazon EMR deve essere in grado di raggiungere il server LDAP all'indirizzo IP o al nome host specificato. Per impostazione predefinita, Presto comunica con il server LDAP utilizzando LDAPS tramite la porta 636. Se l'implementazione LDAP richiede una porta personalizzata, è possibile specificarla utilizzando la proprietà `ldap.url` con Amazon EMR 5.16.0 o versioni successive o utilizzando `authentication.ldap.url` con versioni precedenti. Sostituire la porta personalizzati per `636` come mostrato negli esempi di classificazione della configurazione `presto-config` in [Fase 3: crea una configurazione JSON con le proprietà Presto per LDAP](#emr-presto-ldap-prestoconfig). Verificare che i firewall e i gruppi di sicurezza consentano il traffico in entrata e in uscita sulla porta 636 (o la porta personalizzata) e anche sulla porta 8446 (o la porta personalizzata), che viene utilizzata per le comunicazioni interne del cluster.

### Il certificato del server LDAP
<a name="w2aac60c39c13b7b7"></a>

È necessario caricare il file del certificato in un percorso sicuro in Amazon S3. Per ulteriori informazioni, consulta [Come caricare file e cartelle in un bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) nella *Guida per l'utente di Amazon Simple Storage Service*. È possibile creare un'operazione di bootstrap che copi questo certificato da Amazon S3 su ogni nodo nel cluster quando il cluster viene avviato. Nello stato [Fase 4: creare lo script per copiare il certificato del server LDAP e caricarlo su Amazon S3](#emr-presto-ldap-servercert). Il certificato di esempio è. *s3://amzn-s3-demo-bucket/ldap\$1server.crt*

### Le impostazioni del server LDAP per binding anonimo
<a name="w2aac60c39c13b7b9"></a>

Se il binding anonimo è disattivato su PrestoDB, sono necessari l'ID utente (UID) e la password di un account con le autorizzazioni per vincolarsi al server LDAP affinché il server PrestoDB sia in grado di stabilire una connessione. È possibile specificare l'UID e la password utilizzando le proprietà `internal-communication.authentication.ldap.user` e `internal-communication.authentication.ldap.password` e `presto-config` nella classificazione delle configurazioni. Amazon EMR 5.10.0 non supporta queste impostazioni, per cui il binding anonimo deve essere supportato sul server LDAP quando si utilizza questa versione del rilascio.

Occorre notare che Trino non richiede la configurazione dell'associazione anonima.

**Per ottenere lo stato del binding anonimo sul server LDAP**
+ Utilizza il comando [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) di un client Linux, come mostrato nel seguente esempio:

  ```
  ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress
  ```

  Se il binding anonimo non è consentito, il comando restituisce quanto segue:

  ```
  ldap_bind: Inappropriate authentication (48)
  additional info: anonymous bind disallowed
  ```

**Per verificare che un account abbia le autorizzazioni per un server LDAP che utilizza l'autenticazione semplice**
+ Utilizza il comando [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) di un client Linux, come mostrato nel seguente esempio. L'esempio utilizza un utente fittizio*presto*, memorizzato in un server Open LDAP in esecuzione su un'istanza EC2 con il nome host fittizio. *ip-xxx-xxx-xxx-xxx.ec2.internal* L'utente è associato all'unità organizzativa (OU) e alla password: *admins* *123456*

  ```
  ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal 
  ```

  Se l'account è valido e dispone di autorizzazioni appropriate, il comando restituisce:

  ```
  dn:uid=presto,ou=admins,dc=ec2,dc=internal
  ```

Le configurazioni di esempio in [Fase 3: crea una configurazione JSON con le proprietà Presto per LDAP](#emr-presto-ldap-prestoconfig) includono questo account per chiarezza, ad eccezione dell'esempio 5.10.0, dove non è supportato. Se il server LDAP utilizza l'associazione anonima, rimuovete le `internal-communication.authentication.ldap.password` name/value coppie `internal-communication.authentication.ldap.user` and.

### Il nome distinto LDAP (DN) per gli utenti Presto
<a name="w2aac60c39c13b7c11"></a>

Quando si specifica la configurazione LDAP per Presto, si specifica uno schema di `${USER}` associazione composto da un'unità organizzativa (OU) e componenti di dominio aggiuntivi (). DCs Presto sostituisce `${USER}` con l'ID utente (UID) attuale di ciascun utente durante l'autenticazione delle password per correggere il nome distinto (DN) che questo modello bind specifica. È necessario OUs che gli utenti idonei appartengano e i loro. DCs Ad esempio, per consentire agli utenti dell'UO `admins` nel dominio `corp.example.com` di autenticarsi per Presto, è necessario specificare `${USER},ou=admins,dc=corp,dc=example,dc=com` come modello bind dell'utente.

**Nota**  
Quando si utilizza AWS CloudFormation, è necessario utilizzare la funzione Fn: :Sub per sostituirla `${USER}` con l'ID utente (UID) effettivo. Per ulteriori informazioni, consulta il argomento [Fn::Sub](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) nella *Guida per l'utente di AWS CloudFormation *.

Con Amazon EMR 5.10.0, è possibile specificare un solo modello di questo genere. Utilizzando Amazon EMR 5.11.0 o versioni successive, è possibile specificare più modelli separati da due punti (:). Gli utenti che tentano di effettuare l'autenticazione su Presto sono paragonati al primo modello, quindi al secondo e così via. Per vedere un esempio, consulta [Fase 3: crea una configurazione JSON con le proprietà Presto per LDAP](#emr-presto-ldap-prestoconfig).

## Fase 2: impostazione di una configurazione di sicurezza
<a name="emr-presto-ldap-seccfg"></a>

Creare una configurazione di sicurezza con la crittografia dei dati in transito abilitata. Per ulteriori informazioni, consulta [Creazione di una configurazione di sicurezza](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) nella *Guida alla gestione di Amazon EMR*. Gli artefatti della crittografia forniti durante la configurazione della crittografia dei dati in transito vengono utilizzati per crittografare le comunicazioni interne tra i nodi Presto. Per ulteriori informazioni, consulta [Fornitura di certificati per la crittografia dei dati in transito](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). Il certificato del server LDAP viene utilizzato per autenticare le connessioni client al server di Presto.

## Fase 3: crea una configurazione JSON con le proprietà Presto per LDAP
<a name="emr-presto-ldap-prestoconfig"></a>

È possibile utilizzare la classificazione delle configurazioni `presto-config` per impostare le proprietà per LDAP. Il formato e il contenuto di `presto-config` sono leggermente diversi a seconda della versione di Amazon EMR e dell'installazione di Presto (PrestoDB o Trino). Più avanti in questa sezione verranno forniti alcuni esempi di differenze di configurazione. Per ulteriori informazioni, consulta [Configurazione delle applicazioni](emr-configure-apps.md).

I passaggi seguenti presuppongono il salvataggio dei dati JSON in un file,. *MyPrestoConfig.json* Se si utilizza la console, carica il file in un percorso sicuro in Amazon S3 in modo che sia possibile farvi riferimento al momento della creazione del cluster. Se si utilizza il AWS CLI, è possibile fare riferimento al file localmente.

**Example Amazon EMR 6.1.0 e versioni successive con PrestoSQL (Trino)**  
L'esempio seguente usa il nome host LDAP da [Fase 1: è possibile ottenere informazioni sui server LDAP e copiare il certificato server su Amazon S3](#emr-presto-ldap-server-prereq) per eseguire l'autenticazione sul server LDAP per il binding. Vengono specificati due modelli di binding degli utenti, che indicano che gli utenti all'interno dell'UO `admins` e dell'UO `datascientists` sul server LDAP sono idonei per l'autenticazione al server Trino come utenti. I modelli di binding sono separati da due punti (`:`).  
Amazon EMR versione 6.4.0 e successive utilizza il nuovo nome Trino anziché PrestoSQL. Se usi Trino, sostituisci *`prestosql-config`* nella seguente classificazione di configurazione con `trino-config` e `prestosql-password-authenticator` con `trino-password-authenticator`.  

```
[
   {
      "Classification":"prestosql-config",
      "Properties":{
         "http-server.authentication.type":"PASSWORD"
      }
   },
   {
      "Classification":"prestosql-password-authenticator",
      "Properties":{
         "password-authenticator.name":"ldap",
         "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
         "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal"
      }
   }
]
```

**Example Amazon EMR 5.16.0 e versioni successive**  
L'esempio seguente usa la password, l'ID utente e il nome host LDAP da [Fase 1: è possibile ottenere informazioni sui server LDAP e copiare il certificato server su Amazon S3](#emr-presto-ldap-server-prereq) per eseguire l'autenticazione sul server LDAP per il binding. Vengono specificati due modelli di binding degli utenti, che indicano che gli utenti all'interno dell'UO `admins` e dell'UO `datascientists` sul server LDAP sono idonei per l'autenticazione al server Presto come utenti. I modelli di binding sono separati da due punti (`:`).  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "PASSWORD"
                }
        },
        {
                "Classification": "presto-password-authenticator",
                "Properties": {
                        "password-authenticator.name": "ldap",
                        "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.11.0 fino a 5.15.0**  
Il formato della classificazione di configurazione `presto-config `è leggermente diverso per queste versioni di release. L'esempio seguente specifica gli stessi parametri del precedente.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.10.0**  
Amazon EMR 5.10.0 supporta solo il binding anonimo, per cui tali voci sono omesse. Inoltre, può essere specificato solo un singolo modello di binding.  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal"
                }
        }]
```

## Fase 4: creare lo script per copiare il certificato del server LDAP e caricarlo su Amazon S3
<a name="emr-presto-ldap-servercert"></a>

Crea uno script che copia il file di certificato su ogni nodo nel cluster e lo aggiunge al keystore. Crea lo script utilizzando un editor di testo, salvalo e quindi caricalo su Amazon S3. Nel[Fase 5: creazione del cluster](#emr-presto-ldap-createcluster), il file di script è referenziato come*s3://amzn-s3-demo-bucket/LoadLDAPCert.sh*.

Lo script di esempio seguente utilizza la password predefinita del keystore,. *changeit* È consigliabile connettersi al nodo master dopo aver creato il cluster e modificare la password del keystore utilizzando il comando keytool.

```
#!/bin/bash
aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt .
sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt
```



## Fase 5: creazione del cluster
<a name="emr-presto-ldap-createcluster"></a>

Quando crei il cluster, devi specificare Presto e altre applicazioni che desideri che Amazon EMR installi. I seguenti esempi fanno anche riferimento alle proprietà di classificazione della configurazione all'interno di un JSON, ma è anche possibile specificare la classificazione di configurazione inline.

**Creazione di un cluster Presto con autenticazione LDAP utilizzando la console di Amazon EMR**

1. Passa alla nuova console Amazon EMR e seleziona **Passa alla vecchia console** dalla barra di navigazione laterale. Per ulteriori informazioni su cosa aspettarti quando passi alla vecchia console, consulta [Utilizzo della vecchia console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Seleziona **Create cluster** (Crea cluster), **Go to advanced options** (Vai alle opzioni avanzate).

1. Scegli **Presto** insieme ad altre applicazioni che Amazon EMR deve installare e in **Software Configuration (Configurazione software)**, seleziona il **Release (Rilascio)** di Amazon EMR da utilizzare. L'autenticazione LDAP è supportata solo con Amazon EMR 5.10.0 e versioni successive.

1. In **Edit software settings (Modifica le impostazioni software)**, scegli **Load JSON from S3 (Carica JSON da S3)**, inserisci il percorso in Amazon S3 del file di configurazione JSON creato in [Fase 3: crea una configurazione JSON con le proprietà Presto per LDAP](#emr-presto-ldap-prestoconfig), quindi scegli **Next (Successivo)**.

1. Configura la rete e l'hardware del cluster, quindi scegli **Next (Successivo)**.

1. Seleziona **Bootstrap actions (Operazioni di bootstrap)**. Per **Add bootstrap action (Aggiungi operazione di bootstrap)**, seleziona **Custom action (Operazione personalizzata)**, quindi scegli **Configure and add (Configura e aggiungi)**.

1. **Immettete un **nome** per l'azione bootstrap, inserite la **posizione dello script** in cui avete creato[Fase 4: creare lo script per copiare il certificato del server LDAP e caricarlo su Amazon S3](#emr-presto-ldap-servercert), ad esempio **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**, quindi scegliete Aggiungi.**

1. In **General Options (Opzioni generali)**, **Tag** e **Additional Options (Opzioni aggiuntive)**, scegli le impostazioni appropriate per la tua applicazione, quindi scegli **Next (Successivo)**.

1. Scegli **Authentication and encryption (Autenticazione e crittografia)**, quindi seleziona la **Security configuration (Configurazione di sicurezza)** creata in [Fase 2: impostazione di una configurazione di sicurezza](#emr-presto-ldap-seccfg).

1. Scegliere altre opzioni di sicurezza come appropriato per l'applicazione, quindi scegliere **Create Cluster (Crea cluster)**.

**Per creare un cluster Presto con autenticazione LDAP utilizzando AWS CLI**
+ Utilizza il comando `aws emr create-cluster`. Come minimo, specificare l'applicazione Presto e la classificazione della configurazione Presto, lo script di bootstrap e la configurazione di sicurezza creata nei passaggi precedenti. L'esempio seguente fa riferimento al file i configurazione come a un file JSON salvato nella stessa directory in cui viene eseguito il comando:. Lo script di bootstrap, invece, deve essere salvato in Amazon S3. Nell'esempio seguente viene utilizzato `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh`.
**Nota**  
I caratteri di continuazione della riga Linux (\$1) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuovili o sostituiscili con un accento circonflesso (^).

  ```
  aws emr create-cluster  --applications Name=presto --release-label emr-5.16.0 \
  --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \
  --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \
  --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json
  ```