Utilizza Ranger con Kerberos

I seguenti esempi creano e utilizzano un oggetto Kerberos attivato di un cluster Dataproc con Ranger e Componenti Solr per controllare l'accesso da parte degli utenti alle risorse Hadoop, YARN e HIVE.

Note:

  • Puoi accedere all'interfaccia utente web dei ranger tramite Gateway dei componenti.

  • Dataproc in un cluster Kerberos mappa un utente Kerberos all'utente di sistema eliminando il il realm e l'istanza. Ad esempio, Kerberos principal user1/cluster-m@MY.REALM è mappato al sistema user1 e I criteri dei ranger sono definiti in modo da consentire o negare le autorizzazioni per user1.

  1. Configura la password di amministratore del ranger.

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

  3. Crea il cluster.

    1. 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
      
  4. 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 su Interfacce web per visualizzare un elenco di collegamenti del gateway dei componenti alle interfacce web di componenti predefiniti e facoltativi sul cluster. Fai clic sul link del ranger.

  5. Accedi a Ranger inserendo il nome "admin" nome utente e amministratore ranger password.

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

di Gemini Advanced.

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.

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

  2. Nella pagina Norme di Yarn-dataproc, fai clic su Aggiungi nuova norma. 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 il criterio. Il criterio è elencato Nella pagina Norme di Yarn-dataproc:

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

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

    1. L'interfaccia utente di Ranger mostra che userone è autorizzati a inviare il job.
  4. 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

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

Criterio di accesso HDFS

In questo esempio viene creato un criterio Ranger per consentire e negare agli utenti l'accesso al Directory HDFS /tmp.

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

  2. 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 il criterio. Il criterio è elencato nella pagina Norme di hadoop-dataproc:

  3. Accedi alla directory HDFS /tmp come utenteone:

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

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

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

    1. L'UI di Ranger mostra che A usertwo è stato negato l'accesso alla directory HDFS /tmp.

Criterio di accesso Hive

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

  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 amministratore Ranger.

  3. 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: "predefinita"
    • table: "dipendente"
    • 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 il criterio. Il criterio è elencato nella pagina Criteri hive-dataproc:

  4. Esegui una query dalla sessione SSH del 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 utentetwo:

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

    1. 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"
      

Accesso all'alveare granulare

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

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

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

      • Policy Name: "criterio di mascheramento degli alveari"
      • database: "predefinita"
      • table: "dipendente"
      • Hive Column: "nome"
      • Audit Logging: "Sì"
      • Mask Conditions:
        • Select User: "userone"
        • Access Types: "seleziona" aggiungi/modifica autorizzazioni
        • Select Masking Option: "nullifica"

          Fai clic su Aggiungi per salvare il criterio.

  2. Seleziona hive-dataproc dall'interfaccia utente amministratore Ranger, quindi seleziona Scheda Filtro a livello di riga e fai clic su Aggiungi nuova norma.

    1. Nella pagina Crea criterio, i seguenti campi vengono inseriti o selezionati per creare un criterio righe di filtro (ritorno) dove eid è diverso da 1:

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

          Fai clic su Aggiungi per salvare il criterio.

    2. 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;"
      

      1. La query viene restituita 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)