Utilizzo dell'autenticazione LDAP con Presto on Amazon EMR - Amazon EMR

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

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

Fase 1: è possibile ottenere informazioni sui server LDAP e copiare il certificato server su Amazon S3

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

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

È 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 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. Il certificato di esempio è s3:///ldap_server.crt. MyBucket

Le impostazioni del server LDAP per binding anonimo

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 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 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 -xxx.ec2.internal. ip-xxx-xxx-xxx L'utente è associato all'unità organizzativa (OU) admins e alla password 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 includono questo account per chiarezza, ad eccezione dell'esempio 5.10.0, dove non è supportato. Se il server LDAP usa un binding anonimo, rimuovere le coppie nome/valore internal-communication.authentication.ldap.user e internal-communication.authentication.ldap.password.

Il nome distinto LDAP (DN) per gli utenti Presto

Quando si specifica la configurazione LDAP per Presto, è necessario specificare un modello bind che comprende ${USER} insieme a un'unità organizzativa (OU) e altri componenti di dominio aggiuntivi (DC). 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 avere gli UO a cui appartengono gli utenti idonei e i loro DC. 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 con l'ID utente (UID) effettivo. ${USER} Per ulteriori informazioni, consulta il argomento Fn::Sub 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.

Fase 2: impostazione di una configurazione di sicurezza

Creare una configurazione di sicurezza con la crittografia dei dati in transito abilitata. Per ulteriori informazioni, consulta Creazione di una configurazione di sicurezza 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. 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

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

I passaggi seguenti presuppongono il salvataggio dei dati JSON in un file, .json. MyPrestoConfig 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.

Esempio 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 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" } } ]
Esempio 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 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" } }]
Esempio 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" } }]
Esempio 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

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. NelFase 5: creazione del cluster, il file di script è referenziato come s3://MyBucket/LoadLDAPCert.sh.

Lo script seguente di esempio utilizza la password keystore predefinita, 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://MyBucket/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

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.

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

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

  4. 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, quindi scegli Next (Successivo).

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

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

  7. Immettete un nome per l'azione bootstrap, inserite la posizione dello script in cui avete creatoFase 4: creare lo script per copiare il certificato del server LDAP e caricarlo su Amazon S3, ad esempio s3://MyBucket/LoadLDAPCert.sh, quindi scegliete Aggiungi.

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

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

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

Per creare un cluster Presto con l'autenticazione LDAP usando l' 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://MyBucket/LoadLDAPCert.sh.

    Nota

    I caratteri di continuazione della riga Linux (\) 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://MyBucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json