Jika ingin memberikan izin yang sama kepada beberapa pengguna dalam proyek MaxCompute, Anda dapat membuat peran, memberikan izin kepada peran tersebut, lalu menyambungkan peran tersebut ke pengguna. Pengguna tersebut kemudian mewarisi izin dari peran tersebut. Topik ini menjelaskan sintaks otorisasi peran tingkat proyek dan menyediakan contoh.
Skenario otorisasi peran
MaxCompute mendukung skenario otorisasi peran yang dijelaskan dalam tabel berikut. Setelah memberikan izin kepada suatu peran, Anda dapat menyambungkan peran tersebut ke pengguna. Jika suatu pengguna tidak lagi memerlukan izin tersebut, Anda dapat memutuskan peran tersebut dari pengguna.
Skenario otorisasi peran | Metode otorisasi | Pemberi Otorisasi | Entri otorisasi |
| Untuk informasi selengkapnya, lihat kolom Pemberi otorisasi yang didukung dalam topik Izin. | ||
Memberikan izin untuk mengakses data sensitivitas tinggi kepada peran | |||
Mencabut izin untuk mengakses data sensitivitas tinggi dari peran |
Memberikan izin operasi pada objek kepada peran
Anda dapat memberikan izin operasi pada proyek, tabel, model, sumber daya, fungsi, atau instans kepada peran.
Format perintah
Berikan izin operasi pada proyek kepada peran
Otorisasi ACL
GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];Otorisasi kebijakan menggunakan sintaks ACL
GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Memberikan izin operasi pada table kepada peran
Otorisasi ACL
GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];Otorisasi kebijakan menggunakan sintaks ACL
GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Memberikan izin operasi pada model kepada peran
Otorisasi ACL
GRANT Describe|Execute|Alter|Drop|All ON MODEL <model_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];Otorisasi kebijakan menggunakan sintaks ACL
GRANT Describe|Execute|Alter|Drop|All ON MODEL <model_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Memberikan izin operasi pada sumber daya kepada suatu peran
Otorisasi ACL
GRANT Read|Write|Delete|All ON resource <resource_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];Otorisasi kebijakan menggunakan sintaks ACL
GRANT Read|Write|Delete|All ON resource <resource_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Memberikan izin operasi pada function kepada peran
Otorisasi ACL
GRANT Read|Write|Delete|Execute|All ON FUNCTION <function_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];Otorisasi kebijakan menggunakan sintaks ACL
GRANT Read|Write|Delete|Execute|All ON FUNCTION <function_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Memberikan izin operasi pada instance kepada peran
Otorisasi ACL
GRANT Read|Write|All ON instance <instance_id> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];Otorisasi kebijakan menggunakan sintaks ACL
GRANT Read|Write|All ON instance <instance_id> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Parameter
Untuk informasi lebih lanjut tentang parameter, lihat Pengendalian Akses Berbasis ACL atau Pengendalian Akses Berbasis Kebijakan.
Contoh
Asumsikan bahwa `Bob@aliyun.com` adalah pemilik proyek `test_project_a` dan sebuah peran bernama `Worker` dibuat dalam proyek tersebut. Contoh berikut menunjukkan cara memberikan izin kepada peran `Worker`.
Contoh 1: Memberikan peran izin untuk membuat tabel, fungsi, dan instans, serta melihat daftar semua objek dalam project.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Memberikan izin menggunakan ACL. GRANT CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker; -- Memberikan izin menggunakan sintaks ACL untuk otorisasi kebijakan. GRANT CreateTable, CreateFunction, CreateInstance, List ON project test_project_a TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 2: Memberikan peran izin untuk membaca metadata dan data table.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Memberikan izin menggunakan ACL. GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker; -- Memberikan izin menggunakan sintaks ACL untuk otorisasi kebijakan. GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 3: Memberikan peran semua izin pada model.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Memberikan izin menggunakan ACL. GRANT All ON MODEL my_model TO ROLE Worker; -- Memberikan izin menggunakan sintaks ACL untuk otorisasi kebijakan. GRANT All ON MODEL my_model TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 4: Memberikan peran izin untuk membaca dan memperbarui resource.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Memberikan izin menggunakan ACL. GRANT Read, Write ON resource udtf.jar TO ROLE Worker; -- Memberikan izin menggunakan sintaks ACL untuk otorisasi kebijakan. GRANT Read, Write ON resource udtf.jar TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 5: Memberikan peran izin untuk membaca dan memperbarui function.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Memberikan izin menggunakan ACL. GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker; -- Memberikan izin menggunakan sintaks ACL untuk otorisasi kebijakan. GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 6: Memberikan peran semua izin operasi pada instance.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Memberikan izin menggunakan ACL. GRANT All ON instance 202112300224**** TO ROLE Worker; -- Memberikan izin menggunakan sintaks ACL untuk otorisasi kebijakan. GRANT All ON instance 202112300224**** TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Mencabut izin operasi pada objek dari peran
Anda dapat mencabut izin operasi pada proyek, tabel, model, sumber daya, fungsi, atau instans dari peran.
Format perintah
Mencabut izin operasi pada project dari peran
Mencabut izin yang diberikan menggunakan ACL
REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> FROM ROLE <role_name>;Mencabut izin yang diberikan menggunakan otorisasi kebijakan
REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Mencabut izin operasi pada table dari peran
Mencabut izin yang diberikan menggunakan ACL
REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>;Mencabut izin yang diberikan menggunakan otorisasi kebijakan
REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Mencabut izin operasi pada model dari peran
Mencabut izin yang diberikan menggunakan ACL
REVOKE Describe|Execute|Alter|Drop|All ON MODEL <model_name> FROM ROLE <role_name>;Mencabut izin yang diberikan menggunakan otorisasi kebijakan
REVOKE Describe|Execute|Alter|Drop|All ON MODEL <model_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Mencabut izin operasi pada resource dari peran
Mencabut izin yang diberikan menggunakan ACL
REVOKE Read|Write|Delete|All ON resource <resource_name> FROM ROLE <role_name>;Mencabut izin yang diberikan menggunakan otorisasi kebijakan
REVOKE Read|Write|Delete|All ON resource <resource_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Mencabut izin operasi pada function dari peran
Mencabut izin yang diberikan menggunakan ACL
REVOKE Read|Write|Delete|Execute|All ON FUNCTION <function_name> FROM ROLE <role_name>;Mencabut izin yang diberikan menggunakan otorisasi kebijakan
REVOKE Read|Write|Delete|Execute|All ON FUNCTION <function_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Mencabut izin operasi pada instance dari peran
Mencabut izin yang diberikan menggunakan ACL
REVOKE Read|Write|All ON instance <instance_id> FROM ROLE <role_name>;Mencabut izin yang diberikan menggunakan otorisasi kebijakan
REVOKE Read|Write|All ON instance <instance_id> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Parameter
Untuk informasi lebih lanjut tentang parameter, lihat Pengendalian Akses Berbasis ACL atau Pengendalian Akses Berbasis Kebijakan.
Contoh
Contoh berikut menunjukkan cara mencabut izin dari peran `Worker`.
Contoh 1: Mencabut izin untuk membuat tabel, fungsi, dan instans, serta melihat daftar semua objek dalam project dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Mencabut izin yang diberikan menggunakan ACL. REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker; -- Mencabut izin yang diberikan menggunakan otorisasi kebijakan. REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 2: Mencabut izin untuk membaca metadata dan data table dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Mencabut izin yang diberikan menggunakan ACL. REVOKE Describe, Select ON TABLE sale_detail TO ROLE Worker; -- Mencabut izin yang diberikan menggunakan otorisasi kebijakan. REVOKE Describe, Select ON TABLE sale_detail FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 3: Mencabut semua izin pada model dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. use test_project_a; -- Mencabut izin yang diberikan menggunakan ACL. REVOKE All ON MODEL my_model FROM ROLE Worker; -- Mencabut izin yang diberikan menggunakan otorisasi kebijakan. REVOKE All ON MODEL my_model FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 4: Mencabut izin untuk membaca dan memperbarui resource dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Mencabut izin yang diberikan menggunakan ACL. REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker; -- Mencabut izin yang diberikan menggunakan otorisasi kebijakan. REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 5: Mencabut izin untuk membaca dan memperbarui function dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Mencabut izin yang diberikan menggunakan ACL. REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker; -- Mencabut izin yang diberikan menggunakan otorisasi kebijakan. REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");Contoh 6: Mencabut semua izin operasi pada instance dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Mencabut izin yang diberikan menggunakan ACL. REVOKE All ON instance 202112300224**** FROM ROLE Worker; -- Mencabut izin yang diberikan menggunakan otorisasi kebijakan. REVOKE All ON instance 202112300224**** FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Berikan izin Unduh kepada peran
Anda dapat memberikan peran izin untuk mengunduh data dari tabel, sumber daya, fungsi, atau instans.
Format perintah
GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>;Parameter
Untuk informasi lebih lanjut tentang parameter, lihat Pengendalian Izin Unduh.
Contoh
Asumsikan kontrol izin unduh diaktifkan untuk proyek `test_project_a`. Contoh berikut menunjukkan cara memberikan peran `Worker` izin untuk mengunduh data dari tabel tertentu.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Bob memberikan izin kepada peran Worker. GRANT Download ON TABLE sale_detail TO ROLE Worker;
Cabut izin Unduh dari peran
Anda dapat mencabut izin untuk mengunduh data dari tabel, sumber daya, fungsi, atau instans dari peran.
Format perintah
REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>;Parameter
Untuk informasi lebih lanjut tentang parameter, lihat Pengendalian Izin Unduh.
Contoh
Contoh berikut menunjukkan cara mencabut izin untuk mengunduh data dari tabel tertentu dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Bob mencabut izin dari peran Worker. REVOKE Download ON TABLE sale_detail FROM ROLE Worker;
Memberikan izin untuk mengakses data sensitivitas tinggi kepada peran
Setelah menetapkan label tingkat izin untuk peran, jika peran tersebut perlu mengakses data dengan tingkat sensitivitas yang lebih tinggi, Anda harus memberikan izin yang diperlukan. Untuk informasi selengkapnya tentang cara menetapkan label tingkat izin untuk pengguna atau peran, lihat Menetapkan label tingkat izin untuk pengguna atau peran.
Format perintah
GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [WITH exp <days>];Parameter
Untuk informasi selengkapnya tentang parameter, lihat Otorisasi eksplisit berbasis label.
Contoh
Asumsikan bahwa dalam proyek `test_project_a`, label tingkat izin peran `Worker` adalah 2. Contoh berikut menunjukkan cara memberikan peran ini izin untuk mengakses data dengan tingkat sensitivitas maksimum 4 dalam tabel `sale_detail`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Bob memberikan izin kepada peran Worker. GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;
Mencabut izin untuk mengakses data sensitivitas tinggi dari peran
Anda dapat mencabut izin untuk mengakses data sensitivitas tinggi dari peran. Tingkat izin peran itu sendiri tidak terpengaruh.
Format perintah
REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>;Parameter
Untuk informasi selengkapnya tentang parameter, lihat Mencabut otorisasi eksplisit berbasis label.
Contoh
Contoh berikut menunjukkan cara mencabut izin untuk mengakses data dengan tingkat sensitivitas maksimum 4 dalam tabel `sale_detail` dari peran `Worker`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Bob mencabut izin dari peran Worker. REVOKE Label ON TABLE sale_detail FROM ROLE Worker;
Menyambungkan peran ke pengguna
Anda dapat menyambungkan peran bawaan atau kustom tingkat proyek ke pengguna. Pengguna tersebut kemudian mewarisi izin dari peran tersebut.
Format perintah
GRANT <role_name> TO <user_name>;Catatan
Banyak pengguna dapat disambungkan ke peran yang sama, dan satu pengguna dapat disambungkan ke banyak peran.
Parameter
Parameter
Diperlukan
Deskripsi
role_name
Ya
Nama peran yang akan disambungkan ke pengguna.
Anda dapat menjalankan perintah
list roles;di Klien MaxCompute untuk melihat informasi peran.user_name
Ya
Nama pengguna yang akan disambungkan ke peran.
Anda dapat menjalankan perintah
list users;di Klien MaxCompute untuk melihat informasi pengguna.Contoh
Contoh ini menunjukkan cara menyambungkan peran `Worker` ke pengguna `Ka**@aliyun.com` dan Pengguna RAM `RAM$Bob@aliyun.com:Allen` dalam proyek MaxCompute.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Bob menyambungkan peran ke pengguna. GRANT Worker TO ALIYUN$Ka**@aliyun.com; GRANT Worker TO RAM$Bob@aliyun.com:Allen;
Memutuskan peran dari pengguna
Anda dapat memutuskan peran dari pengguna. Pengguna tersebut tidak lagi memiliki izin yang diberikan oleh peran tersebut.
Format perintah
REVOKE <role_name> FROM <user_name>;Parameter
Parameter
Diperlukan
Deskripsi
role_name
Ya
Nama peran yang akan diputuskan dari pengguna.
Anda dapat menjalankan perintah
list roles;di Klien MaxCompute untuk mendapatkan nama peran.user_name
Ya
Nama pengguna dari mana Anda ingin memutuskan peran.
Anda dapat menggunakan Klien MaxCompute untuk menjalankan perintah
list users;guna mendapatkan nama pengguna.Contoh
Contoh ini menunjukkan cara memutuskan peran `Worker` dari `Kate@aliyun.com` dan `RAM$Bob@aliyun.com:Allen`.
-- Bob masuk ke proyek test_project_a. USE test_project_a; -- Bob memutuskan peran dari pengguna. REVOKE Worker FROM ALIYUN$Kate@aliyun.com; REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;
Langkah selanjutnya
Setelah memberikan izin kepada peran, Anda dapat melakukan operasi berikut sesuai kebutuhan: