Jika seorang pengguna diberi peran bawaan di MaxCompute, pengguna tersebut memiliki izin dari peran tersebut. Sebagai contoh, jika seorang pengguna diberi peran Development, mereka akan memiliki izin operasi pada tabel dan sumber daya. Dalam skenario bisnis nyata, Anda mungkin perlu mengelola izin operasi pengguna secara lebih rinci, seperti melarang pengguna menghapus tabel penting. Topik ini menjelaskan cara melakukan manajemen izin berbasis kebijakan untuk pengguna yang diberi peran bawaan.
Prasyarat
Klien MaxCompute harus sudah terinstal. Untuk informasi lebih lanjut, lihat Instal dan Konfigurasikan Klien MaxCompute.
Informasi latar belakang
Jika seorang pengguna diberi peran bawaan dan Anda ingin mengelola izin pengguna tersebut secara lebih rinci, disarankan menggunakan mekanisme manajemen izin berbasis kebijakan daripada mekanisme daftar kontrol akses (ACL). Untuk informasi lebih lanjut tentang peran bawaan, lihat Pengguna dan Peran. Untuk informasi lebih lanjut tentang mekanisme manajemen izin berbasis kebijakan, lihat Kontrol Akses dan Kontrol Unduhan Berbasis Kebijakan.
Mekanisme kontrol akses berbasis kebijakan digunakan untuk mengelola izin berdasarkan peran. Mekanisme ini memungkinkan Anda memberikan atau mencabut izin operasi pada objek Proyek, seperti tabel, untuk peran. Operasi termasuk operasi baca dan tulis. Setelah Anda menetapkan peran kepada pengguna, izin yang diberikan atau dicabut dari peran juga berlaku untuk pengguna tersebut. Untuk informasi lebih lanjut tentang sintaks GRANT dan REVOKE, lihat Kontrol Akses dan Kontrol Unduhan Berbasis Kebijakan.
Berikan izin menggunakan mekanisme kontrol akses berbasis kebijakan
Dalam contoh berikut, pengguna RAM Alice diberi peran Development dari proyek MaxCompute. Anda perlu melarang pengguna RAM Alice menghapus semua tabel yang namanya dimulai dengan tb_. Pengguna RAM Alice termasuk dalam akun Alibaba Cloud Bo*@aliyun.com.
Operasi ini hanya dapat dilakukan oleh pemilik proyek atau pengguna yang diberi peran Super_Administrator atau Admin.
Eksekusi pernyataan
CREATE ROLEuntuk membuat peran bernama delete_test.Contoh pernyataan:
CREATE ROLE delete_test;Untuk informasi lebih lanjut tentang cara membuat peran, lihat Perencanaan Peran.
Eksekusi pernyataan
GRANTuntuk memberikan peran delete_test izin yang melarang peran tersebut menghapus semua tabel yang namanya dimulai dengan tb_.Contoh pernyataan:
GRANT DROP ON TABLE tb_* TO ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");Untuk informasi lebih lanjut tentang sintaks GRANT, lihat bagian "Kontrol Akses Berbasis Kebijakan Menggunakan Pernyataan GRANT" dalam Kontrol Akses dan Kontrol Unduhan Berbasis Kebijakan.
Eksekusi pernyataan
GRANTuntuk menetapkan peran delete_test kepada pengguna RAM Alice.Contoh pernyataan:
GRANT delete_test TO ram$bo*@aliyun.com:Alice;Jika Anda tidak tahu akun Alibaba Cloud tempat pengguna RAM tersebut berada, Anda dapat mengeksekusi pernyataan
LIST USERS;pada klien MaxCompute untuk mendapatkan akun tersebut. Untuk informasi lebih lanjut tentang cara menetapkan peran kepada pengguna, lihat Perencanaan Peran.Eksekusi pernyataan
SHOW GRANTSuntuk melihat izin pengguna RAM Alice.Contoh pernyataan:
SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;Hasil berikut dikembalikan:
[roles] role_project_admin, delete_test -- Alice diberi peran delete_test. Authorization Type: Policy -- Metode otorisasi adalah Policy. [role/delete_test] D projects/mcproject_name/tables/tb_*: Drop -- Alice tidak diizinkan menghapus tabel yang namanya dimulai dengan tb_ di proyek. D menunjukkan Tolak. [role/role_project_admin] A projects/mcproject_name: * A projects/mcproject_name/instances/*: * A projects/mcproject_name/jobs/*: * A projects/mcproject_name/offlinemodels/*: * A projects/mcproject_name/packages/*: * A projects/mcproject_name/registration/functions/*: * A projects/mcproject_name/resources/*: * A projects/mcproject_name/tables/*: * A projects/mcproject_name/volumes/*: * Authorization Type: ObjectCreator AG projects/mcproject_name/tables/local_test: All AG projects/mcproject_name/tables/mr_multiinout_out1: All AG projects/mcproject_name/tables/mr_multiinout_out2: All AG projects/mcproject_name/tables/ramtest: All AG projects/mcproject_name/tables/wc_in: All AG projects/mcproject_name/tables/wc_in1: All AG projects/mcproject_name/tables/wc_in2: All AG projects/mcproject_name/tables/wc_out: AllUntuk informasi lebih lanjut tentang cara melihat izin pengguna, lihat Kueri Izin Menggunakan SQL MaxCompute.
Masuk ke klien MaxCompute sebagai Alice dan eksekusi pernyataan
DROP TABLEuntuk menghapus tabel yang namanya dimulai dengan tb_.Contoh pernyataan:
DROP TABLE tb_test;Hasil berikut dikembalikan. Hasil tersebut menunjukkan bahwa izin telah berlaku. Jika tabel dihapus, izin tidak berlaku. Dalam hal ini, Anda harus memeriksa apakah langkah-langkah sebelumnya dilakukan dengan benar.
FAILED: Catalog Service Failed, ErrorCode: 50, Error Message: ODPS-0130013:Authorization exception - Authorization Failed [4011], You have NO privilege 'odps:Drop' on {acs:odps:*:projects/mcproject_name/tables/tb_test}. Explicitly denied by policy. Context ID:85efa8e9-40da-4660-bbfd-b503dfa64c0a. --->Tips: Pricipal:RAM$bo*@aliyun.com:Alice; Deny by policy
Cabut izin menggunakan mekanisme kontrol akses berbasis kebijakan
Pengguna RAM Alice tidak diizinkan menghapus tabel yang namanya dimulai dengan tb_, seperti yang dijelaskan dalam Memberikan Izin Menggunakan Mekanisme Kontrol Akses Berbasis Kebijakan. Jika tabel tersebut tidak lagi diperlukan dan Anda ingin mengizinkan pengguna RAM Alice menghapus tabel, Anda dapat mencabut izin terkait dari pengguna RAM Alice.
Operasi ini hanya dapat dilakukan oleh pemilik proyek atau pengguna yang diberi peran Super_Administrator atau Admin. Anda dapat menggunakan salah satu metode berikut untuk mencabut izin dari pengguna RAM Alice sesuai dengan kebutuhan bisnis Anda.
Cabut Izin yang Diberikan kepada Peran dan Pertahankan Peran Tersebut
Lakukan langkah-langkah berikut:
Eksekusi pernyataan
REVOKEuntuk mencabut izin yang diberikan kepada peran delete_test. Dengan cara ini, peran delete_test diizinkan menghapus tabel yang namanya dimulai dengan tb_.Contoh pernyataan:
REVOKE DROP ON TABLE tb_* FROM ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");Untuk informasi lebih lanjut tentang sintaks REVOKE, lihat bagian "Kontrol Akses Berbasis Kebijakan Menggunakan Pernyataan GRANT" dalam Kontrol Akses dan Kontrol Unduhan Berbasis Kebijakan.
Eksekusi pernyataan
SHOW GRANTSuntuk melihat izin pengguna RAM Alice. Contoh pernyataan:SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;Hasil berikut dikembalikan:
[roles] role_project_admin, delete_test -- Peran delete_test dipertahankan. Authorization Type: Policy -- Izin dicabut. [role/role_project_admin] A projects/mcproject_name: * A projects/mcproject_name/instances/*: * A projects/mcproject_name/jobs/*: * A projects/mcproject_name/offlinemodels/*: * A projects/mcproject_name/packages/*: * A projects/mcproject_name/registration/functions/*: * A projects/mcproject_name/resources/*: * A projects/mcproject_name/tables/*: * A projects/mcproject_name/volumes/*: * Authorization Type: ObjectCreator AG projects/mcproject_name/tables/local_test: All AG projects/mcproject_name/tables/mr_multiinout_out1: All AG projects/mcproject_name/tables/mr_multiinout_out2: All AG projects/mcproject_name/tables/ramtest: All AG projects/mcproject_name/tables/tb_test: All AG projects/mcproject_name/tables/wc_in: All AG projects/mcproject_name/tables/wc_in1: All AG projects/mcproject_name/tables/wc_in2: All AG projects/mcproject_name/tables/wc_out: AllUntuk informasi lebih lanjut tentang cara melihat izin pengguna, lihat Kueri Izin Menggunakan SQL MaxCompute.
Masuk ke klien MaxCompute sebagai Alice dan eksekusi pernyataan
DROP TABLEuntuk menghapus tabel yang namanya dimulai dengan tb_.Contoh pernyataan:
DROP TABLE tb_test;Jika OK dikembalikan, izin telah dicabut.
Cabut Peran dari Pengguna dan Hapus Peran Jika Diperlukan
Lakukan langkah-langkah berikut:
Eksekusi pernyataan
REVOKEuntuk mencabut peran delete_test dari Alice.Contoh pernyataan:
REVOKE delete_test FROM ram$bo*@aliyun.com:Alice;Untuk informasi lebih lanjut tentang cara mencabut peran dari pengguna, lihat Perencanaan Peran.
Eksekusi pernyataan
SHOW GRANTSuntuk melihat izin pengguna RAM Alice. Contoh pernyataan:SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;Hasil berikut dikembalikan:
[roles] role_project_admin -- Peran delete_test dicabut. Authorization Type: Policy [role/role_project_admin] A projects/mcproject_name: * A projects/mcproject_name/instances/*: * A projects/mcproject_name/jobs/*: * A projects/mcproject_name/offlinemodels/*: * A projects/mcproject_name/packages/*: * A projects/mcproject_name/registration/functions/*: * A projects/mcproject_name/resources/*: * A projects/mcproject_name/tables/*: * A projects/mcproject_name/volumes/*: * Authorization Type: ObjectCreator AG projects/mcproject_name/tables/local_test: All AG projects/mcproject_name/tables/mr_multiinout_out1: All AG projects/mcproject_name/tables/mr_multiinout_out2: All AG projects/mcproject_name/tables/ramtest: All AG projects/mcproject_name/tables/wc_in: All AG projects/mcproject_name/tables/wc_in1: All AG projects/mcproject_name/tables/wc_in2: All AG projects/mcproject_name/tables/wc_out: AllMasuk ke klien MaxCompute sebagai Alice dan eksekusi pernyataan
DROP TABLEuntuk menghapus tabel yang namanya dimulai dengan tb_.Contoh pernyataan:
DROP TABLE tb_test;Jika OK dikembalikan, izin telah dicabut.
Opsional. Eksekusi pernyataan
DROP ROLEuntuk menghapus peran delete_test.Contoh pernyataan:
DROP ROLE delete_test;Jika OK dikembalikan, peran telah dihapus. Untuk informasi lebih lanjut tentang cara menghapus peran, lihat Perencanaan Peran.