全部产品
Search
文档中心

MaxCompute:Kontrol Akses untuk Paket

更新时间:Jul 02, 2025

Kontrol akses untuk paket didukung. Setelah menginstal paket, Anda dapat melakukan kontrol akses halus dengan menentukan daftar kontrol akses (ACL) untuk objek dalam paket dan menggunakan mekanisme LabelSecurity MaxCompute untuk kontrol lebih rinci terhadap akses ke paket. Sebagai contoh, Anda dapat memberikan izin kepada pengguna atau peran untuk mengakses hanya sumber daya tertentu dalam paket atau kolom tertentu dalam tabel paket. Topik ini menjelaskan cara memberikan atau mencabut izin pada sumber daya dalam paket kepada atau dari pengguna atau peran menggunakan dua kebijakan kontrol akses tersebut.

Informasi latar belakang

Tabel berikut menjelaskan kebijakan kontrol akses untuk paket yang disediakan oleh MaxCompute.

Kebijakan kontrol akses

Deskripsi

Diberikan oleh

Platform operasi

Kontrol akses berbasis ACL

Dalam proyek tempat paket diinstal, Anda dapat memberikan atau mencabut izin pada beberapa sumber daya dalam paket dengan menentukan ACL untuk objek. Setelah Anda memberikan izin, pengguna dalam proyek tempat paket diinstal dapat melakukan operasi tertentu pada objek tertentu.

Pemilik proyek atau pengguna yang ditugaskan peran Admin

Kontrol akses berbasis label

Dalam proyek tempat paket diinstal, Anda dapat memberikan atau mencabut izin pada sumber daya tabel dalam paket dengan menggunakan LabelSecurity. Setelah Anda memberikan izin, pengguna dalam proyek tempat paket diinstal hanya dapat mengakses data sensitif yang tingkat keamanannya tidak lebih tinggi dari tingkat keamanan yang ditentukan. Ini membantu mengelola izin data secara lebih halus. Untuk informasi lebih lanjut tentang LabelSecurity, lihat Kontrol akses berbasis label.

Kontrol akses berbasis ACL

  • Tentukan ACL untuk memberikan izin pada beberapa sumber daya dalam paket. Sintaks:

    -- Berikan izin pada objek tertentu.
    grant <actions> on <object_type> <object_name> to [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
    -- Berikan izin pada kolom tertentu dalam tabel tertentu.
    grant <actions> on table <table_name>[(<column_list>)] to [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • Lihat izin berbasis ACL pada sumber daya dalam paket. Sintaks:

    show grants on <object_type> <object_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • Cabut izin berbasis ACL dari beberapa sumber daya dalam paket. Sintaks:

    -- Cabut izin dari objek tertentu.
    revoke <actions> on <object_type> <object_name> from [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
    -- Cabut izin dari kolom dalam tabel tertentu.
    revoke <actions> on table <table_name>[(<column_list>)] from [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>",  "package"="<package_name>");

Parameter dalam sintaks:

  • actions: wajib. Izin yang ingin diberikan. Jalankan perintah describe package project_name.package_name; untuk memeriksa izin paket.

  • object_type: wajib. Jenis objek dalam paket. Jalankan perintah describe package project_name.package_name; untuk memeriksa jenis objek yang termasuk dalam paket.

  • object_name: wajib. Nama objek dalam paket. Jalankan perintah describe package project_name.package_name; untuk memeriksa nama objek yang termasuk dalam paket.

  • name: wajib. Nama pengguna atau peran kepada mana izin akan diberikan. Untuk informasi lebih lanjut tentang cara mendapatkan informasi pengguna atau peran, lihat Lihat pengguna atau Lihat peran.

  • table_name: wajib. Nama tabel tempat izin akan diberikan. Jalankan perintah describe package project_name.package_name; untuk memeriksa nama tabel yang termasuk dalam paket.

  • column_list: opsional. Nama kolom dalam tabel. Jika menentukan beberapa nama kolom, pisahkan dengan koma (,).

  • "refobject"="true": wajib. Nilai true menunjukkan bahwa kontrol akses halus digunakan untuk paket.

  • "refproject"="<project_name>": wajib. Nama proyek MaxCompute tempat paket tersebut milik.

  • "package"="<package_name>": wajib. Nama paket.

Kontrol akses berbasis label

Anda dapat memberikan izin pada tabel dalam paket menggunakan LabelSecurity setelah menerapkan kontrol akses berbasis ACL. Dengan cara ini, Anda hanya dapat mengakses data tabel dengan tingkat keamanan tertentu.

  • Gunakan LabelSecurity untuk memberikan izin pada tabel dalam paket. Sintaks:

    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>");
  • Lihat izin berbasis label pada tabel dalam paket. Sintaks:

    show label grants on table <table_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • Cabut izin berbasis label dari tabel dalam paket. Sintaks:

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

Parameter dalam sintaks:

  • number: tingkat keamanan untuk data sensitif. Untuk informasi lebih lanjut tentang kontrol akses berbasis label, lihat Kontrol Akses Berbasis Label.

  • table_name: wajib. Nama tabel tempat izin akan diberikan. Jalankan perintah describe package project_name.package_name; untuk memeriksa nama tabel yang termasuk dalam paket.

  • column_list: opsional. Nama kolom dalam tabel. Jika menentukan beberapa nama kolom, pisahkan dengan koma (,).

  • name: wajib. Nama pengguna atau peran kepada mana izin akan diberikan. Untuk informasi lebih lanjut tentang cara mendapatkan informasi pengguna atau peran, lihat Lihat pengguna atau Lihat peran.

  • days: opsional. Jumlah hari selama izin valid. Unit: hari. Jika tidak ditentukan, nilai defaultnya adalah 180.

  • "refobject"="true": wajib. Nilai true menunjukkan bahwa kontrol akses halus digunakan untuk paket.

  • "refproject"="<project_name>": wajib. Nama proyek MaxCompute tempat paket tersebut milik.

  • "package"="<package_name>": wajib. Nama paket.

Contoh

Contoh berikut menunjukkan metode kontrol akses sebelumnya berdasarkan skenario dalam Akses Sumber Daya Lintas Proyek Berdasarkan Paket.

  • Contoh 1: Lakukan kontrol akses berbasis ACL. John memberikan izin SELECT pada tabel sampletable dalam paket kepada Bob.

    use prj2;
    -- Berikan izin SELECT pada tabel sampletable dalam paket kepada Bob.
    grant Select on table sampletable to user aliyun$bob@aliyun.com privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    -- Lihat izin berbasis ACL pada tabel sampletable dalam paket.
    show grants on table sampletable privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    -- Cabut izin berbasis ACL dari Bob.
    revoke Select on table sampletable from user aliyun$bob@aliyun.com privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
  • Contoh 2: Lakukan kontrol akses berbasis label. Dalam contoh ini, tabel sampletable memiliki tiga kolom t1, t2, dan t3, di mana t1 memiliki tingkat keamanan 1, t2 memiliki tingkat keamanan 2, dan t3 memiliki tingkat keamanan 3. John memberikan Bob izin pada data dengan tingkat keamanan 2 dalam tabel sampletable dalam paket. Periode validitas izin adalah tujuh hari.

    use prj2;
    -- Aktifkan LabelSecurity.
    set LabelSecurity=true;
    
    -- Tentukan tingkat keamanan untuk setiap kolom dalam tabel sampletable.
    set label 1 to table sampletable(t1);
    set label 2 to table sampletable(t2);
    set label 3 to table sampletable(t3);
    
    -- Berikan Bob izin pada data yang memiliki tingkat keamanan 2 dalam tabel sampletable. Atur periode validitas izin menjadi tujuh hari. Dalam contoh sebelumnya, Bob memiliki izin untuk membaca data dari tabel. Setelah Anda mengaktifkan LabelSecurity, Bob memiliki izin untuk membaca data dari kolom t2 tabel.
    grant label 2 on table sampletable(t2) to user aliyun$bob@aliyun.com with exp 7 privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    -- Lihat izin berbasis label pada tabel sampletable dalam paket.
    show label grants on table sampletable privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    -- Cabut izin berbasis label dari Bob.
    revoke label 2 on table sampletable(t2) from user aliyun$bob@aliyun.com privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    Catatan

    Jika kontrol akses berbasis label dilakukan pada sumber daya tabel dalam paket, penyedia sumber daya harus menentukan label dan tingkat keamanan label ketika memberikan proyek lain izin untuk menggunakan sumber daya dalam paket. Contoh perintah:

    allowproject<project_name>toinstallpackage<package_name>usinglabel<number>;