All Products
Search
Document Center

MaxCompute:Kontrol akses untuk package

Last Updated:Mar 27, 2026

Setelah menginstal sebuah package di proyek Anda, terapkan kontrol akses detail halus untuk membatasi pengguna atau peran yang dapat mengakses resource tertentu dalam package tersebut. MaxCompute mendukung dua kebijakan komplementer: kontrol akses berbasis daftar kontrol akses (ACL) untuk izin tingkat objek, dan LabelSecurity untuk penerapan sensitivitas data tingkat kolom. Terapkan terlebih dahulu kontrol akses berbasis ACL, lalu tambahkan LabelSecurity secara opsional untuk membatasi akses berdasarkan tingkat keamanan.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Kontrol akses berbasis ACL

Kontrol akses berbasis ACL memungkinkan project owner atau pengguna dengan peran admin memberikan atau mencabut izin pada objek tertentu dalam sebuah package. Pengguna di proyek yang menginstal hanya dapat melakukan operasi yang secara eksplisit diberikan pada objek tersebut.

Jalankan perintah-perintah berikut dari client MaxCompute, MaxCompute Studio, atau konsol DataWorks.

Berikan izin

Untuk memberikan izin pada objek tertentu dalam package:

grant <actions> on <object_type> <object_name> to [user|role] <name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

Untuk memberikan izin pada kolom tertentu dalam tabel:

-- Pemberian izin tingkat kolom: tentukan daftar kolom setelah nama tabel
grant <actions> on table <table_name>[(<column_list>)] to [user|role] <name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
ParameterWajibDeskripsi
actionsYaIzin yang akan diberikan. Jalankan describe package <project_name>.<package_name>; untuk melihat izin yang tersedia untuk setiap objek.
object_typeYaJenis objek. Jalankan describe package <project_name>.<package_name>; untuk melihat jenis objek yang termasuk dalam package.
object_nameYaNama objek. Jalankan describe package <project_name>.<package_name>; untuk melihat nama objek.
nameYaNama pengguna atau role. Lihat View users atau View roles.
table_nameYa (tingkat kolom)Nama tabel. Jalankan describe package <project_name>.<package_name>; untuk melihat tabel dalam package.
column_listTidakSatu atau beberapa nama kolom, dipisahkan koma.
"refobject"="true"YaMengaktifkan kontrol akses detail halus untuk package.
"refproject"="<project_name>"YaNama proyek MaxCompute yang memiliki package tersebut.
"package"="<package_name>"YaNama package.

Lihat izin

Untuk melihat izin berbasis ACL saat ini pada objek dalam package:

show grants on <object_type> <object_name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

Cabut izin

Untuk mencabut izin dari objek tertentu:

revoke <actions> on <object_type> <object_name> from [user|role] <name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

Untuk mencabut izin dari kolom tertentu dalam tabel:

revoke <actions> on table <table_name>[(<column_list>)] from [user|role] <name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

Contoh: Memberikan dan mencabut izin tabel

Contoh berikut menggunakan skenario dari Akses resource lintas-proyek berbasis package. John (project owner dari prj2) memberikan izin SELECT kepada Bob pada tabel sampletable dalam package datamining (dimiliki oleh prj1), lalu mencabutnya.

use prj2;

-- Berikan SELECT pada tabel kepada Bob
grant Select on table sampletable to user aliyun$bob@aliyun.com
privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");

-- Verifikasi pemberian izin
show grants on table sampletable
privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");

-- Cabut izin tersebut
revoke Select on table sampletable from user aliyun$bob@aliyun.com
privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");

Kontrol akses berbasis label

LabelSecurity menambahkan lapisan kontrol kedua di atas kontrol akses berbasis ACL. Setelah memberikan izin ACL, aktifkan LabelSecurity untuk membatasi akses lebih lanjut berdasarkan tingkat sensitivitas data. Pengguna hanya dapat membaca data yang tingkat keamanannya sama dengan atau di bawah tingkat yang ditentukan.

Terapkan kontrol akses berbasis ACL sebelum menerapkan LabelSecurity. LabelSecurity hanya berlaku untuk resource tabel dalam package.

Berikan izin berbasis label

grant label <number> on table <table_name>[(<column_list>)] to [user|role] <name>
[with exp <days>]
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
ParameterWajibDeskripsi
numberTingkat keamanan untuk data sensitif. Lihat Kontrol akses berbasis label.
table_nameYaNama tabel. Jalankan describe package <project_name>.<package_name>; untuk melihat tabel dalam package.
column_listTidakSatu atau beberapa nama kolom, dipisahkan koma.
nameYaNama pengguna atau role. Lihat View users atau View roles.
daysTidakJumlah hari izin tersebut berlaku. Default: 180 hari.
"refobject"="true"YaMengaktifkan kontrol akses detail halus untuk package.
"refproject"="<project_name>"YaNama proyek MaxCompute yang memiliki package tersebut.
"package"="<package_name>"YaNama package.

Lihat izin berbasis label

show label grants on table <table_name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

Cabut izin berbasis label

revoke label on table <table_name>[(<column_list>)] from [user|role] <name>
privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

Contoh: Menggabungkan kontrol akses berbasis ACL dan berbasis label

Contoh berikut merupakan kelanjutan dari contoh ACL di atas. Tabel sampletable memiliki tiga kolom dengan tingkat keamanan berbeda: t1 (tingkat 1), t2 (tingkat 2), dan t3 (tingkat 3). John memberikan akses kepada Bob hingga tingkat keamanan 2, berlaku selama 7 hari.

use prj2;

-- Langkah 1: Aktifkan LabelSecurity
set LabelSecurity=true;

-- Langkah 2: Tetapkan tingkat keamanan untuk setiap kolom
set label 1 to table sampletable(t1);
set label 2 to table sampletable(t2);
set label 3 to table sampletable(t3);

-- Langkah 3: Berikan akses label 2 kepada Bob untuk t2, berlaku 7 hari
-- Bob sudah memiliki SELECT pada tabel dari pemberian izin ACL di atas.
-- Setelah ini, Bob dapat membaca t2 (tingkat 2) tetapi tidak t3 (tingkat 3).
grant label 2 on table sampletable(t2) to user aliyun$bob@aliyun.com with exp 7
privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");

-- Verifikasi pemberian izin label
show label grants on table sampletable
privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");

-- Cabut akses label
revoke label 2 on table sampletable(t2) from user aliyun$bob@aliyun.com
privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
Ketika pemilik package (di prj1) memberikan hak kepada proyek lain untuk menginstal package tersebut, mereka juga harus menentukan label jika kontrol akses berbasis label diperlukan:
allowproject <project_name> to install package <package_name> using label <number>;

Langkah berikutnya