Plugin Trino - Amazon EMR

Plugin Trino

Trino (precedentemente PrestoSQL) è un motore di query SQL che consente di eseguire query su più origini dati, come HDFS, archiviazione di oggetti, database relazionali e database NoSQL. Grazie a questo plugin è possibile eseguire query sui dati indipendentemente dalla posizione in cui si trovano, senza la necessità di effettuare la migrazione di dati in un percorso centrale. Amazon EMR mette a disposizione un plugin Apache Ranger per fornire un controllo granulare degli accessi a Trino. Il plug-in è compatibile con il server open source Apache Ranger Admin versione 2.0 e successive.

Funzionalità supportate

Il plugin Apache Ranger per Trino su Amazon EMR supporta tutte le funzionalità del motore di query Trino, che è protetto da un controllo granulare degli accessi comprendente controlli degli accessi a livello di database, tabella e colonna, filtraggio di riga e mascheramento dei dati. Le policy di Apache Ranger possono includere policy di concessione e di negazione a utenti e gruppi. Anche gli eventi di verifica vengono inviati a CloudWatch Logs.

Installazione della configurazione del servizio

L'installazione della definizione del servizio Trino richiede la configurazione del server Admin Ranger. Per configurare il server Admin Ranger, consulta Configurazione del server Admin Ranger.

Attenersi alla seguente procedura per installare la definizione del servizio Trino.

  1. SSH nel server Admin Apache Ranger.

    ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal

  2. Disinstalla il plugin del server Presto, se presente. Esegui il comando seguente. Se viene visualizzato l'errore "Service not found" (Servizio non trovato), il plugin del server Presto non è stato installato sul server. Passare alla fase successiva.

    curl -f -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X DELETE -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/presto'
  3. Scarica la definizione del servizio e il plugin del server Admin Apache Ranger. In una directory temporanea, scarica la definizione del servizio. Questa definizione del servizio è supportata dalle versioni Ranger 2.x.

    wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-trino.json
  4. Registra la definizione del servizio Apache Trino per Amazon EMR.

    curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-trino.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'

    Se questo comando viene eseguito correttamente, viene visualizzato un nuovo servizio nell'interfaccia utente di Admin Apache Ranger denominato TRINO, come mostrato nell'immagine seguente.

    Il server Admin Ranger crea il servizio.
  5. Crea un'istanza dell'applicazione TRINO inserendo le informazioni seguenti.

    Service Name (Nome del servizio): il nome del servizio che verrà utilizzato. Il valore suggerito è amazonemrtrino. Prendi nota di questo nome del servizio dal momento che sarà necessario durante la creazione di una configurazione di sicurezza per Amazon EMR.

    Nome visualizzato: il nome da visualizzare per questa istanza. Il valore suggerito è amazonemrtrino.

    Nome visualizzato per il server Admin Ranger.

    jdbc.driver.ClassName: il nome della classe JDBC per la connettività Trino. Puoi usare il valore predefinito.

    jdbc.url: la stringa di connessione JDBC da utilizzare per la connessione a un coordinatore Trino.

    Nome comune per certificato: il campo CN all'interno del certificato utilizzato per connettersi al server Admin da un plug-in client. Questo valore deve corrispondere al campo CN nel certificato TLS creato per il plug-in.

    Nome comune per il server Admin Ranger.

    Il certificato TLS per questo plugin dovrebbe essere stato registrato nel trust store sul server Admin Ranger. Per ulteriori informazioni, consulta la sezione Certificati TLS.

Creazione di policy Trino

Quando crei una nuova policy, compila i campi seguenti.

Nome policy: il nome della policy.

Etichetta policy: un'etichetta che è possibile inserire in questa policy.

Catalog (Catalogo): il catalogo a cui viene applicata questa policy. Il carattere jolly "*" rappresenta tutti i cataloghi.

Schema (Schema): gli schemi a cui viene applicata questa policy. Il carattere jolly "*" rappresenta tutti gli schemi.

Tabella: le tabelle a cui viene applicata questa policy. Il carattere jolly "*" rappresenta tutte le tabelle.

Column (Colonna): le colonne a cui viene applicata questa policy. Il carattere jolly "*" rappresenta tutte le colonne.

Description (Descrizione): la descrizione di questa policy.

Esistono altri tipi di policy, ad esempio Trino User (Utente Trino) (per l'accesso alla rappresentazione di utenti), Trino System/Session Property (Proprietà sistema/sessione Trino) (per modificare le proprietà del sistema o della sessione del motore), Functions/Procedures (Funzioni/procedure) (per consentire chiamate a funzioni o procedure) e URL (per consentire l'accesso in lettura/scrittura al motore nei percorsi dati).

Il server Admin Ranger crea i dettagli della policy.

Per concedere autorizzazioni a utenti e gruppi specifici, inserirli. È inoltre possibile specificare delle esclusioni per consentire e negare le condizioni.

I dettagli della policy del server Admin Ranger consentono di negare le condizioni.

Dopo aver specificato le condizioni di autorizzazione e negazione, scegli Save (Salva).

Considerazioni

Quando si creano policy Trino all'interno di Apache Ranger, occorre tenere a mente alcune considerazioni sull'utilizzo.

Server dei metadati Hive

Il server dei metadati Hive è accessibile solo dai motori attendibili, in particolare il motore Trino, come misura di protezione da accessi non autorizzati. Il server dei metadati Hive è accessibile anche da tutti i nodi del cluster. La porta 9083 richiesta consente a tutti i nodi di accedere al nodo principale.

Autenticazione

Per impostazione predefinita, Trino è configurato per l'autenticazione utilizzando Kerberos, come specificato nella configurazione di sicurezza di Amazon EMR.

Crittografia in transito obbligatoria

Il plugin Trino richiede che la crittografia in transito sia abilitata nella configurazione di sicurezza di Amazon EMR. Per abilitare la crittografia, consulta Crittografia in transito.

Limitazioni

Di seguito sono riportate le attuali limitazioni per il plugin Trino:

  • Il server Admin Ranger non supporta il completamento automatico.