Topik ini menjelaskan cara memberikan akses ke fungsi yang ditentukan pengguna (UDF) tertentu hanya kepada pengguna tertentu. Praktik terbaik ini berkaitan dengan keamanan data karena melibatkan algoritma enkripsi dan dekripsi data.
Prasyarat
Klien MaxCompute telah diinstal. Untuk informasi lebih lanjut, lihat Klien MaxCompute (odpscmd).
Informasi latar belakang
Secara umum, Anda dapat menggunakan salah satu metode berikut untuk mengontrol izin akses pengguna:
Buat paket untuk menyertakan semua objek dalam ruang kerja yang diperlukan oleh ruang kerja target lainnya, dan otorisasi penggunaan paket di ruang kerja target.
Metode ini cocok untuk skenario di mana Anda ingin mengotorisasi akses bersama ke sumber daya lintas ruang kerja. Namun, setelah memberikan akses ke paket kepada pengguna dengan peran pengembang, pengguna tersebut memiliki izin penuh atas semua objek dalam paket. Hal ini dapat menimbulkan risiko yang tidak terkendali. Untuk informasi lebih lanjut, lihat Akses Sumber Daya Lintas Proyek Berdasarkan Paket.
Gambar berikut menunjukkan izin yang dimiliki peran pengembang pada ruang kerja DataWorks.

Seperti yang ditunjukkan pada gambar di atas, peran pengembang memiliki izin penuh atas semua paket, fungsi, sumber daya, dan tabel dalam ruang kerja secara default. Hal ini tidak memenuhi persyaratan manajemen izin.
Gambar berikut menunjukkan izin yang dimiliki Pengguna Resource Access Management (RAM) pada ruang kerja DataWorks setelah Pengguna RAM diberi peran pengembang.

Mengingat hal di atas, Anda tidak dapat secara tepat memberikan akses ke UDF tertentu kepada pengguna tertentu dengan menggunakan otorisasi berbasis paket atau dengan menetapkan peran default DataWorks kepada pengguna. Sebagai contoh, jika Anda menetapkan peran pengembang kepada Pengguna RAM
RAM$xxxxx.pt@example.com:ramtest, Pengguna RAM tersebut memiliki izin penuh atas semua objek dalam ruang kerja saat ini. Untuk informasi lebih lanjut, lihat Otorisasi Pengguna.Buat peran di konsol DataWorks untuk kontrol izin.
Masuk ke konsol DataWorks. Di panel navigasi sebelah kiri, klik Ruang Kerja. Pada halaman yang muncul, temukan ruang kerja target dan klik Analitik Data di kolom Tindakan. Pada halaman DataStudio yang muncul, klik ikon di pojok kanan atas. Pada halaman yang muncul, klik MaxCompute Management di panel navigasi sebelah kiri dan kemudian Custom User Roles. Pada halaman Peran Pengguna Kustom yang muncul, klik Buat Peran untuk membuat peran untuk kontrol izin. Metode ini, bagaimanapun, hanya dapat memberikan izin pada tabel atau ruang kerja, tetapi tidak pada UDF tertentu.
Gunakan kebijakan peran dan kebijakan proyek untuk memberikan akses ke UDF tertentu hanya kepada pengguna tertentu.
Kebijakan peran dan proyek memungkinkan Anda memberikan izin tertentu pada sumber daya tertentu kepada pengguna tertentu.
nullUntuk tujuan keamanan, kami sarankan Anda menerapkan kebijakan peran dan proyek di ruang kerja uji jika Anda adalah pemula DataWorks.
Secara keseluruhan, Anda dapat menggunakan kebijakan peran dan kebijakan proyek untuk memberikan akses ke UDF tertentu hanya kepada pengguna tertentu.
Untuk melarang pengguna mengakses sumber daya tertentu dalam ruang kerja, ikuti langkah-langkah berikut: Tetapkan peran pengembang kepada pengguna dan konfigurasikan kebijakan peran untuk menolak permintaan pengguna untuk mengakses sumber daya pada klien MaxCompute.
Untuk mengizinkan salah satu dari pengguna yang dilarang ini mengakses sumber daya, konfigurasikan kebijakan proyek untuk mengizinkan permintaan pengguna untuk mengakses sumber daya pada klien MaxCompute.
Prosedur
Buat peran yang secara default ditolak akses ke UDF bernama getregion.
Pada klien MaxCompute, jalankan perintah berikut untuk membuat peran denyudfrole:
create role denyudfrole;Buat file kebijakan peran dengan konten berikut:
{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": ["odps:Read","odps:List"], "Resource": "acs:odps:*:projects/sz_mc/resources/getaddr.jar" }, { "Effect": "Deny", "Action": ["odps:Read","odps:List"], "Resource": "acs:odps:*:projects/sz_mc/registration/functions/getregion" } ] }Pada klien MaxCompute, atur jalur penyimpanan untuk file kebijakan peran.
Jalankan perintah berikut:
put policy /Users/yangyi/Desktop/role_policy.json on role denyudfrole;Pada klien MaxCompute, jalankan perintah berikut untuk memeriksa kebijakan peran:
get policy on role denyudfrole;Gambar berikut menunjukkan keluaran perintah.

Pada klien MaxCompute, jalankan perintah berikut untuk menetapkan peran denyudfrole kepada Pengguna RAM dengan peran pengembang:
grant denyudfrole to RAM$xxxx.pt@example.com:ramtest;
Verifikasi bahwa peran denyudfrole telah dibuat.
Masuk ke klien MaxCompute sebagai Pengguna RAM yang diberi peran denyudfrole. Kemudian, jalankan perintah
whoami;untuk memeriksa pengguna yang sedang masuk.
Jalankan perintah
show grants;untuk memeriksa izin pengguna yang sedang masuk.
Keluaran perintah menunjukkan bahwa Pengguna RAM memiliki dua peran: role_project_dev dan denyudfrole. role_project_dev adalah peran pengembang default dalam ruang kerja DataWorks.
Periksa izin Pengguna RAM pada UDF getregion dan paket dependennya.

Keluaran perintah menunjukkan bahwa Pengguna RAM dengan peran pengembang dalam ruang kerja DataWorks tidak memiliki izin baca pada UDF getregion. Untuk memberikan akses ke UDF getregion hanya kepada Pengguna RAM, Anda perlu mengonfigurasi kebijakan proyek lebih lanjut.
Konfigurasikan kebijakan proyek.
Buat file kebijakan proyek dengan konten berikut:
{ "Version": "1", "Statement": [{ "Effect":"Allow", "Principal":"RAM$yangyi.pt@example.com:yangyitest", "Action":["odps:Read","odps:List","odps:Select"], "Resource":"acs:odps:*:projects/sz_mc/resources/getaddr.jar" }, { "Effect":"Allow", "Principal":"RAM$xxxx.pt@example.com:yangyitest", "Action":["odps:Read","odps:List","odps:Select"], "Resource":"acs:odps:*:projects/sz_mc/registration/functions/getregion" }] }Pada klien MaxCompute, atur jalur penyimpanan untuk file kebijakan proyek.
Jalankan perintah berikut:
put policy /Users/yangyi/Desktop/project_policy.json;Pada klien MaxCompute, jalankan perintah berikut untuk memeriksa kebijakan proyek:
get policy;Gambar berikut menunjukkan keluaran perintah.

Jalankan perintah
whoami;untuk memeriksa pengguna yang sedang masuk. Kemudian, jalankan perintahshow grants;untuk memeriksa izin pengguna.
Jalankan node SQL dan periksa apakah hanya Pengguna RAM yang ditentukan yang dapat mengakses UDF tertentu dan paket dependennya.
Keluaran perintah berikut menunjukkan bahwa Pengguna RAM yang ditentukan dapat mengakses UDF tertentu.

Keluaran perintah berikut menunjukkan bahwa Pengguna RAM yang ditentukan dapat mengakses paket dependen UDF.
