全部产品
Search
文档中心

MaxCompute:Kontrol akses berbasis ACL

更新时间:Nov 10, 2025

MaxCompute mendukung daftar kontrol akses (ACL) untuk memberikan pengguna atau peran izin melakukan tindakan tertentu pada objek. Untuk mengelola izin bagi banyak pengguna, Anda dapat memberikan izin kepada suatu peran lalu menetapkan peran tersebut kepada pengguna terkait. Pendekatan ini menyediakan kontrol akses yang sederhana dan efisien. Topik ini menjelaskan perintah otorisasi ACL yang didukung MaxCompute serta memberikan contoh penerapannya.

Informasi latar belakang

Kontrol akses berbasis ACL menggunakan daftar putih, artinya Anda dapat secara eksplisit mengizinkan pengguna atau peran untuk melakukan tindakan tertentu pada suatu objek. Metode ini bersifat langsung dan memungkinkan otorisasi yang tepat sasaran.

Kontrol akses berbasis ACL diaktifkan secara default saat Anda membuat proyek MaxCompute. Pemilik proyek dapat menjalankan perintah set CheckPermissionUsingACL=true|false; untuk mengaktifkan atau menonaktifkan fitur ini.

Kontrol akses berbasis ACL cocok untuk skenario berikut.

Skenario

Deskripsi

Pemberi izin

Titik akhir otorisasi

Memberikan izin kepada pengguna

Memberikan izin secara langsung kepada satu pengguna untuk melakukan satu atau beberapa operasi pada objek tertentu.

Untuk informasi selengkapnya, lihat kolom Pemberi otorisasi yang didukung dalam izin MaxCompute.

Memberikan izin kepada pengguna berdasarkan peran

Berikan izin kepada suatu peran untuk melakukan satu atau beberapa operasi pada objek tertentu. Kemudian, sambungkan peran tersebut ke beberapa pengguna. Para pengguna tersebut kemudian memiliki izin dari peran tersebut.

Untuk informasi selengkapnya tentang cara membuat peran dan menyambungkan peran ke pengguna, lihat Perencanaan peran dan Menyambungkan peran ke pengguna.

Catatan

Peran digunakan untuk mengelola pengguna dengan lebih baik. Biasanya, Anda tidak memberikan izin yang sama pada objek yang sama kepada beberapa peran.

Prasyarat

Sebelum menggunakan kontrol akses berbasis ACL, pastikan Anda memiliki informasi berikut:

  • Akun pengguna atau peran yang akan diberikan izin. Pastikan pengguna atau peran tersebut telah ditambahkan ke proyek MaxCompute Anda. Akun Alibaba Cloud memiliki format ALIYUN$<ID_akun>, akun pengguna RAM memiliki format RAM$<ID_akun>:<UID_pengguna_RAM>, dan akun peran RAM memiliki format `RAM$<ID_akun>:role/<nama_peran_RAM>`.

    Anda dapat menjalankan perintah list users; atau list roles; pada Klien MaxCompute untuk mengambil informasi akun atau peran.

    Untuk menambahkan pengguna atau peran, lihat Perencanaan dan manajemen pengguna atau Perencanaan peran.

  • Jenis objek, nama objek, dan tindakan yang akan diotorisasi.

    Untuk informasi selengkapnya tentang jenis objek dan tindakan, lihat Izin MaxCompute.

Batasan

Batasan berikut berlaku untuk kontrol akses berbasis ACL:

  • Anda hanya dapat memberikan izin pada objek yang sudah ada dan kepada pengguna atau peran yang sudah ada. Hal ini mencegah risiko keamanan yang dapat timbul jika Anda menghapus suatu objek lalu membuat objek berbeda dengan nama yang sama.

  • Kontrol akses berbasis ACL tidak mendukung otorisasi menggunakan klausa [with grant option]. Misalnya, jika Pengguna A memberikan izin kepada Pengguna B, Pengguna B tidak dapat memberikan izin yang sama kepada Pengguna C.

  • Otorisasi ACL menggunakan daftar putih (Allow) dan tidak mendukung daftar hitam (Deny).

Perhatian

Perhatikan hal-hal berikut saat menggunakan kontrol akses berbasis ACL:

  • Jika Anda menghapus suatu objek, MaxCompute secara otomatis mencabut semua otorisasi ACL yang terkait dengan objek tersebut.

  • Setelah pengguna dihapus, izin yang diberikan kepada pengguna tersebut tetap dipertahankan. Jika pengguna tersebut ditambahkan kembali ke proyek, izin akses historisnya akan diaktifkan kembali. Untuk informasi selengkapnya tentang cara menghapus informasi izin sisa dari pengguna yang dihapus, lihat Menghapus sepenuhnya informasi izin sisa dari pengguna yang dihapus.

Format perintah

Format perintah untuk kontrol akses berbasis ACL adalah sebagai berikut:

  • Memberikan izin ACL

    grant <actions> on <object_type> <object_name> 
    [(<column_list>)] to <subject_type> <subject_name> 
    [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
  • Mencabut izin ACL

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • Kontrol akses tingkat kolom

    grant <actions> on table <table_name> (<column_list>) to <subject_type> <subject_name>;
    revoke <actions> on table <table_name> (<column_list>) from <subject_type> <subject_name>;

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Wajib

Deskripsi

actions

Ya

Nama izin tindakan yang akan diberikan. Anda dapat menentukan satu atau beberapa tindakan dalam satu otorisasi.

Jika Anda menentukan beberapa tindakan, pisahkan dengan koma (,). Untuk informasi selengkapnya tentang nilai yang valid, lihat Izin MaxCompute.

object_type

Ya

Jenis objek yang akan diberikan izin. Anda hanya dapat menentukan satu jenis objek dalam satu otorisasi.

Untuk informasi selengkapnya tentang nilai yang valid, lihat Izin MaxCompute.

object_name

Ya

Nama objek yang akan diberikan izin. Anda dapat memperoleh nama dengan cara berikut:

  • Nama proyek: Anda dapat masuk ke Konsol MaxCompute, mengganti wilayah di pojok kiri atas, lalu menemukan nama proyek pada tab Project Management. Saat jenis kueri adalah Proyek, Anda hanya dapat mengkueri proyek saat ini.

  • Tabel atau tampilan: Untuk memperoleh nama tabel atau tampilan, jalankan perintah show tables; pada Klien MaxCompute.

  • Nama model: Anda dapat menjalankan perintah show models; di Klien MaxCompute untuk memperoleh nama model.

  • Nama sumber daya: Untuk memperoleh nama sumber daya, jalankan perintah list resources; pada Klien MaxCompute.

  • Nama fungsi: Untuk memperoleh nama fungsi, jalankan perintah list functions; pada Klien MaxCompute.

  • Nama instans: Anda dapat menggunakan Klien MaxCompute untuk menjalankan perintah show instances; guna memperoleh ID instans.

Anda dapat menggunakan tanda bintang (*) sebagai karakter wildcard untuk objek otorisasi. Misalnya, table taobao* menunjukkan semua tabel yang namanya dimulai dengan taobao.

Catatan

Anda hanya dapat menggunakan tanda bintang (*) sebagai karakter wildcard ketika memberikan izin kepada ROLE. Anda tidak dapat menggunakan karakter wildcard ketika memberikan izin kepada USER.

column_list

Tidak

Parameter ini hanya diperlukan ketika object_type adalah Table dan Anda perlu melakukan kontrol akses tingkat kolom. Anda dapat menentukan satu atau beberapa nama kolom, dipisahkan dengan koma (,).

Catatan

Parameter ini mengontrol izin Describe, Select, Alter, Update, Drop, ShowHistory, dan ALL pada kolom tertentu dari suatu tabel. Jika kolom dalam tabel memiliki tingkat sensitivitas, Anda dapat menggunakan kontrol akses berbasis label untuk mengontrol akses ke data sensitif berdasarkan label tingkat sensitivitas.

privilegeproperties

conditions

Tidak

Mengontrol izin berdasarkan dimensi seperti sumber permintaan dan metode akses. Formatnya adalah "<var_name> <Operation> Constant" and "<var_name> <Operation> Constant" and .... Untuk daftar nilai var_name dan Operation yang didukung, lihat Kondisi.

days

Tidak

Waktu kedaluwarsa izin, dalam satuan hari. Jika Anda tidak menentukan parameter ini, izin berlaku permanen. Jika Anda menentukan parameter ini, MaxCompute secara otomatis melakukan purge terhadap informasi izin setelah kedaluwarsa.

subject_type

Ya

Jenis subjek yang akan diberikan izin. Nilai yang valid:

  • USER: akun Alibaba Cloud atau pengguna RAM

  • ROLE: peran

subject_name

Ya

Akun pengguna atau nama peran yang akan diberikan izin. Anda hanya dapat menentukan satu pengguna atau peran sekaligus. Formatnya adalah sebagai berikut:

  • Akun Alibaba Cloud: ALIYUN$<ID_akun>.

  • Pengguna RAM: RAM$<ID_akun>:<ID pengguna RAM>.

  • Peran RAM: atau `RAM$<ID_akun>:role/<nama peran RAM>`.

Anda dapat menjalankan perintah list users; atau list roles; pada Klien MaxCompute untuk memperoleh nama akun pengguna atau peran.

Kondisi

Tabel berikut mencantumkan nilai var_name dan Operation yang didukung untuk conditions.

var_name

Tipe

Operasi

Deskripsi

acs:UserAgent

STRING

  • StringEquals: =

  • StringNotEquals: <>

  • StringLike: like

  • StringNotLike: not like

User-Agent klien yang mengirim permintaan.

acs:Referer

STRING

HTTP Referer dari permintaan.

acs:SourceIp

Alamat IP

  • IpAddress: in (...)

  • NotIpAddress: not in (...)

Alamat IP klien yang mengirim permintaan.

acs:SecureTransport

BOOLEAN

  • True

  • False

Menunjukkan apakah permintaan dikirim melalui saluran aman, seperti HTTPS.

acs:CurrentTime

DATEANDTIME

  • DateEquals: =

  • DateNotEquals: <>

  • DateLessThan: <

  • DateLessThanEquals: <=

  • DateGreaterThan: >

  • DateGreaterThanEquals: >=

Waktu saat server web menerima permintaan. Waktu dalam format ISO 8601, seperti 2012-11-11T23:59:59Z.

Contoh kontrol akses ACL

Asumsikan bahwa Bob@aliyun.com(ID akun: 5527xxxxxxxx5788) adalah pemilik proyek test_project_a. Allen(UID: 1652xxxxxxxxxx1538), Alice(UID: 2763xxxxxxxxxx1649), dan Tom(UID: 3874xxxxxxxxxx1850) adalah pengguna RAM yang termasuk dalam Bob@aliyun.com. Contoh berikut menunjukkan cara memberikan izin menggunakan Klien MaxCompute:

  • Contoh 1: Memberikan izin kepada pengguna

    Buat tabel bernama sale_detail di proyek test_project_a dan berikan izin Describe (baca metadata) dan Select (baca data tabel) pada tabel tersebut kepada pengguna Allen. Perintah contohnya adalah sebagai berikut.

    -- Bob memasuki proyek test_project_a.
    use test_project_a; 
    -- Buat tabel partisi bernama sale_detail.
    create table if not exists sale_detail
    (
    shop_name     string,
    customer_id   string,
    total_price   double
    )
    partitioned by (sale_date string, region string);
    -- Tambahkan pengguna Allen sebagai anggota proyek.
    add user RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    -- Berikan izin kepada Allen.
    grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    -- Lihat hasil otorisasi untuk Allen.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    -- Hasil otorisasi adalah sebagai berikut.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538]
    A       projects/test_project_a/tables/sale_detail: Describe | Select
  • Contoh 2: Memberikan izin kepada pengguna

    Berdasarkan tabel sale_detail yang dibuat pada Contoh 1, berikan semua izin pada kolom shop_name dan customer_id kepada pengguna Alice. Perintah contohnya adalah sebagai berikut.

    -- Bob memasuki proyek test_project_a.
    use test_project_a; 
    -- Tambahkan pengguna Alice sebagai anggota proyek.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    -- Berikan izin tingkat kolom kepada Alice.
    grant All on table sale_detail (shop_name, customer_id) to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    -- Lihat hasil otorisasi untuk Alice.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    -- Hasil otorisasi adalah sebagai berikut.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649]
    A       projects/test_project_a/tables/sale_detail/customer_id: All
    A       projects/test_project_a/tables/sale_detail/shop_name: All
  • Contoh 3: Mencabut izin dari pengguna

    Berdasarkan Contoh 1 dan Contoh 2, cabut izin dari pengguna Allen dan Alice. Perintah contohnya adalah sebagai berikut.

    -- Bob memasuki proyek test_project_a.
    use test_project_a; 
    -- Cabut izin dari Allen.
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    -- Cabut izin dari Alice.
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    -- Lihat hasil pencabutan izin dari Allen. Daftar izin tidak lagi berisi izin Describe atau Select.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    -- Lihat hasil pencabutan izin dari Alice. Daftar izin tidak lagi berisi izin All.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 

  • Contoh 4: Memberikan izin yang sama kepada beberapa pengguna berdasarkan peran

    Berikan izin kepada Alice, Tom, dan akun Alibaba Cloud lainnya, Lily@aliyun.com(ID akun: 5638xxxxxxxx6899), untuk membuat instans, sumber daya, fungsi, dan tabel, serta melihat semua jenis objek di proyek test_project_a. Perintah contohnya adalah sebagai berikut.

    -- Bob memasuki proyek test_project_a.
    use test_project_a; 
    -- Tambahkan pengguna Alice, Tom, dan Lily@aliyun.com sebagai anggota proyek.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    add user RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    add user ALIYUN$5638xxxxxxxx6899;
    -- Buat peran Worker.
    create role Worker; 
    -- Tetapkan peran Worker kepada pengguna.
    grant Worker TO RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    grant Worker TO RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850; 
    grant Worker TO ALIYUN$5638xxxxxxxx6899; 
    -- Berikan izin CreateInstance, CreateResource, CreateFunction, CreateTable, dan List pada proyek test_project_a kepada peran Worker.
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    -- Lihat hasil otorisasi untuk Lily.
    show grants for ALIYUN$5638xxxxxxxx6899; 
    -- Hasil otorisasi adalah sebagai berikut. Ini menunjukkan bahwa pengguna Lily memiliki izin tersebut.
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • Contoh 5: Mencabut izin yang sama yang diberikan kepada beberapa pengguna berdasarkan peran

    Dalam contoh ini, izin yang diberikan kepada pengguna RAM Alice dan Tom serta akun Alibaba Cloud Lily@aliyun.com pada Contoh 4 dicabut. Perintah contohnya adalah sebagai berikut:

    -- Masuk ke proyek test_project_a menggunakan akun Alibaba Cloud Bob@aliyun.com.
    use test_project_a; 
    -- Cabut peran Worker dari pengguna RAM Alice dan Tom serta akun Alibaba Cloud Lily@aliyun.com.
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    revoke Worker from RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    revoke Worker from ALIYUN$5638xxxxxxxx6899;
    -- Kueri izin akun Alibaba Cloud Lily@aliyun.com. Akun Alibaba Cloud Lily@aliyun.com tidak lagi memiliki izin dari peran Worker.
    show grants for ALIYUN$5638xxxxxxxx6899; 

Langkah selanjutnya

Setelah memahami cara kerja otorisasi berbasis ACL, Anda dapat melakukan operasi berikut sesuai kebutuhan: