All Products
Search
Document Center

MaxCompute:Kontrol akses berbasis kebijakan

Last Updated:Aug 22, 2026

MaxCompute menyediakan kontrol akses berbasis kebijakan untuk pengaturan izin yang kompleks dan fleksibel, ideal bagi perusahaan besar dan skenario yang memerlukan kontrol detail halus. Berbeda dengan otorisasi daftar kontrol akses (ACL), kontrol akses berbasis kebijakan juga mendukung daftar hitam (blacklist), sehingga Anda dapat membuat kebijakan yang memberikan atau menolak izin role untuk melakukan operasi tertentu pada objek tertentu. Setelah role tersebut disambungkan ke pengguna, izin tersebut langsung berlaku.

Latar Belakang

Kontrol akses berbasis kebijakan mendukung otorisasi daftar putih dan daftar hitam. Anda dapat memberikan (daftar putih) atau menolak (daftar hitam) izin role untuk melakukan operasi tertentu pada objek tertentu.

Metode kontrol akses ini mengatasi masalah otorisasi yang tidak dapat diselesaikan menggunakan kontrol akses berbasis ACL. Misalnya, seorang pengguna diberi role developer dan secara default memiliki izin untuk menghapus tabel. Jika Anda ingin menolak role tersebut dari menghapus tabel, Anda dapat menggunakan metode kontrol akses ini.

Setelah proyek MaxCompute dibuat, kontrol akses berbasis kebijakan diaktifkan secara default. Pemilik proyek dapat menjalankan perintah set CheckPermissionUsingPolicy=true|false; di proyek MaxCompute untuk mengaktifkan atau menonaktifkan fitur ini.

Kontrol akses berbasis kebijakan berlaku untuk skenario berikut.

Scenario

Description

Authorizer

Authorization endpoint

Grant permissions to users based on roles

Berikan izin kepada role untuk mengizinkan atau menolak satu atau beberapa operasi pada objek tertentu. Kemudian, sambungkan role tersebut ke beberapa pengguna. Pengguna tersebut mewarisi izin dari role tersebut.

Lihat kolom Authorizer dalam izin MaxCompute.

Use a custom role for fine-grained authorization for a user with a built-in role

Jika pengguna telah diberi role bawaan dan Anda memerlukan kontrol izin yang lebih detail halus, otorisasi ACL tidak cukup. Dalam kasus ini, gunakan kontrol akses berbasis kebijakan untuk membuat role baru. Anda kemudian dapat memberikan atau menolak izin role tersebut untuk melakukan operasi pada objek proyek dan menyambungkan role tersebut ke pengguna untuk pengelolaan izin detail halus.

Catatan Penggunaan

Sebelum menggunakan kontrol akses berbasis kebijakan, perhatikan prasyarat dan tindakan pencegahan berikut.

  • Prasyarat:

    • Kontrol akses berbasis kebijakan hanya mendukung otorisasi untuk role yang sudah ada. Pastikan nama role yang akan diotorisasi telah ditambahkan ke proyek MaxCompute. Anda dapat menjalankan perintah list roles; pada MaxCompute client untuk mengambil informasi role. Untuk membuat role baru, lihat 角色规划.

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

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

  • Tindakan pencegahan:

    • Jika otorisasi daftar putih dan daftar hitam dikonfigurasi bersamaan, daftar hitam memiliki prioritas lebih tinggi.

    • Kontrol akses berbasis kebijakan memungkinkan Anda memberikan izin pada objek yang belum ada. Saat Anda menghapus objek, informasi otorisasi kebijakan terkait tidak dihapus. Pemberi otorisasi harus menyadari risiko keamanan yang dapat muncul akibat penghapusan lalu pembuatan ulang objek dengan nama yang sama.

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

Sintaksis

Perintah kontrol akses berbasis kebijakan diformat sebagai berikut:

  • Policy authorization

    GRANT <actions> ON <object_type> <object_name> 
    TO ROLE <role_name> 
    PRIVILEGEPROPERTIES("policy" = "true", "allow"="{true|false}"[, "conditions"= "<conditions>"]);
    
  • Revoke policy authorization

    REVOKE <actions> ON <object_type> <object_name> 
    FROM ROLE <role_name> 
    PRIVILEGEPROPERTIES("policy" = "true", "allow"="{true|false}");

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Required

Description

actions

Yes

Aksi yang akan diberikan. Anda dapat menentukan beberapa aksi dalam satu perintah.

Jika Anda menentukan beberapa aksi, pisahkan dengan koma (,). Untuk informasi lebih lanjut tentang nilai yang valid, lihat MaxCompute permissions.

object_type

Yes

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

Untuk informasi lebih lanjut tentang nilai yang valid, lihat MaxCompute permissions.

object_name

Yes

Nama objek tempat izin akan diberikan. Anda dapat memperoleh nama dengan salah satu cara berikut:

  • Nama proyek: Anda dapat login ke MaxCompute console, ganti wilayah di pojok kiri atas, lalu peroleh nama proyek MaxCompute dari tab Projects.

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

  • Nama model: Anda dapat menggunakan MaxCompute client untuk menjalankan perintah show models; guna memperoleh nama model.

  • Nama resource: Anda dapat memperoleh nama resource dengan menjalankan perintah list resources; pada MaxCompute client.

  • Nama fungsi: Anda dapat menjalankan perintah list functions; pada MaxCompute client untuk memperoleh nama fungsi.

  • Nama Instance: Anda dapat memperoleh ID instans dengan menjalankan perintah show instances; pada MaxCompute client.

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

Catatan

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

role_name

Yes

Nama role yang akan diotorisasi. Anda hanya dapat menentukan satu role dalam satu perintah.

Anda dapat menjalankan perintah list roles; pada MaxCompute client untuk memperoleh nama role.

privilegeproperties

policy

Yes

Atur nilainya menjadi true. Ini menunjukkan bahwa metode kontrol akses berbasis kebijakan digunakan.

allow

Required for whitelist authorization

Mekanisme otorisasi. Nilai yang valid:

  • true: Mengizinkan operasi tertentu pada objek tertentu.

  • false: Menolak operasi tertentu pada objek tertentu. Ini adalah mekanisme daftar hitam.

conditions

No

Mengontrol izin berdasarkan dimensi seperti sumber paket permintaan dan metode akses. Untuk informasi lebih lanjut tentang nilai yang valid, lihat Conditions.

Contoh kontrol akses berbasis kebijakan

Pada contoh berikut, Bob@aliyun.com adalah pemilik proyek test_project_a, dan Allen serta Tom adalah pengguna Resource Access Management (RAM) di bawah akun Bob@aliyun.com. Allen memiliki role Admin untuk test_project_a. Contoh-contoh berikut menunjukkan cara melakukan operasi otorisasi pada MaxCompute client:

  • Contoh 1: Memberikan izin kepada pengguna berdasarkan role (daftar hitam)

    Tolak Tom dari menghapus tabel yang diawali dengan tb_.

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a;
      -- Membuat role Worker.
      CREATE ROLE Worker;
      -- Menambahkan pengguna Tom sebagai anggota proyek.
      ADD USER RAM$Bob@aliyun.com:Tom;
      -- Menyambungkan role Worker ke pengguna Tom.
      GRANT Worker TO RAM$Bob@aliyun.com:Tom;
      -- Menolak role Worker dari menghapus tabel yang diawali dengan tb_ di proyek test_project_a.
      GRANT Drop ON TABLE tb_* TO ROLE Worker PRIVILEGEPROPERTIES("policy" = "true", "allow"="false");
      -- Melihat hasil otorisasi untuk pengguna Tom.
      SHOW GRANTS FOR RAM$Bob@aliyun.com:Tom;
      -- Hasil otorisasi berikut dikembalikan. D menunjukkan Deny. Menghapus tabel yang diawali dengan tb_ ditolak.
      Authorization Type: Policy
      [role/worker]
      D      projects/test_project_a/tables/tb_*: Drop
    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan di konsol:

      1. Login ke MaxCompute console dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi kiri, pilih Manage Configurations > Projects.

      3. Di halaman Projects, temukan proyek target dan klik Manage di kolom Actions.

      4. Di tab Role Permissions, klik Create Project-level Role.

      5. Di kotak dialog Create Role, buat role Resource, masukkan Role Name, lalu definisikan kebijakan otorisasi.

        Berikut contoh kebijakan:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Drop"
                    ],
                    "Effect":"Deny",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/tb_*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. Di tab Role Permissions, temukan role baru tersebut, klik Manage Members pada kolom Actions, lalu tambahkan RAM$Bob@aliyun.com:Tom ke role tersebut.

  • Contoh 2: Mencabut otorisasi kebijakan (daftar hitam)

    Berdasarkan Contoh 1, cabut otorisasi dari pengguna Tom.

    -- Bob memasuki proyek test_project_a.
    USE test_project_a; 
    -- Mencabut role Worker dari pengguna Tom.
    REVOKE Worker FROM RAM$Bob@aliyun.com:Tom;
    -- Melihat hasil otorisasi untuk pengguna Tom. Daftar izin tidak berisi informasi izin Drop.
    SHOW GRANTS FOR RAM$Bob@aliyun.com:Tom;
  • Contoh 3: Memberikan izin kepada pengguna berdasarkan role (daftar putih)

    Izinkan Tom untuk memperbarui data di tabel yang diawali dengan tb_.

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a; 
      -- Membuat role Worker.
      CREATE ROLE Worker; 
      -- Menambahkan pengguna Tom sebagai anggota proyek.
      ADD USER RAM$Bob@aliyun.com:Tom;
      -- Menyambungkan role Worker ke pengguna Tom.
      GRANT Worker TO RAM$Bob@aliyun.com:Tom; 
      -- Mengizinkan role Worker untuk memperbarui data di tabel yang diawali dengan tb_ di proyek test_project_a.
      GRANT Update ON TABLE tb_* TO ROLE Worker PRIVILEGEPROPERTIES("policy" = "true", "allow"="true");
      -- Melihat hasil otorisasi untuk pengguna Tom.
      SHOW GRANTS FOR RAM$Bob@aliyun.com:Tom; 
      -- Hasil otorisasi berikut dikembalikan. A menunjukkan Allow. Anda dapat memperbarui data di tabel yang diawali dengan tb_.
      Authorization Type: Policy
      [role/worker]
      A       projects/test_project_a/tables/tb_*: Update
      
    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan di konsol:

      1. Login ke MaxCompute console dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi kiri, pilih Manage Configurations > Projects.

      3. Di halaman Projects, temukan proyek target dan klik Manage di kolom Actions.

      4. Di tab Role Permissions, klik Create Project-level Role.

      5. Di kotak dialog Create Role, buat role Resource, masukkan Role Name, lalu definisikan kebijakan otorisasi.

        Berikut contoh kebijakan:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Update"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/tb_*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. Di tab Role Permissions, temukan role baru tersebut, klik Manage Members pada kolom Actions, lalu tambahkan RAM$Bob@aliyun.com:Tom ke dalam role tersebut.

  • Contoh 4: Mencabut otorisasi kebijakan (daftar putih)

    Berdasarkan Contoh 3, cabut otorisasi dari pengguna Tom.

    -- Bob memasuki proyek test_project_a.
    USE test_project_a; 
    -- Mencabut role Worker dari pengguna Tom.
    REVOKE Worker FROM RAM$Bob@aliyun.com:Tom;
    -- Melihat hasil otorisasi untuk pengguna Tom. Daftar izin tidak berisi informasi izin Update.
    SHOW GRANTS FOR RAM$Bob@aliyun.com:Tom;
  • Contoh 5: Melakukan otorisasi detail halus untuk pengguna dengan role bawaan

    Tolak Allen dari menghapus semua tabel di proyek test_project_a.

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a;
      -- Membuat role Worker.
      CREATE ROLE Worker;
      -- Menyambungkan role Worker ke pengguna Allen.
      GRANT Worker TO RAM$Bob@aliyun.com:Allen;
      -- Menolak role Worker dari menghapus semua tabel di proyek test_project_a.
      GRANT Drop ON TABLE * TO ROLE Worker PRIVILEGEPROPERTIES("policy" = "true", "allow"="false");
      -- Melihat hasil otorisasi untuk pengguna Allen.
      SHOW GRANTS FOR RAM$Bob@aliyun.com:Allen;
      -- Hasil otorisasi berikut dikembalikan. Menghapus semua tabel ditolak.
      [roles]
      role_project_admin, worker
      Authorization Type: Policy
      [role/role_project_admin]
      A       projects/test_project_a: *
      A       projects/test_project_a/instances/*: *
      A       projects/test_project_a/jobs/*: *
      A       projects/test_project_a/offlinemodels/*: *
      A       projects/test_project_a/packages/*: *
      A       projects/test_project_a/registration/functions/*: *
      A       projects/test_project_a/resources/*: *
      A       projects/test_project_a/tables/*: *
      A       projects/test_project_a/volumes/*: *
      [role/worker]
      A       projects/test_project_a/tables/tb_*: Update
      D       projects/test_project_a/tables/*: Drop
      -- A dalam AG menunjukkan Allow. G dalam AG menunjukkan With Grant Option, yang memungkinkan Anda memberikan izin pada objek tersebut.
      Authorization Type: ObjectCreator
      AG      projects/test_project_a/tables/local_test: All
      AG      projects/test_project_a/tables/mr_multiinout_out1: All
      AG      projects/test_project_a/tables/mr_multiinout_out2: All
      AG      projects/test_project_a/tables/ramtest: All
      AG      projects/test_project_a/tables/wc_in: All
      AG      projects/test_project_a/tables/wc_in1: All
      AG      projects/test_project_a/tables/wc_in2: All
      AG      projects/test_project_a/tables/wc_out: All
      
    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan di konsol:

      1. Login ke MaxCompute console dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi kiri, pilih Manage Configurations > Projects.

      3. Di halaman Projects, temukan proyek target dan klik Manage di kolom Actions.

      4. Di tab Role Permissions, klik Create Project-level Role.

      5. Di kotak dialog Create Role, buat role Resource, masukkan Role Name, lalu definisikan kebijakan otorisasi.

        Berikut contoh kebijakan:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Drop"
                    ],
                    "Effect":"Deny",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. Di tab Role Permissions, temukan role baru tersebut, klik Manage Members pada kolom Actions, lalu tambahkan RAM$Bob@aliyun.com:Allen ke dalam role tersebut.

  • Contoh 6: Mencabut otorisasi untuk pengguna dengan role bawaan

    Berdasarkan Contoh 5, cabut otorisasi dari pengguna Allen. Berikut contoh perintahnya.

    -- Bob memasuki proyek test_project_a.
    USE test_project_a;
    -- Mencabut role Worker dari pengguna Allen.
    REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;
    -- Melihat hasil otorisasi untuk pengguna Allen. Daftar izin tidak berisi informasi izin Drop.
    SHOW GRANTS FOR RAM$Bob@aliyun.com:Allen;
  • Contoh 7: Memberikan izin kepada pengguna (Tom) untuk melakukan kueri semua tabel berdasarkan role (daftar putih)

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a;
      -- Membuat role Worker.
      CREATE ROLE Worker;
      -- Menambahkan pengguna Tom sebagai anggota proyek.
      ADD USER RAM$Bob@aliyun.com:Tom;
      -- Menyambungkan role Worker ke pengguna Tom.
      GRANT Worker TO RAM$Bob@aliyun.com:Tom;
      -- Mengizinkan role Worker untuk melakukan kueri semua tabel di proyek test_project_a.
      GRANT Describe,Select ON TABLE * TO ROLE Worker PRIVILEGEPROPERTIES("policy" = "true", "allow"="true");
      -- Melihat hasil otorisasi untuk pengguna Tom.
      SHOW GRANTS FOR RAM$Bob@aliyun.com:Tom;
      -- Hasil otorisasi berikut dikembalikan. A menunjukkan Allow. Anda dapat melakukan kueri semua tabel di proyek test_project_a.
      Authorization Type: Policy
      [role/worker]
      A      projects/test_project_a/tables/*: Describe | Select
    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan di konsol:

      1. Login ke MaxCompute console dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi kiri, pilih Manage Configurations > Projects.

      3. Di halaman Projects, temukan proyek target dan klik Manage di kolom Actions.

      4. Di tab Role Permissions, klik Create Project-level Role.

      5. Di kotak dialog Create Role, buat peran Sumber Daya, masukkan Role Name, dan tentukan kebijakan otorisasi.

        Berikut contoh kebijakan:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Describe",
                        "odps:Select"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. Di tab Role Permissions, temukan role baru tersebut, klik Manage Members pada kolom Actions, lalu tambahkan RAM$Bob@aliyun.com:Tom ke role tersebut.

Langkah Selanjutnya

Setelah Anda mengonfigurasi kontrol akses berbasis kebijakan, Anda dapat melakukan operasi berikut sesuai kebutuhan:

Untuk informasi lebih lanjut tentang kontrol akses berbasis kebijakan, lihat topik berikut: