Utilizza Ranger con Kerberos

I seguenti esempi creano e utilizzano un cluster Dataproc abilitato per Kerberos con i componenti Ranger e Solr per controllare l'accesso degli utenti alle risorse Hadoop, YARN e HIVE.

Note:

  • È possibile accedere all'interfaccia utente web di Ranger tramite il Gateway dei componenti.

  • In un ranger con cluster Kerberos, Dataproc mappa un utente Kerberos all'utente del sistema eliminando l'area e l'istanza dell'utente Kerberos. Ad esempio, l'entità Kerberos user1/cluster-m@MY.REALM è mappata al sistema user1 e i criteri intervallo sono definiti per consentire o negare le autorizzazioni per user1.

  1. Configura la password amministratore di Ranger.

  2. Configura la password dell'entità root Kerberos.

  3. Crea il cluster.

    1. Il seguente comando gcloud può essere eseguito in una finestra del 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
      
  4. Dopo che il cluster è in esecuzione, vai alla pagina Cluster di Dataproc nella console Google Cloud, quindi seleziona il nome del cluster per aprire la pagina Dettagli del 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 Ranger.

  5. Accedi a Ranger inserendo il nome utente "amministratore" e la password di amministratore del ranger.

  6. L'interfaccia utente di amministratore di Ranger si apre in un browser locale.

Criterio di accesso YARN

In questo esempio viene creato un criterio Ranger per consentire e negare l'accesso degli utenti alla coda root.default YARN.

  1. Seleziona yarn-dataproc dall'interfaccia utente di amministratore di Ranger.

  2. Nella pagina yarn-dataproc policies (Norme yarn-dataproc), fai clic su Add New Policy (Aggiungi nuova norma). Nella pagina Crea criterio, vengono inseriti o selezionati i seguenti campi:

    • Policy Name: "yarn-policy-1"
    • Queue: "root.default"
    • Audit Logging: "Sì"
    • Allow Conditions:
      • Select User: "userone"
      • Permissions: "Seleziona tutto" per concedere tutte le autorizzazioni
    • Deny Conditions:

      • Select User: "utentedue"
      • Permissions: "Seleziona tutto" per negare tutte le autorizzazioni

      Fai clic su Aggiungi per salvare il criterio. Il criterio è elencato nella pagina dei criteri yarn-dataproc:

  3. Esegui un job di MapReduce di Hadoop nella finestra della sessione SSH principale come userone:

    userone@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples.
    jar pi 5 10
    

    1. L'interfaccia utente del ranger mostra che userone ha ricevuto l'autorizzazione per inviare il job.
  4. Esegui il job di MapReduce di Hadoop dalla finestra della sessione SSH del master della VM come usertwo:

    usertwo@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples.
    jar pi 5 10

    1. L'interfaccia utente di Ranger mostra che a usertwo è stato negato l'accesso per inviare il job.

Criterio di accesso HDFS

In questo esempio viene creato un criterio Ranger per consentire e negare l'accesso degli utenti alla directory HDFS /tmp.

  1. Seleziona hadoop-dataproc dall'interfaccia utente di amministratore di Ranger.

  2. Nella pagina Norme di hadoop-dataproc, fai clic su Aggiungi nuova norma. Nella pagina Crea criterio, vengono inseriti o selezionati i seguenti campi:

    • 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: "utentedue"
      • Permissions: "Seleziona tutto" per negare tutte le autorizzazioni

      Fai clic su Aggiungi per salvare il criterio. Il criterio è elencato nella pagina Criteri di hadoop-dataproc:

  3. Accedi alla directory HDFS /tmp come userone:

    userone@example-cluster-m:~$ hadoop fs -ls /tmp
    

    1. La UI di Ranger mostra che a userone è stato consentito l'accesso alla directory HDFS /tmp.
  4. Accedi alla directory /tmp dell'HDFS come usertwo:

    usertwo@example-cluster-m:~$ hadoop fs -ls /tmp
    

    1. L'interfaccia utente di Ranger mostra che a usertwo è stato negato l'accesso alla directory HDFS /tmp.

Criterio di accesso ad Hive

In questo esempio viene creato un criterio Ranger per consentire e negare l'accesso degli utenti a una tabella Hive.

  1. Crea una piccola tabella employee utilizzando l'interfaccia a riga di comando hive sull'istanza master.

    hive> CREATE TABLE IF NOT EXISTS employee (eid int, name String); INSERT INTO employee VALUES (1 , 'bob') , (2 , 'alice'), (3 , 'john');
    

  2. Seleziona hive-dataproc dall'interfaccia utente di amministratore di Ranger.

  3. Nella pagina Criteri di Hive-dataproc, fai clic su Aggiungi nuova norma. Nella pagina Crea criterio, vengono inseriti o selezionati i seguenti campi:

    • Policy Name: "hive-policy-1"
    • database: "valore predefinito"
    • table: "dipendente"
    • Hive Column: "*"
    • Audit Logging: "Sì"
    • Allow Conditions:
      • Select User: "userone"
      • Permissions: "Seleziona tutto" per concedere tutte le autorizzazioni
    • Deny Conditions:

      • Select User: "utentedue"
      • Permissions: "Seleziona tutto" per negare tutte le autorizzazioni

      Fai clic su Aggiungi per salvare il criterio. Il criterio è elencato nella pagina Criteri di hive-dataproc:

  4. Esegui una query dalla sessione SSH master della VM sulla tabella dei dipendenti Hive come utenteone:

    userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
    

    1. 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)
      
  5. Esegui una query dalla sessione SSH master della VM sulla tabella dei dipendenti Hive come utentedue:

    usertwo@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
    

    1. A usertwo è negato l'accesso alla tabella:
      Error: Could not open client transport with JDBC Uri:
      ...
      Permission denied: user=usertwo, access=EXECUTE, inode="/tmp/hive"
      

Accesso all'alveare granulare

Ranger supporta i filtri di mascheramento e a livello di riga su Hive. Questo esempio si basa sul criterio hive-policy-1 precedente aggiungendo criteri di mascheramento e filtro.

  1. Seleziona hive-dataproc dall'interfaccia utente di amministratore di Ranger, quindi seleziona la scheda Mascheramento e fai clic su Aggiungi nuovo criterio.

    1. Nella pagina Crea criterio, vengono inseriti o selezionati i seguenti campi per creare un criterio che maschera (nullo) la colonna del nome del dipendente.

      • Policy Name: "norme relative al mascheramento dell'alveare"
      • database: "valore predefinito"
      • table: "dipendente"
      • Hive Column: "nome"
      • Audit Logging: "Sì"
      • Mask Conditions:
        • Select User: "userone"
        • Access Types: "seleziona" aggiungi/modifica autorizzazioni
        • Select Masking Option: "nullify"

          Fai clic su Aggiungi per salvare il criterio.

  2. Seleziona hive-dataproc dall'interfaccia utente di amministrazione di Ranger, quindi seleziona la scheda Filtro a livello di riga e fai clic su Aggiungi nuovo criterio.

    1. Nella pagina Crea criterio, vengono inseriti o selezionati i seguenti campi per creare un criterio per filtrare (restituire) le righe in cui eid è diverso da 1:

      • Policy Name: "criteri di filtro hive"
      • Hive Database: "valore predefinito"
      • Hive Table: "dipendente"
      • Audit Logging: "Sì"
      • Mask Conditions:
        • Select User: "userone"
        • Access Types: "seleziona" aggiungi/modifica autorizzazioni
        • Row Level Filter: espressione di filtro "eid != 1"

          Fai clic su Aggiungi per salvare il criterio.

    2. Ripeti la query precedente della sessione SSH master della VM sulla 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;"
      

      1. La query restituisce con la colonna del nome mascherata e 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)