Contoh berikut membuat dan menggunakan komponen Kerberos yang diaktifkan Cluster Dataproc dengan Ranger dan Solr komponen untuk mengontrol akses oleh pengguna ke resource Hadoop, YARN.
Catatan:
UI Ranger Web dapat diakses melalui Gateway Komponen.
Di Ranger dengan cluster Kerberos, Dataproc memetakan pengguna Kerberos ke pengguna sistem dengan menghapus realm dan instance pengguna Kerberos. Misalnya,
user1/cluster-m@MY.REALM
utama Kerberos dipetakan keuser1
sistem, dan kebijakan Ranger ditentukan untuk mengizinkan atau menolak izin bagiuser1
.
Buat cluster.
- Perintah
gcloud
berikut dapat dijalankan di jendela terminal lokal atau dari Cloud Shell project.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
- Perintah
Setelah cluster berjalan, buka halaman Clusters Dataproc di Konsol Google Cloud, lalu pilih nama cluster untuk membuka halaman Detail cluster. Klik tab Web Interfaces untuk menampilkan daftar link Gateway Komponen ke antarmuka web komponen default dan opsional yang diinstal pada cluster. Klik link Penjaga Penjaga.
Login ke Ranger dengan memasukkan nama pengguna "admin" dan sandi admin Ranger.
UI admin Ranger akan terbuka di browser lokal.
Kebijakan akses YARN
Contoh ini membuat kebijakan Ranger untuk mengizinkan dan menolak akses pengguna ke antrean root.default YARN.
Pilih
yarn-dataproc
dari UI Ranger Admin.Di halaman kebijakan yarn-dataproc, klik Tambahkan Kebijakan Baru. Di halaman Create Policy, kolom berikut dimasukkan atau dipilih:
Policy Name
: "kebijakan-yarn-1"Queue
: "root.default"Audit Logging
: "Ya"Allow Conditions
:Select User
: "userone"Permissions
: "Pilih Semua" untuk memberikan semua izin
Deny Conditions
:Select User
: "usertwo"Permissions
: "Pilih Semua" untuk menolak semua izin
Klik Add untuk menyimpan kebijakan. Kebijakan ini tercantum di halaman Kebijakan yarn-dataproc:
Jalankan tugas mapReduce Hadoop di jendela sesi SSH master sebagai userone:
userone@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- UI Ranger menunjukkan bahwa
userone
diizinkan untuk mengirimkan tugas.
- UI Ranger menunjukkan bahwa
Jalankan tugas mapReduce Hadoop dari jendela sesi SSH master VM sebagai
usertwo
:usertwo@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- UI Ranger menunjukkan bahwa akses
usertwo
ditolak untuk mengirimkan tugas.
- UI Ranger menunjukkan bahwa akses
Kebijakan akses HDFS
Contoh ini membuat kebijakan Ranger untuk mengizinkan dan menolak akses pengguna ke direktori /tmp
HDFS.
Pilih
hadoop-dataproc
dari UI Ranger Admin.Di halaman Kebijakan hadoop-dataproc, klik Tambahkan Kebijakan Baru. Di halaman Create Policy, kolom berikut dimasukkan atau dipilih:
Policy Name
: "kebijakan-hadoop-1"Resource Path
: "/tmp"Audit Logging
: "Ya"Allow Conditions
:Select User
: "userone"Permissions
: "Pilih Semua" untuk memberikan semua izin
Deny Conditions
:Select User
: "usertwo"Permissions
: "Pilih Semua" untuk menolak semua izin
Klik Add untuk menyimpan kebijakan. Kebijakan ini tercantum di halaman Kebijakan hadoop-dataproc:
Akses direktori
/tmp
HDFS sebagai userone:userone@example-cluster-m:~$ hadoop fs -ls /tmp
- UI Ranger menunjukkan bahwa
userone
diizinkan mengakses direktori HDFS /tmp.
- UI Ranger menunjukkan bahwa
Akses direktori
/tmp
HDFS sebagaiusertwo
:usertwo@example-cluster-m:~$ hadoop fs -ls /tmp
- UI Ranger menunjukkan bahwa
usertwo
ditolak aksesnya ke direktori HDFS /tmp.
- UI Ranger menunjukkan bahwa
Kebijakan akses Hive
Contoh ini membuat kebijakan Ranger untuk mengizinkan dan menolak akses pengguna ke tabel Hive.
Buat tabel
employee
kecil menggunakan CLI hive pada instance master.hive> CREATE TABLE IF NOT EXISTS employee (eid int, name String); INSERT INTO employee VALUES (1 , 'bob') , (2 , 'alice'), (3 , 'john');
Pilih
hive-dataproc
dari UI Ranger Admin.Di halaman hive-dataproc Policies, klik Add New Policy. Di halaman Create Policy, kolom berikut dimasukkan atau dipilih:
Policy Name
: "kebijakan-hive-1"database
: "default"table
: "karyawan"Hive Column
: "*"Audit Logging
: "Ya"Allow Conditions
:Select User
: "userone"Permissions
: "Pilih Semua" untuk memberikan semua izin
Deny Conditions
:Select User
: "usertwo"Permissions
: "Pilih Semua" untuk menolak semua izin
Klik Add untuk menyimpan kebijakan. Kebijakan ini tercantum di halaman Kebijakan Hive-dataproc:
Jalankan kueri dari sesi SSH master VM terhadap tabel karyawan Hive sebagai userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- Kueri userone berhasil:
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)
- Kueri userone berhasil:
Jalankan kueri dari sesi SSH master VM terhadap tabel karyawan Hive sebagai usertwo:
usertwo@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- usertwo ditolak akses ke tabel:
Error: Could not open client transport with JDBC Uri: ... Permission denied: user=usertwo, access=EXECUTE, inode="/tmp/hive"
- usertwo ditolak akses ke tabel:
Akses Jalur Halus
Ranger mendukung Masking dan Filter Level Baris di Hive. Contoh ini dibuat berdasarkan hive-policy-1
sebelumnya dengan menambahkan kebijakan masking dan filter.
Pilih
hive-dataproc
dari UI Ranger Admin, lalu pilih tab Masking dan klik Add New Policy.Di halaman Create Policy, kolom berikut dimasukkan atau dipilih untuk membuat kebijakan guna menyamarkan (nullify) kolom nama karyawan:
Policy Name
: "kebijakan penyamaran sarang"database
: "default"table
: "karyawan"Hive Column
: "nama"Audit Logging
: "Ya"Mask Conditions
:Select User
: "userone"Access Types
: "pilih" izin tambahkan/editSelect Masking Option
: "nullify"Klik Add untuk menyimpan kebijakan.
Pilih
hive-dataproc
dari UI Ranger Admin, lalu pilih tab Row Level Filter dan klik Add New Policy.Di halaman Create Policy, kolom berikut dimasukkan atau dipilih untuk membuat kebijakan guna memfilter (menampilkan) baris dengan
eid
yang tidak sama dengan1
:Policy Name
: "kebijakan filter sarang"Hive Database
: "default"Hive Table
: "karyawan"Audit Logging
: "Ya"Mask Conditions
:Select User
: "userone"Access Types
: "pilih" izin tambahkan/editRow Level Filter
: Ekspresi filter "eid != 1"Klik Add untuk menyimpan kebijakan.
Ulangi kueri sebelumnya dari sesi SSH master VM terhadap tabel karyawan Hive sebagai userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- Kueri menampilkan kolom nama yang disamarkan dan bob (eid=1) difilter dari hasil:
Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 2 | NULL | | 3 | NULL | +---------------+----------------+ 2 rows selected (0.47 seconds)
- Kueri menampilkan kolom nama yang disamarkan dan bob (eid=1) difilter dari hasil: