Il plug-in Hive offre per HiveServer2 la ricerca di database, tabelle, colonne e UDF permanenti, e policy di accesso, mascheramento e filtro delle righe, sul modello del servizio Hive di Apache Ranger. ID del plug-in e tipo di servizio sono entrambi hive. Il plug-in di servizio gira nel server GrantForge; l’agente Hive, installato in HiveServer2, applica le policy.
I test di integrazione Testcontainers del repository coprono HiveServer2 3.1.3, 4.0.1 e 4.1.0, incluso un accesso Kerberos a 4.0.1; ciò non certifica le altre versioni.
Installazione
La distribuzione include il plug-in in plugins/hive. Verifica in Gestione della piattaforma → Plug-in che hive sia abilitato; dopo un aggiornamento esegui di nuovo la scansione della directory dei plug-in. Il plug-in comunica con HiveServer2 tramite il driver JDBC di Hive stesso (hive-jdbc 4.0.1, standalone) in un proprio class loader, quindi funziona sia con HiveServer2 3.1 sia con 4.x.
Aggiungere un servizio dati
- Apri Permessi sui dati → Servizi dati, aggiungi un servizio e scegli Apache Hive (
hive). - Inserisci l’URL JDBC di HiveServer2, per esempio
jdbc:hive2://hiveserver2.example.com:10000/default. Funziona anche il rilevamento tramite ZooKeeper:jdbc:hive2://zk1:2181,zk2:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2. - Scegli come accede l’utente di ricerca, inseriscilo, prova la connessione e salva il servizio. La prova accede ed elenca i database, come fanno le ricerche.
L’utente di ricerca serve solo a GrantForge per scoprire le risorse; è distinto dagli utenti che eseguono le query. Una prova di connessione riuscita non significa che le query siano già soggette alle policy.
| Impostazione | Scopo |
|---|---|
jdbc.url |
URL HiveServer2 obbligatorio jdbc:hive2://host/database;variabili di sessione, con TLS (;ssl=true;sslTrustStore=…), il trasporto HTTP o, con Kerberos, il principal del server (;principal=hive/_HOST@EXAMPLE.COM) |
authentication |
password (predefinito): un utente con la sua password, per LDAP, PAM o senza autenticazione; kerberos: un principal con keytab o password |
username |
Utente di ricerca obbligatorio; con Kerberos il principal completo, per esempio grantforge@EXAMPLE.COM |
password |
La password dell’utente o, senza keytab, la password Kerberos del principal; memorizzata cifrata |
keytab |
Kerberos: percorso della keytab del principal, leggibile sul server GrantForge |
kerberos.kdc |
Kerberos: KDC del realm del principal, host[:port] separati da virgole; vuoto usa il krb5.conf del server |
read.timeout.ms |
Timeout di lettura, predefinito 30000, intervallo 1..600000 |
L’URL non può contenere credenziali né nulla che legga file o token sul server GrantForge: user, password, initFile, kerberosAuthType, delegationToken, storePasswordPath, jwt e le variabili browser… sono rifiutati, a prescindere da maiuscole e minuscole. auth può valere solo noSasl. Un servizio Kerberos richiede principal nell’URL; un servizio con password non può averlo.
Kerberos
Con kerberos, GrantForge autentica da sé il principal, con la keytab o la password, e apre la connessione come quel principal; sul server GrantForge non servono altre impostazioni Kerberos. I realm i cui KDC sono indicati in kerberos.kdc vengono dichiarati per tutto il server GrantForge, come fa il plug-in HDFS, così più servizi Hive e HDFS possono usare realm diversi contemporaneamente.
Risorse e tipi di accesso
| Livello | Corrispondenza | Note |
|---|---|---|
database |
Caratteri jolly, senza maiuscole | Le policy possono terminare qui |
table |
Caratteri jolly, senza maiuscole | Sotto un database; le policy possono terminare qui |
column |
Caratteri jolly, senza maiuscole | Sotto una tabella |
udf |
Caratteri jolly, senza maiuscole | Funzioni permanenti, sotto un database |
url |
Percorsi, con maiuscole, ricorsivi | Dati che le istruzioni leggono o scrivono, per esempio hdfs://nn:8020/landing; tipi di accesso read e write |
hiveservice |
Caratteri jolly | HiveServer2 stesso; tipo di accesso serviceadmin |
global |
Caratteri jolly | Funzioni temporanee e file aggiunti; tipo di accesso tempudfadmin |
I tipi di accesso sono quelli di Hive: select, update, create, drop, alter, index, lock, read, write, repladmin, serviceadmin, tempudfadmin, refresh e all. Come in Ranger, all include ogni tipo tranne tempudfadmin, che permette a un utente di eseguire codice a sua scelta dentro HiveServer2.
Nei valori delle policy, * corrisponde a un numero qualsiasi di caratteri e ? a un carattere. L’editor delle policy suggerisce nomi per prefisso: database, tabelle e UDF nei database indicati dalla policy e colonne delle sue tabelle.
Mascheramento
Le policy di mascheramento si applicano alle colonne. Ogni tipo di maschera è una delle funzioni di mascheramento di Hive, in cui {col} indica la colonna:
| Tipo di maschera | Mostra |
|---|---|
mask |
Maiuscole come X, minuscole come x e cifre come n |
mask_show_last_4 |
Solo gli ultimi quattro caratteri |
mask_show_first_4 |
Solo i primi quattro caratteri |
mask_hash |
Un hash SHA-256 |
mask_null |
NULL |
mask_none |
Il valore invariato |
mask_date_show_year |
Il 1° gennaio dell’anno della data |
custom |
Un’espressione Hive a scelta, con {col} per la colonna, per esempio concat('****', substr({col}, -4)) |
Per esempio, mask_show_last_4 mostra 4111111111111111 come xxxxxxxxxxxx1111.
Filtri delle righe
Le policy di filtro delle righe si applicano alle tabelle. Un filtro è una condizione Hive sulle colonne della tabella, per esempio region = 'EU': le query vedono solo le righe che la soddisfano.
Maschere e filtri delle righe non concedono accesso. Una policy di accesso separata deve consentire la query.
Esempio di policy
Supponiamo che Hive abbia una tabella sales.orders con le colonne id, region e card. Crea tre policy abilitate nello stesso servizio dati per l’utente alice:
| Tipo di policy | Risorse | Regola |
|---|---|---|
| Accesso | database=sales, table=orders, column=* |
Consentire select all’utente alice |
| Mascheramento | database=sales, table=orders, column=card |
Usare mask_show_last_4 per l’utente alice |
| Filtro delle righe | database=sales, table=orders |
Usare region = 'EU' per l’utente alice |
Appena l’agente applica il nuovo snapshot, alice vede solo le righe EU di sales.orders, con ogni carta mascherata tranne gli ultimi quattro caratteri; SHOW DATABASES le elenca sales e gli altri database la rifiutano.
Applicare le policy
Il plug-in di servizio gestisce le policy e cerca le risorse. Per applicarle, maschere e filtri delle righe compresi, ogni HiveServer2 ha bisogno dell’agente Hive. Distribuzione e controlli sono descritti nell’agente Hive.
