All Products
Search
Document Center

MaxCompute:Kontrol akses ACL

Last Updated:Aug 22, 2026

Jika Anda perlu memberikan izin kepada beberapa pengguna untuk mengakses objek MaxCompute seperti proyek dan tabel, Anda dapat menggunakan Access Control Lists (ACL) untuk memberikan izin tertentu kepada pengguna atau role. Untuk mengelola izin secara efisien bagi beberapa pengguna, berikan izin tersebut kepada suatu role lalu tetapkan role tersebut kepada pengguna. Topik ini menjelaskan perintah otorisasi ACL yang didukung oleh MaxCompute dan menyertakan contoh penggunaannya.

Informasi latar belakang

Kontrol akses berbasis ACL menggunakan model otorisasi allow-list. Anda secara eksplisit memberikan izin kepada pengguna atau role untuk melakukan tindakan tertentu pada objek tertentu, sehingga otorisasi menjadi sederhana dan tepat sasaran.

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

Kontrol akses berbasis ACL berlaku untuk skenario berikut.

Scenario

Description

Grantor

Entry point

Grant permissions to a user

Berikan satu atau beberapa action pada objek tertentu langsung kepada satu pengguna.

Lihat kolom Supported grantors dalam daftar izin.

Grant permissions to users based on roles

Berikan satu atau beberapa action pada objek tertentu langsung kepada suatu role, lalu tetapkan role tersebut kepada beberapa pengguna. Pengguna mewarisi izin dari role tersebut.

Untuk informasi lebih lanjut tentang cara membuat role dan menetapkan role kepada pengguna, lihat Role planning dan Attach a role to a user.

Catatan

Role dirancang untuk manajemen pengguna yang efisien. Hindari memberikan izin yang sama pada objek yang sama kepada beberapa role.

Prasyarat

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

  • Nama akun atau nama role penerima izin. Pengguna atau role tersebut harus telah ditambahkan ke proyek MaxCompute. Format akun adalah sebagai berikut: Akun Alibaba Cloud dalam format ALIYUN$<account_id>, akun pengguna RAM dalam format RAM$<account_id>:<RAM user UID>, dan role RAM dalam format RAM$<account_id>:role/<RAM role name>.

    Anda dapat menjalankan perintah list users; atau list roles; di MaxCompute client untuk mengambil nama akun atau role.

    Untuk menambahkan pengguna atau role, lihat User planning and management atau Role planning.

  • Tipe objek, nama objek, dan action yang akan diberikan.

    Untuk informasi lebih lanjut tentang tipe objek dan action, lihat MaxCompute permissions.

Batasan

Batasan berikut berlaku untuk kontrol akses berbasis ACL:

  • Anda hanya dapat memberikan izin kepada pengguna atau role yang sudah ada pada objek yang sudah ada. Hal ini mencegah risiko keamanan akibat penghapusan dan pembuatan ulang objek dengan nama yang sama.

  • Kontrol akses berbasis ACL tidak mendukung otorisasi dengan klausa [with grant option]. Misalnya, jika pengguna A memberikan akses ke objek kepada pengguna B, pengguna B tidak dapat meneruskan izin tersebut kepada pengguna C.

  • Otorisasi ACL menggunakan model allow-list dan tidak mendukung model deny-list.

Catatan penggunaan

Perhatikan hal berikut saat menggunakan kontrol akses berbasis ACL:

  • Jika Anda menghapus suatu objek, MaxCompute secara otomatis mencabut semua izin ACL yang terkait dengannya.

  • Saat pengguna dihapus, izin mereka tetap dipertahankan. Jika pengguna tersebut ditambahkan kembali ke proyek di kemudian hari, izin sebelumnya akan dipulihkan secara otomatis. Untuk menghapus permanen izin pengguna tersebut, lihat Clear residual permissions of a removed user.

Sintaksis

Perintah kontrol akses berbasis ACL menggunakan sintaksis berikut:

  • Grant ACL permissions

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

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • Column-level access control

    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

Required

Description

actions

Yes

Action yang akan diberikan. Anda dapat menentukan satu atau beberapa action dalam satu pernyataan 'grant'.

Pisahkan beberapa action dengan koma (,). Untuk daftar action yang valid, lihat MaxCompute permissions.

object_type

Yes

Tipe objek tempat izin diberikan. Anda hanya dapat menentukan satu tipe objek dalam satu pernyataan.

Untuk daftar tipe objek yang valid, lihat MaxCompute permissions.

object_name

Yes

Nama objek. Anda dapat menemukan nama sebagai berikut:

  • Nama proyek: Masuk ke MaxCompute console. Setelah mengganti wilayah di pojok kiri atas, Anda dapat menemukan nama proyek pada tab Projects. Saat tipe objek adalah project, Anda hanya dapat mengkueri informasi tentang proyek saat ini.

  • Nama tabel: Jalankan show tables; di MaxCompute client untuk mengambil nama tabel atau view.

  • Nama model: Jalankan show models; di MaxCompute client untuk mengambil nama model.

  • Nama resource: Jalankan list resources; di MaxCompute client untuk mengambil nama resource.

  • Nama fungsi: Jalankan list functions; di MaxCompute client untuk mengambil nama fungsi.

  • Nama instans: Jalankan show instances; di MaxCompute client untuk mengambil ID instans.

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

Catatan

Anda hanya dapat menggunakan wildcard (*) saat memberikan izin kepada ROLE. Wildcard tidak didukung saat memberikan izin kepada USER.

column_list

No

Parameter ini hanya diperlukan ketika object_type adalah table dan Anda ingin menerapkan column-level access control. Anda dapat menentukan satu atau beberapa kolom. Pisahkan beberapa nama kolom dengan koma (,).

Catatan

Parameter ini mengontrol izin Describe, Select, Alter, Update, Drop, ShowHistory, dan ALL pada kolom yang ditentukan. Jika tingkat sensitivitas dikonfigurasi untuk suatu kolom, Anda dapat menggunakan Label-based access control untuk mengontrol akses ke data sensitif berdasarkan label sensitivitas.

privilegeproperties

conditions

No

Mengontrol izin berdasarkan atribut 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 Conditions.

days

No

Jumlah hari sebelum izin kedaluwarsa. Jika Anda tidak menentukan parameter ini, izin tidak akan kedaluwarsa. Jika Anda menentukan parameter ini, MaxCompute secara otomatis menghapus catatan izin setelah kedaluwarsa.

subject_type

Yes

Tipe penerima izin. Nilai yang valid:

  • USER: Akun Alibaba Cloud atau pengguna RAM.

  • ROLE: Role.

subject_name

Yes

Akun pengguna atau nama role penerima izin. Anda hanya dapat menentukan satu pengguna atau role per pemberian izin. Format:

  • Akun Alibaba Cloud: ALIYUN$<account_id>.

  • Pengguna RAM: RAM$<account_id>:<RAM user UID>.

  • Role RAM: RAM$<account_id>:role/<RAM role name>.

Anda dapat menjalankan perintah list users; atau list roles; di MaxCompute client untuk mengambil nama akun pengguna atau role.

Conditions

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

var_name

Type

Operation

Description

acs:UserAgent

STRING

  • StringEquals: =

  • StringNotEquals: <>

  • StringLike: like

  • StringNotLike: not like

User-Agent dari klien yang mengirim permintaan.

acs:Referer

STRING

HTTP Referer dari permintaan.

acs:SourceIp

IP address

  • IpAddress: in (...)

  • NotIpAddress: not in (...)

Alamat IP dari 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, dalam format ISO 8601, seperti 2012-11-11T23:59:59Z.

Contoh

Asumsikan bahwa Bob@aliyun.com (ID akun: 5527xxxxxxxx5788) adalah pemilik proyek test_project_a, dan Allen (UID: 1652xxxxxxxxxx1538), Alice (UID: 2763xxxxxxxxxx1649), serta Tom (UID: 3874xxxxxxxxxx1850) adalah pengguna RAM di bawah Bob@aliyun.com. Contoh berikut menunjukkan operasi otorisasi menggunakan MaxCompute client.

  • Contoh 1: Memberikan izin kepada pengguna

    Buat tabel sale_detail di proyek test_project_a, lalu berikan izin Describe (baca metadata) dan Select (baca data) pada tabel tersebut kepada pengguna Allen. Berikut adalah contoh perintahnya.

    -- Bob beralih ke 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 izin yang diberikan kepada 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 tingkat kolom kepada pengguna

    Menggunakan tabel sale_detail yang dibuat pada Contoh 1, berikan semua izin kepada pengguna Alice pada kolom shop_name dan customer_id di tabel sale_detail. Berikut adalah contoh perintahnya.

    -- Bob beralih ke 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 izin yang diberikan kepada 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. Berikut adalah contoh perintahnya.

    -- Bob beralih ke 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;
    --Periksa izin Allen setelah pencabutan. Izin Describe dan Select dihapus dari daftar izin.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --Periksa izin Alice setelah pencabutan. Izin All dihapus dari daftar izin.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
  • Contoh 4: Memberikan izin yang sama kepada beberapa pengguna menggunakan role

    Berikan izin kepada Alice, Tom, dan akun Alibaba Cloud lain Lily@aliyun.com (ID akun: 5638xxxxxxxx6899) untuk membuat instance, resource, fungsi, dan tabel, serta melihat semua tipe objek di proyek test_project_a. Berikut adalah contoh perintahnya.

    -- Bob beralih ke 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 role Worker.
    create role Worker; 
    --Tetapkan role Worker kepada pengguna.
    grant Worker TO RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    grant Worker TO RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850; 
    grant Worker TO ALIYUN$5638xxxxxxxx6899; 
    --Berikan role Worker izin untuk membuat instance, resource, fungsi, dan tabel, serta melihat semua tipe objek di proyek test_project_a.
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    --Lihat izin pengguna Lily.
    show grants for ALIYUN$5638xxxxxxxx6899; 
    --Hasil otorisasi berikut menunjukkan bahwa pengguna Lily memiliki izin yang ditentukan.
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • Contoh 5: Mencabut izin berbasis role yang sama dari beberapa pengguna

    Berdasarkan Contoh 4, cabut izin dari pengguna Alice, Tom, dan Lily@aliyun.com. Berikut adalah contoh perintahnya.

    -- Bob beralih ke proyek test_project_a.
    use test_project_a; 
    --Cabut role Worker dari pengguna Alice, Tom, dan Lily@aliyun.com.
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    revoke Worker from RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    revoke Worker from ALIYUN$5638xxxxxxxx6899;
    --Periksa izin Lily setelah pencabutan. Daftar izin tidak lagi mencakup role Worker.
    show grants for ALIYUN$5638xxxxxxxx6899; 

Langkah selanjutnya

Setelah memahami cara kerja otorisasi ACL, Anda dapat mengelola izin sesuai kebutuhan bisnis: