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 membuat file konfigurasi YAML kumpulan aturan akun utama terlebih dahulu. Kemudian, jalankan alat migrasi izin dengan file YAML kumpulan aturan akun utama dengan file metadata HDFS atau Ranger untuk membuat file pemetaan akun utama.
- Buat file pemetaan izin target dengan membuat file YAML kumpulan aturan izin terlebih dahulu. Kemudian, jalankan alat migrasi izin dengan file YAML kumpulan aturan 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 memigrasikan izin, pastikan Anda telah melakukan hal berikut:
- Instal alat
dwh-migration-dumper. - Jalankan alat
dwh-migration-dumperuntuk membuat metadata yang diperlukan untuk sumber data Anda.
Anda juga dapat menemukan skrip generator Terraform di file terraform.zip di dalam paket rilis.
Membuat file pemetaan akun utama
File pemetaan akun utama menentukan aturan pemetaan yang memetakan akun utama dari sumber Anda ke Google Cloud akun utama IAM.
Untuk membuat file pemetaan akun utama, Anda harus membuat file YAML kumpulan aturan akun utama secara manual terlebih dahulu untuk menentukan cara akun utama dipetakan dari sumber Anda
ke Google Cloud akun utama IAM. Dalam file YAML kumpulan aturan akun utama, tentukan aturan pemetaan untuk setiap sumber Anda, baik ranger, HDFS, atau keduanya.
Contoh berikut menunjukkan file YAML kumpulan aturan akun utama yang memetakan grup Apache Ranger ke akun layanan di Google Cloud:
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.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 akun utama yang memetakan pengguna HDFS ke pengguna tertentu Google Cloud :
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 kumpulan aturan akun utama, lihat File YAML kumpulan aturan.
Setelah membuat file YAML kumpulan aturan akun utama, upload ke bucket Cloud Storage. Anda juga harus menyertakan file HDFS, file Apache Ranger yang dibuat 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 akun utama.
Contoh berikut menunjukkan cara menjalankan alat migrasi izin untuk bermigrasi dari HDFS dan Apache Ranger, sehingga menghasilkan file pemetaan akun utama 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 dibuat untuk memverifikasi
bahwa file tersebut berisi akun utama dari sumber Anda yang dipetakan ke Google Cloud
akun utama IAM. Anda dapat mengedit file secara manual sebelum langkah berikutnya.
Membuat file izin target
File izin target berisi informasi tentang pemetaan kumpulan 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 kumpulan aturan izin secara manual terlebih dahulu yang menentukan cara izin dari Ranger atau HDFS dipetakan 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 mengganti 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 kumpulan aturan izin, lihat File YAML kumpulan aturan.
Setelah membuat file YAML kumpulan aturan izin, upload ke bucket Cloud Storage. Anda juga harus menyertakan file HDFS, file Apache Ranger yang dibuat 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 akun utama.
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 akun utama bernama principals.yaml, sehingga menghasilkan file pemetaan akun utama 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 dibuat 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 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 Google Cloud.
- Anda telah membuat folder terkelola atau tabel Cloud Storage yang akan menghosting data yang dimigrasikan.
- Pengguna yang menjalankan alat memiliki izin untuk mengelola peran untuk folder terkelola atau tabel 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 baru.
- Buat lingkungan virtual baru dan aktifkan.
Dari direktori
permissions-migration/terraform, instal dependensi dari filerequirements.txtmenggunakan 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.yamlyang dibuat.LOCATION: lokasi bucket Cloud Storage tempat skrip memeriksa dan membuat folder berdasarkan konfigurasi izin.OUTPUT: jalur ke file output,main.tf.
File YAML kumpulan aturan
File YAML kumpulan aturan digunakan untuk memetakan akun utama dan peran saat memigrasikan izin dari HDFS atau Apache Ranger ke Google Cloud. File YAML kumpulan aturan menggunakan Common Expression Language (CEL) untuk menentukan predikat (dengan hasil boolean) dan ekspresi (dengan hasil string).
File YAML kumpulan 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 kumpulan aturan. Misalnya, Anda dapat menggunakan variabel
useruntuk memetakan ke objek pengguna sumber, dan Anda dapat menggunakan variabelgroupuntuk 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
typedari nilai defaultgroupke nilai lain sepertiserviceAccount. - Harus ada setidaknya satu aturan yang cocok dengan setiap objek input.
Dalam migrasi izin HDFS atau Apache Ranger, file YAML kumpulan aturan dapat digunakan untuk menentukan file pemetaan akun utama atau file pemetaan peran.
Aturan pemetaan dalam file YAML kumpulan aturan
File YAML kumpulan aturan 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 mewakili ekspresi CEL boolean. Nilai dapat berupa
trueataufalse - Aturan hanya berlaku jika klausa
whenbernilaitrue - Nilai default adalah
true
- String mewakili ekspresi CEL boolean. Nilai dapat berupa
map: Klausa yang menentukan konten kolom hasil. Nilai untuk klausa ini bergantung pada jenis objek yang diproses dan dapat ditentukan sebagai:expressionuntuk dievaluasi sebagai stringvalueuntuk string konstanta
skip: Menentukan bahwa objek input tidak boleh dipetakan- Dapat berupa
trueataufalse
- Dapat berupa
log: Klausa predikat yang membantu men-debug atau mengembangkan aturan- String mewakili ekspresi CEL boolean. Nilai dapat berupa
trueataufalse - Nilai default adalah
false - Jika ditetapkan ke
true, output akan berisi log eksekusi yang dapat digunakan untuk memantau atau mendiagnosis masalah dalam eksekusi
- String mewakili ekspresi CEL boolean. Nilai dapat berupa
Membuat file YAML kumpulan aturan akun utama
File pemetaan akun utama digunakan untuk membuat akun utama
ID dengan memberikan nilai untuk
email_address dan type.
- Gunakan
email_addressuntuk menentukan email untukakun utama. Google Cloud - Gunakan
typeuntuk menentukan sifat akun utama di Google Cloud. Nilai untuktypedapat berupauser,group, atauserviceAccount.
Setiap ekspresi CEL yang digunakan dalam aturan memiliki akses ke variabel yang mewakili objek yang diproses. Kolom dalam variabel didasarkan pada konten file metadata HDFS atau Apache Ranger. Variabel yang tersedia bergantung pada bagian kumpulan 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 Google 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 akun utama non-default, Anda dapat melewati atau mengubah pemetaan peran default menggunakan file kumpulan aturan.
Contoh berikut menunjukkan cara melewati bagian aturan:
hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
Membuat file YAML kumpulan aturan izin
File YAML kumpulan aturan izin digunakan untuk membuat file pemetaan izin target. Untuk membuat file YAML kumpulan aturan izin, gunakan ekspresi CEL di YAML kumpulan aturan izin 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
wditetapkan, peran defaultnya adalahwriter - Jika bit
rditetapkan, peran defaultnya adalahreader - Jika tidak ada bit yang ditetapkan, peran akan kosong
Ranger HDFS:
- Jika kumpulan akses berisi
write, peran defaultnya adalahwriter - Jika kumpulan akses berisi
read, peran defaultnya adalahreader - Jika kumpulan akses tidak berisi keduanya, peran akan kosong
Ranger:
- Jika kumpulan akses berisi
update,create,drop,alter,index,lock,all,write, ataurefresh, peran defaultnya adalahwriter - Jika kumpulan akses berisi
selectatauread, peran defaultnya adalahreader - Jika kumpulan akses tidak berisi izin sebelumnya, peran akan 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 apa pun dalam file YAML kumpulan aturan:
ranger_hdfs_rules: - map: {}
Mengganti pemetaan peran default
Untuk menggunakan peran non-default, Anda dapat melewati atau mengubah pemetaan peran default menggunakan file kumpulan aturan.
Contoh berikut menunjukkan cara mengganti pemetaan peran default menggunakan klausa peta dengan kolom peran menggunakan klausa nilai:
ranger_hdfs_rules: - map: role: value: "roles/customRole"
Menggabungkan pemetaan izin
Jika beberapa pemetaan izin dibuat untuk resource target yang sama, pemetaan dengan akses terluas akan digunakan. Misalnya, jika aturan HDFS memberikan peran pembaca ke akun utama pa1 di lokasi HDFS, dan aturan Ranger memberikan peran penulis ke akun utama yang sama di lokasi yang sama, peran penulis akan ditetapkan.
Penggunaan tanda kutip string dalam ekspresi CEL
Gunakan tanda kutip "" untuk menggabungkan seluruh ekspresi CEL dalam YAML. Dalam ekspresi
CEL, gunakan tanda kutip tunggal '' untuk mengutip string. Contoh:
"'permissions-migration-' + group.name + '@google.com'"