Memigrasikan izin dari Hadoop
Dokumen ini menjelaskan cara memigrasikan izin dari Apache Hadoop Distributed File System (HDFS), Ranger HDFS, dan Apache Hive ke dalam peran Identity and Access Management (IAM) di Cloud Storage atau BigQuery.
Proses migrasi izin terdiri dari langkah-langkah berikut:
- Buat file pemetaan akun utama dengan terlebih dahulu membuat file konfigurasi YAML set aturan akun utama. Kemudian, jalankan alat migrasi izin dengan file YAML ruleset utama dengan file metadata HDFS atau Ranger untuk membuat file pemetaan utama.
- Buat file pemetaan izin target dengan terlebih dahulu membuat file YAML kumpulan aturan izin. Kemudian, jalankan alat migrasi izin dengan file YAML ruleset izin dan file konfigurasi pemetaan tabel, serta file metadata HDFS atau Ranger, untuk membuat file pemetaan izin target.
- Jalankan alat migrasi izin dengan file izin target untuk menerapkan izin ke Cloud Storage atau BigQuery. Anda juga dapat menggunakan skrip Python yang disediakan untuk membuat file Terraform yang dapat Anda gunakan untuk menerapkan izin sendiri.
Sebelum memulai
Sebelum Anda memigrasikan izin, pastikan Anda telah melakukan hal berikut:
- Instal alat
dwh-migration-dumper
. - Jalankan alat
dwh-migration-dumper
untuk membuat metadata yang diperlukan untuk sumber data Anda.
Anda juga dapat menemukan skrip generator Terraform dalam file terraform.zip
di dalam paket rilis.
Membuat file pemetaan prinsipal
File pemetaan akun utama menentukan aturan pemetaan yang memetakan akun utama dari sumber Anda ke akun utama IAM. Trusted Cloud
Untuk membuat file pemetaan akun utama, Anda harus membuat file YAML set aturan akun utama secara manual terlebih dahulu untuk menentukan cara akun utama dipetakan dari sumber Anda ke akun utama IAM Trusted Cloud . Dalam file YAML set aturan prinsipal, tentukan aturan pemetaan untuk setiap sumber Anda, baik ranger
, HDFS
, atau keduanya.
Contoh berikut menunjukkan file YAML set aturan prinsipal yang memetakan grup Apache Ranger ke akun layanan di Trusted Cloud by S3NS:
ranger: user_rules: - skip: true group_rules: # Skip internal Ranger groups. - skip: true when: "group.groupSource == 0" # Map all roles to Google Cloud Platform service accounts. - map: type: value: serviceAccount email_address: expression: "group.name + 'my-service-account@my-project.s3ns-system.iam.gserviceaccount.com'" role_rules: - skip: true hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
Contoh berikut menunjukkan file YAML kumpulan aturan prinsipal yang memetakan pengguna HDFS ke pengguna Trusted Cloud tertentu:
ranger: user_rules: - skip: true group_rules: - skip: true role_rules: - skip: true hdfs: user_rules: # Skip user named 'example' - when: "user.name == 'example'" skip: true # Map all other users to their name at google.com - when: "true" map: type: value: user email_address: expression: "user.name + '@google.com'" group_rules: - skip: true other_rules: - skip: true
Untuk mengetahui informasi selengkapnya tentang sintaksis untuk membuat file YAML set aturan akun utama, lihat File YAML set aturan.
Setelah membuat file YAML set aturan akun utama, upload file tersebut ke bucket Cloud Storage. Anda juga harus menyertakan file HDFS, file Apache Ranger yang dihasilkan oleh alat dwh-migration-dumper
, atau keduanya, bergantung pada sumber tempat Anda memigrasikan izin. Kemudian, Anda dapat menjalankan alat migrasi izin untuk membuat file pemetaan prinsipal.
Contoh berikut menunjukkan cara menjalankan alat migrasi izin untuk
bermigrasi dari HDFS dan Apache Ranger, sehingga menghasilkan
file pemetaan prinsipal bernama principals.yaml
.
./dwh-permissions-migration expand \ --principal-ruleset gs://MIGRATION_BUCKET/principals-ruleset.yaml \ --hdfs-dumper-output gs://MIGRATION_BUCKET/hdfs-dumper-output.zip \ --ranger-dumper-output gs://MIGRATION_BUCKET/ranger-dumper-output.zip \ --output-principals gs://MIGRATION_BUCKET/principals.yaml
Ganti MIGRATION_BUCKET
dengan nama bucket Cloud Storage yang berisi file migrasi Anda.
Setelah menjalankan alat, periksa file principals.yaml
yang dihasilkan untuk memverifikasi bahwa file tersebut berisi pokok dari sumber Anda yang dipetakan ke pokok IAM. Trusted CloudAnda dapat mengedit file secara manual sebelum langkah berikutnya.
Buat file izin target
File izin target berisi informasi tentang pemetaan set izin sumber yang ditetapkan di cluster Hadoop ke peran IAM untuk folder terkelola BigQuery atau Cloud Storage. Untuk membuat file izin target, Anda harus membuat file YAML set aturan izin secara manual terlebih dahulu yang menentukan cara pemetaan izin dari Ranger atau HDFS ke Cloud Storage atau BigQuery.
Contoh berikut menerima semua izin Ranger ke Cloud Storage:
gcs: ranger_hive_rules: - map: {} log: true
Contoh berikut menerima semua izin HDFS kecuali akun utama hadoop
:
gcs: hdfs_rules: - when: source_principal.name == 'hadoop' skip: true - map: {}
Contoh berikut menggantikan pemetaan peran default untuk tabel tab0
, dan menggunakan default untuk semua izin lainnya
gcs: ranger_hive_rules: ranger_hive_rules: - when: table.name == 'tab0' map: role: value: "roles/customRole" - map: {}
Untuk mengetahui informasi selengkapnya tentang sintaksis untuk membuat file YAML set aturan izin, lihat File YAML set aturan.
Setelah membuat file YAML kumpulan aturan izin, upload file tersebut ke bucket Cloud Storage. Anda juga harus menyertakan file HDFS, file Apache Ranger yang dihasilkan oleh alat dwh-migration-dumper
, atau keduanya, bergantung pada sumber tempat Anda memigrasikan izin. Anda juga harus
menyertakan file YAML konfigurasi tabel dan file pemetaan prinsipal.
Kemudian, Anda dapat menjalankan alat migrasi izin untuk membuat file izin target.
Contoh berikut menunjukkan cara menjalankan alat migrasi izin untuk
bermigrasi dari HDFS dan Apache Ranger, dengan file konfigurasi pemetaan tabel dan file pemetaan prinsipal bernama principals.yaml
,
sehingga menghasilkan file pemetaan prinsipal bernama permissions.yaml
.
./dwh-permissions-migration build \ --permissions-ruleset gs://MIGRATION_BUCKET/permissions-config.yaml \ --tables gs://MIGRATION_BUCKET/tables/ \ --principals gs://MIGRATION_BUCKET/principals.yaml \ --ranger-dumper-output gs://MIGRATION_BUCKET/ranger-dumper-output.zip \ --hdfs-dumper-output gs://MIGRATION_BUCKET/hdfs-dumper-output.zip \ --output-permissions gs://MIGRATION_BUCKET/permissions.yaml
Ganti MIGRATION_BUCKET
dengan nama bucket Cloud Storage yang berisi file migrasi Anda.
Setelah menjalankan alat, periksa file permissions.yaml
yang dihasilkan untuk memverifikasi
bahwa file tersebut berisi izin dari sumber Anda yang dipetakan ke binding IAM Cloud Storage atau BigQuery. Anda dapat mengeditnya secara manual
sebelum melanjutkan ke langkah berikutnya.
Menerapkan izin
Setelah membuat file izin target, Anda dapat menjalankan alat migrasi izin untuk menerapkan izin IAM ke Cloud Storage atau BigQuery.
Sebelum menjalankan alat migrasi izin, pastikan Anda telah memenuhi prasyarat berikut:
- Anda telah membuat akun utama (pengguna, grup, akun layanan) yang diperlukan di Trusted Cloud.
- Anda telah membuat folder atau tabel terkelola Cloud Storage yang akan menghosting data yang dimigrasikan.
- Pengguna yang menjalankan alat ini memiliki izin untuk mengelola peran bagi folder atau tabel terkelola Cloud Storage.
Anda dapat menerapkan izin dengan menjalankan perintah berikut:
./dwh-permissions-migration apply \ --permissions gs://MIGRATION_BUCKET/permissions.yaml
Dengan MIGRATION_BUCKET
adalah nama bucket Cloud Storage yang berisi file migrasi Anda.
Menerapkan izin sebagai konfigurasi Terraform
Untuk menerapkan izin yang dimigrasikan, Anda juga dapat mengonversi file izin target menjadi konfigurasi Infrastructure-as-Code (IaC) Terraform dan menerapkannya ke Cloud Storage.
- Pastikan Anda memiliki Python 3.7 atau yang lebih tinggi.
- Buat lingkungan virtual baru dan aktifkan.
Dari direktori
permissions-migration/terraform
, instal dependensi dari filerequirements.txt
menggunakan perintah berikut:python -m pip install -r requirements.txt
Jalankan perintah generator:
python tf_generator PATH LOCATION OUTPUT
Ganti kode berikut:
PATH
: jalur ke filepermissions.yaml
yang dihasilkan.LOCATION
: lokasi bucket Cloud Storage Anda tempat skrip memeriksa dan membuat folder berdasarkan konfigurasi izin.OUTPUT
: jalur ke file output,main.tf
.
File YAML ruleset
File YAML ruleset digunakan untuk memetakan akun utama dan peran saat memigrasikan izin dari HDFS atau Apache Ranger ke Trusted Cloud. File YAML set aturan menggunakan Common Expression Language (CEL) untuk menentukan predikat (dengan hasil boolean) dan ekspresi (dengan hasil string).
File YAML set aturan memiliki karakteristik berikut:
- Aturan pemetaan setiap jenis dieksekusi secara berurutan dari atas ke bawah untuk setiap objek input.
- Ekspresi CEL memiliki akses ke variabel konteks, dan variabel konteks bergantung
pada bagian set aturan. Misalnya, Anda dapat menggunakan variabel
user
untuk memetakan ke objek pengguna sumber, dan Anda dapat menggunakan variabelgroup
untuk memetakan ke grup. - Anda dapat menggunakan ekspresi CEL atau menggunakan nilai statis untuk mengubah nilai default. Misalnya, saat memetakan grup, Anda dapat mengganti nilai output
type
dari nilai defaultgroup
ke nilai lain sepertiserviceAccount
. - Harus ada minimal satu aturan yang cocok dengan setiap objek input.
Dalam migrasi izin HDFS atau Apache Ranger, file YAML set aturan dapat digunakan untuk menentukan file pemetaan akun utama atau file pemetaan peran.
Memetakan aturan dalam file YAML set aturan
File YAML ruleset terdiri dari aturan pemetaan yang menentukan cara objek cocok dari sumber ke target Anda selama migrasi izin. Aturan pemetaan dapat berisi bagian atau klausa berikut:
when
: Klausa predikat yang membatasi penerapan aturan- String merepresentasikan ekspresi CEL boolean. Nilai dapat berupa
true
ataufalse
- Aturan hanya berlaku jika klausa
when
dievaluasi ketrue
- Nilai defaultnya adalah
true
- String merepresentasikan ekspresi CEL boolean. Nilai dapat berupa
map
: Klausa yang menentukan isi kolom hasil. Nilai untuk klausa ini bergantung pada jenis objek yang diproses dan dapat ditentukan sebagai:expression
untuk dievaluasi sebagai stringvalue
untuk string konstanta
skip
: Menentukan bahwa objek input tidak boleh dipetakan- Dapat berupa
true
ataufalse
- Dapat berupa
log
: Klausa predikat yang membantu men-debug atau mengembangkan aturan- String merepresentasikan ekspresi CEL boolean. Nilai dapat berupa
true
ataufalse
- Nilai defaultnya adalah
false
- Jika disetel ke
true
, output akan berisi log eksekusi yang dapat digunakan untuk memantau atau mendiagnosis masalah dalam eksekusi
- String merepresentasikan ekspresi CEL boolean. Nilai dapat berupa
Membuat file YAML set aturan prinsipal
File pemetaan prinsipal digunakan untuk membuat ID
prinsipal dengan memberikan nilai untuk
email_address
dan type
.
- Gunakan
email_address
untuk menentukan email untuk akun utama Trusted Cloud . - Gunakan
type
untuk menentukan sifat akun utama di Trusted Cloud. Nilai untuktype
dapat berupauser
,group
, atauserviceAccount
.
Setiap ekspresi CEL yang digunakan dalam aturan memiliki akses ke variabel yang merepresentasikan objek yang diproses. Kolom dalam variabel didasarkan pada konten file metadata HDFS atau Apache Ranger. Variabel yang tersedia bergantung pada bagian set aturan:
- Untuk
user_rules
, gunakan variabeluser
- Untuk
group_rules
, gunakan variabelgroup
- Untuk
other_rules
, gunakan variabelother
- Untuk
role_rules
, gunakan variabelrole
Contoh berikut memetakan pengguna dari HDFS ke pengguna di Trusted Cloud
dengan nama pengguna mereka, diikuti dengan @google.com
sebagai alamat email mereka:
hdfs: user_rules: # Skip user named 'example' - when: "user.name == 'example'" skip: true # Map all other users to their name at google.com - when: "true" map: type: value: user email_address: expression: "user.name + '@google.com'"
Mengganti pemetaan peran default
Untuk menggunakan prinsipal non-default, Anda dapat melewati atau mengubah pemetaan peran default menggunakan file set aturan.
Contoh berikut menunjukkan cara melewati bagian aturan:
hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
Membuat file YAML set aturan izin
File YAML set aturan izin digunakan untuk membuat file pemetaan izin target. Untuk membuat file YAML set aturan izin, gunakan ekspresi CEL dalam YAML set aturan izin Anda untuk memetakan izin HDFS atau Apache Ranger ke peran Cloud Storage atau BigQuery.
Pemetaan peran default
Peran file HDFS ditentukan oleh izin file sumber:
- Jika bit
w
ditetapkan, peran defaultnya adalahwriter
- Jika bit
r
ditetapkan, peran defaultnya adalahreader
- Jika kedua bit tidak disetel, peran akan kosong
Ranger HDFS:
- Jika set akses berisi
write
, maka peran defaultnya adalahwriter
- Jika set akses berisi
read
, maka peran defaultnya adalahreader
- Jika set akses tidak berisi keduanya, peran akan kosong
Ranger:
- Jika set akses berisi
update
,create
,drop
,alter
,index
,lock
,all
,write
, ataurefresh
, maka peran defaultnya adalahwriter
- Jika set akses berisi
select
atauread
, maka peran defaultnya adalahreader
- Jika set akses tidak berisi izin sebelumnya, maka peran tersebut kosong
Cloud Storage:
roles/storage.objectUser
- Penulisroles/storage.objectViewer
- Pembaca
BigQuery:
roles/bigquery.dataOwner
- Penulisroles/bigquery.dataViewer
- Pembaca
Contoh berikut menunjukkan cara menerima pemetaan default tanpa perubahan dalam file YAML ruleset:
ranger_hdfs_rules: - map: {}
Mengganti pemetaan peran default
Untuk menggunakan peran non-default, Anda dapat melewati atau mengubah pemetaan peran default menggunakan file ruleset.
Contoh berikut menunjukkan cara mengganti pemetaan peran default menggunakan klausa peta dengan kolom peran menggunakan penyebab nilai:
ranger_hdfs_rules: - map: role: value: "roles/customRole"
Menggabungkan pemetaan izin
Jika beberapa pemetaan izin dibuat untuk resource yang sama yang ditargetkan, pemetaan dengan akses terluas akan digunakan. Misalnya, jika aturan HDFS memberikan peran pembaca kepada akun utama pa1
di lokasi HDFS, dan aturan Ranger memberikan peran penulis kepada akun utama yang sama di lokasi yang sama, maka peran penulis akan ditetapkan.
Kutipan string dalam ekspresi CEL
Gunakan tanda petik ""
untuk membungkus seluruh ekspresi CEL dalam YAML. Dalam ekspresi
CEL, gunakan tanda kutip tunggal ''
untuk mengutip string. Contoh:
"'permissions-migration-' + group.name + '@google.com'"