Gli esempi riportati di seguito creano e utilizzano un cluster Dataproc con Kerberos abilitato con componenti Ranger e Solr per controllare l'accesso degli utenti alle risorse Hadoop, YARN e HIVE.
Note:
Puoi accedere all'interfaccia utente web dei ranger tramite Gateway dei componenti.
In un cluster Ranger con Kerberos, Dataproc mappa un utente Kerberos all'utente di sistema rimuovendo il realm e l'istanza dell'utente Kerberos. Ad esempio, l'entità Kerberos
user1/cluster-m@MY.REALM
è mappata al sistemauser1
e i criteri Ranger sono definiti per consentire o negare le autorizzazioni peruser1
.
Crea il cluster.
- Il seguente comando
gcloud
può essere eseguito in da una finestra di terminale locale o da Cloud Shell di un progetto.gcloud dataproc clusters create cluster-name \ --region=region \ --optional-components=SOLR,RANGER \ --enable-component-gateway \ --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/keyring/cryptoKeys/key,dataproc:ranger.admin.password.uri=gs://bucket/admin-password.encrypted" \ --kerberos-root-principal-password-uri=gs://bucket/kerberos-root-principal-password.encrypted \ --kerberos-kms-key=projects/project-id/locations/global/keyRings/keyring/cryptoKeys/key
- Il seguente comando
Quando il cluster è in esecuzione, accedi a Dataproc nella pagina Cluster della console Google Cloud quindi seleziona il nome del cluster per aprire Pagina Dettagli cluster. Fai clic sulla scheda Interfacce web per visualizzare un elenco di link del gateway dei componenti alle interfacce web dei componenti predefiniti e facoltativi installati sul cluster. Fai clic sul link del ranger.
Accedi a Ranger inserendo il nome "admin" nome utente e amministratore Ranger password.
L'interfaccia utente di amministrazione di Ranger si apre in un browser locale.
Criterio di accesso YARN
In questo esempio viene creato un criterio Ranger per consentire e negare agli utenti l'accesso al Coda YARN root.default.
Seleziona
yarn-dataproc
dall'interfaccia utente di Ranger Admin.Nella pagina Criteri yarn-dataproc, fai clic su Aggiungi nuovo criterio. Nella pagina Crea criterio, i seguenti campi vengono inseriti o selezionati:
Policy Name
: "norme-filato-1"Queue
: "root.default"Audit Logging
: "Sì"Allow Conditions
:Select User
: "userone"Permissions
: "Seleziona tutto" per concedere tutte le autorizzazioni
Deny Conditions
:Select User
: "utentetwo"Permissions
: "Seleziona tutto" per negare tutte le autorizzazioni
Fai clic su Aggiungi per salvare le norme. Il criterio è elencato nella pagina Norme yarn-dataproc:
Esegui un job MapReduce Hadoop nella finestra della sessione SSH principale come utente one:
userone@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- L'interfaccia utente di Ranger mostra che
userone
è autorizzati a inviare il job.
- L'interfaccia utente di Ranger mostra che
Esegui il job MapReduce di Hadoop dalla sessione SSH master della VM finestra come
usertwo
:usertwo@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- L'interfaccia utente di Ranger mostra che a
usertwo
è stato negato l'accesso per inviare il job.
- L'interfaccia utente di Ranger mostra che a
Criterio di accesso HDFS
Questo esempio crea un criterio Ranger per consentire e negare l'accesso utente alla directory HDFS /tmp
.
Seleziona
hadoop-dataproc
dall'interfaccia utente di Ranger Admin.Nella pagina Criteri di hadoop-dataproc, fai clic su Aggiungi nuovo criterio. Nella pagina Crea criterio, i seguenti campi vengono inseriti o selezionati:
Policy Name
: "hadoop-policy-1"Resource Path
: "/tmp"Audit Logging
: "Sì"Allow Conditions
:Select User
: "userone"Permissions
: "Seleziona tutto" per concedere tutte le autorizzazioni
Deny Conditions
:Select User
: "utentetwo"Permissions
: "Seleziona tutto" per negare tutte le autorizzazioni
Fai clic su Aggiungi per salvare le norme. Il criterio è elencato nella pagina Criteri hadoop-dataproc:
Accedi alla directory HDFS
/tmp
come utenteone:userone@example-cluster-m:~$ hadoop fs -ls /tmp
- L'UI di Ranger mostra che
A
userone
è stato consentito l'accesso alla directory HDFS /tmp.
- L'UI di Ranger mostra che
A
Accedi alla directory HDFS
/tmp
comeusertwo
:usertwo@example-cluster-m:~$ hadoop fs -ls /tmp
- L'UI di Ranger mostra che
A
usertwo
è stato negato l'accesso alla directory HDFS /tmp.
- L'UI di Ranger mostra che
A
Criterio di accesso Hive
Questo esempio crea un criterio Ranger per consentire e negare l'accesso degli utenti a una tabella Hive.
Crea una piccola tabella
employee
utilizzando l'interfaccia a riga di comando Hive nell'istanza principale.hive> CREATE TABLE IF NOT EXISTS employee (eid int, name String); INSERT INTO employee VALUES (1 , 'bob') , (2 , 'alice'), (3 , 'john');
Seleziona
hive-dataproc
dall'interfaccia utente amministratore Ranger.Nella pagina Criteri hive-dataproc, fai clic su Aggiungi nuovo criterio. Nella pagina Crea criterio, i seguenti campi vengono inseriti o selezionati:
Policy Name
: "hive-policy-1"database
: "default"table
: "employee"Hive Column
: "*"Audit Logging
: "Sì"Allow Conditions
:Select User
: "userone"Permissions
: "Seleziona tutto" per concedere tutte le autorizzazioni
Deny Conditions
:Select User
: "utentetwo"Permissions
: "Seleziona tutto" per negare tutte le autorizzazioni
Fai clic su Aggiungi per salvare le norme. Il criterio è elencato nella pagina Criteri hive-dataproc:
Esegui una query dalla sessione SSH principale della VM sulla tabella dei dipendenti di Hive come utente one:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- La query userone ha esito positivo:
Connected to: Apache Hive (version 2.3.6) Driver: Hive JDBC (version 2.3.6) Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 1 | bob | | 2 | alice | | 3 | john | +---------------+----------------+ 3 rows selected (2.033 seconds)
- La query userone ha esito positivo:
Esegui una query dalla sessione SSH principale della VM sulla tabella dei dipendenti di Hive come utente due:
usertwo@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- a usertwo viene negato l'accesso alla tabella:
Error: Could not open client transport with JDBC Uri: ... Permission denied: user=usertwo, access=EXECUTE, inode="/tmp/hive"
- a usertwo viene negato l'accesso alla tabella:
Accesso all'alveare granulare
Ranger supporta il mascheramento e i filtri a livello di riga su Hive. Questo esempio
si basa sulla versione hive-policy-1
precedente aggiungendo mascheramento e filtro
criteri.
Seleziona
hive-dataproc
dall'interfaccia utente di amministrazione di Ranger, poi seleziona la scheda Masking (Occultamento) e fai clic su Aggiungi nuova norma.Nella pagina Crea criterio, i seguenti campi vengono inseriti o selezionati per creare un criterio per mascherare (annullare) la colonna del nome dell'impiegato:
Policy Name
: "hive-masking policy"database
: "predefinita"table
: "employee"Hive Column
: "nome"Audit Logging
: "Sì"Mask Conditions
:Select User
: "userone"Access Types
: "seleziona" aggiungi/modifica autorizzazioniSelect Masking Option
: "nullify"Fai clic su Aggiungi per salvare il criterio.
Seleziona
hive-dataproc
dall'interfaccia utente di amministrazione di Ranger, poi seleziona la scheda Filtro a livello di riga e fai clic su Aggiungi nuova norma.Nella pagina Crea criterio, i seguenti campi vengono inseriti o selezionati per creare un criterio per filtrare (restituire) le righe in cui
eid
non è uguale a1
:Policy Name
: "hive-filter policy"Hive Database
: "predefinita"Hive Table
: "employee"Audit Logging
: "Sì"Mask Conditions
:Select User
: "userone"Access Types
: "seleziona" autorizzazioni di aggiunta/modificaRow Level Filter
: espressione di filtro "eid != 1"Fai clic su Aggiungi per salvare le norme.
Ripeti la query precedente dalla sessione SSH master della VM e la tabella dei dipendenti Hive come userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- La query restituisce la colonna del nome mascherata e il valore bob
(eid=1) filtrato dai risultati.:
Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 2 | NULL | | 3 | NULL | +---------------+----------------+ 2 rows selected (0.47 seconds)
- La query restituisce la colonna del nome mascherata e il valore bob
(eid=1) filtrato dai risultati.: