Utilizzo LDAP dell'autenticazione per Presto su 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 LDAP dell'autenticazione per Presto su Amazon EMR

Segui i passaggi di questa sezione per configurareLDAP. Vedi ogni passo per esempi e link per ulteriori informazioni.

Passaggio 1: raccogli informazioni sul tuo LDAP server e copia il certificato del server su Amazon S3

Per configurare l'LDAPautenticazione, avrai bisogno delle informazioni e degli elementi riportati nella sezione seguente dal tuo LDAP server.

L'indirizzo IP o il nome host del LDAP server

Il coordinatore Presto sul nodo EMR master Amazon deve essere in grado di raggiungere il LDAP server all'indirizzo IP o al nome host specificato. Per impostazione predefinita, Presto comunica con il LDAP server utilizzando la porta LDAPS 636. Se la tua LDAP implementazione richiede una porta personalizzata, puoi specificarla utilizzando la ldap.url proprietà con Amazon EMR 5.16.0 o versioni successive oppure utilizzarla 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: Creare 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 Passaggio 4: creare lo script per copiare il certificato del LDAP server e caricarlo su Amazon S3. Il certificato di esempio è s3://amzn-s3-demo-bucket/ldap_server.crt.

Le impostazioni del LDAP server per l'associazione anonima

Se l'associazione anonima è disabilitata su PrestoDB, sono necessari l'ID utente UID () e la password di un account con autorizzazioni per l'associazione al LDAP server in modo che il server PrestoDB possa stabilire una connessione. È possibile specificare la password UID e utilizzando le proprietà internal-communication.authentication.ldap.user and internal-communication.authentication.ldap.password nella classificazione della configurazione. presto-config Amazon EMR 5.10.0 non supporta queste impostazioni, quindi l'associazione anonima deve essere supportata sul LDAP server quando si utilizza questa versione di rilascio.

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

Per conoscere lo stato dell'associazione anonima 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 disponga delle autorizzazioni per un LDAP server 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 LDAP server aperto in esecuzione su un'EC2istanza con il nome host fittizio ip-xxx-xxx-xxx-xxx.ec2.internal. L'utente è associato all'unità organizzativa (OU) admins e con la 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: Creare 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 LDAP server utilizza l'associazione anonima, rimuovete internal-communication.authentication.ldap.user le coppie internal-communication.authentication.ldap.password nome/valore.

Il nome LDAP distinto (DN) per gli utenti Presto

Quando si specifica la LDAP configurazione per Presto, si specifica un pattern di ${USER} associazione composto da un'unità organizzativa (OU) e componenti di dominio aggiuntivi (DCs). Presto lo sostituisce ${USER} con l'ID utente effettivo (UID) di ciascun utente durante l'autenticazione tramite password in modo che corrisponda al nome distinto (DN) specificato da questo modello di associazione. È 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 effettivo (). UID Per ulteriori informazioni, consulta il argomento Fn::Sub nella Guida per l'utente di AWS CloudFormation .

Quando usi Amazon EMR 5.10.0, puoi specificare solo uno di questi modelli. Con Amazon EMR 5.11.0 o versioni successive, puoi 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: Creare 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 Creare una configurazione di sicurezza nell'Amazon EMR Management Guide. 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 LDAP server viene utilizzato per autenticare le connessioni dei client al server Presto.

Fase 3: Creare una configurazione JSON con le proprietà Presto per LDAP

Si utilizza la classificazione presto-config di configurazione per impostare le proprietà Presto perLDAP. Il formato e il contenuto di presto-config sono leggermente diversi a seconda della versione di EMR rilascio di Amazon 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 JSON dati in un file, MyPrestoConfig.json. Se usi la console, carica il file in una posizione sicura in Amazon S3 in modo da potervi fare riferimento quando crei il cluster. Se usi il AWS CLI, puoi fare riferimento al file localmente.

Esempio Amazon EMR 6.1.0 e versioni successive con Presto SQL (Trino)

L'esempio seguente utilizza il nome LDAP host from Passaggio 1: raccogli informazioni sul tuo LDAP server e copia il certificato del server su Amazon S3 per l'autenticazione LDAP sul server per l'associazione. Vengono specificati due modelli di associazione degli utenti, che indicano che gli utenti all'interno dell'adminsunità organizzativa e l'datascientistsunità organizzativa sul LDAP server sono idonei all'autenticazione sul server Trino come utenti. I modelli di binding sono separati da due punti (:).

EMRLe versioni di Amazon 6.4.0 e successive utilizzano il nuovo nome Trino anziché Presto. SQL Se usi Trino, sostituisci prestosql-config nella seguente classificazione di configurazione con trino-config e prestosql-password-authenticator contrino-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 utilizza l'ID LDAP utente e la password e il nome LDAP host da Passaggio 1: raccogli informazioni sul tuo LDAP server e copia il certificato del server su Amazon S3 per l'autenticazione LDAP sul server per l'associazione. Vengono specificati due modelli di associazione degli utenti, che indicano che gli utenti all'interno dell'adminsunità organizzativa e l'datascientistsunità organizzativa sul LDAP server sono idonei all'autenticazione sul 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 da EMR 5.11.0 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 l'associazione anonima, quindi tali voci vengono 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" } }]

Passaggio 4: creare lo script per copiare il certificato del LDAP server 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://amzn-s3-demo-bucket/LoadLDAPCert.sh.

Lo script di esempio seguente utilizza la password predefinita del keystore, changeit. Si consiglia di connettersi al nodo master dopo aver creato il cluster e modificato 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

Quando crei il cluster, specifichi Presto e altre applicazioni che desideri che Amazon EMR installi. Gli esempi seguenti fanno anche riferimento alle proprietà di classificazione della configurazione all'interno di aJSON, ma è anche possibile specificare la classificazione della configurazione in linea.

Per creare un cluster Presto con LDAP autenticazione utilizzando la EMR console Amazon
  1. Passa alla nuova EMR console Amazon 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 EMR da installare per Amazon e, in Configurazione software, seleziona la versione di Amazon EMR da utilizzare. LDAPl'autenticazione è supportata solo con Amazon EMR 5.10.0 e versioni successive.

  4. In Modifica impostazioni software, scegli Carica JSON da S3, inserisci la posizione in Amazon S3 JSON del file di configurazione Fase 3: Creare una configurazione JSON con le proprietà Presto per LDAP in cui hai creato, quindi scegli Avanti.

  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. Inserisci un nome per l'azione bootstrap, inserisci la posizione dello script in cui hai creatoPassaggio 4: creare lo script per copiare il certificato del LDAP server e caricarlo su Amazon S3, ad esempio s3://amzn-s3-demo-bucket/L oadLDAPCert .sh, quindi scegli 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 LDAP autenticazione utilizzando il 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 di configurazione come JSON file 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 (\) 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