全部产品
Search
文档中心

MaxCompute:Kontrol akses berbasis kebijakan

更新时间:Nov 16, 2025

MaxCompute menyediakan metode kontrol akses berbasis kebijakan untuk pengaturan izin yang kompleks dan fleksibel. Metode ini ideal bagi perusahaan besar dan skenario kompleks yang memerlukan kontrol detail halus. Berbeda dengan otorisasi daftar kontrol akses (ACL), kontrol akses berbasis kebijakan juga mendukung blacklist. Fitur ini memungkinkan Anda membuat kebijakan yang memberikan atau menolak izin suatu peran untuk melakukan operasi tertentu pada objek tertentu. Setelah peran tersebut ditetapkan kepada pengguna, izin peran tersebut akan berlaku. Topik ini menjelaskan perintah otorisasi kebijakan yang didukung MaxCompute dan memberikan contoh otorisasi.

Informasi latar belakang

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

Metode kontrol akses ini menyelesaikan masalah otorisasi yang tidak dapat diselesaikan menggunakan kontrol akses berbasis ACL. Misalnya, seorang pengguna diberi peran developer dan secara default memiliki izin untuk menghapus tabel. Jika Anda ingin menolak peran 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.

Skenario

Deskripsi

Pemberi otorisasi

Titik akhir otorisasi

Memberikan izin kepada pengguna berdasarkan peran

Berikan izin kepada suatu peran untuk mengizinkan atau menolak satu atau beberapa operasi pada objek tertentu. Kemudian, tetapkan peran tersebut kepada beberapa pengguna. Pengguna mewarisi izin dari peran tersebut.

Lihat kolom Pemberi otorisasi dalam izin MaxCompute.

Menggunakan peran kustom untuk otorisasi detail halus bagi pengguna dengan peran bawaan

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

Lingkup

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

  • Prasyarat:

    • Kontrol akses berbasis kebijakan hanya mendukung otorisasi untuk peran yang sudah ada. Pastikan nama peran yang akan diberi otorisasi dan pastikan peran tersebut telah ditambahkan ke proyek MaxCompute. Anda dapat menjalankan perintah list roles; pada Klien MaxCompute untuk mengambil informasi peran. Untuk membuat peran baru, lihat Perencanaan peran.

    • Jenis objek, nama objek, dan aksi yang akan diberi otorisasi.

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

  • Tindakan pencegahan:

    • Jika otorisasi daftar putih dan blacklist dikonfigurasi bersamaan, blacklist 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 timbul dari penghapusan dan pembuatan ulang objek dengan nama yang sama.

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

Format perintah

Perintah kontrol akses berbasis kebijakan diformat sebagai berikut:

  • Otorisasi kebijakan

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

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

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Wajib

Deskripsi

actions

Ya

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

Jika Anda menentukan beberapa aksi, 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 perintah.

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

object_name

Ya

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

  • Nama proyek: Anda dapat masuk ke Konsol MaxCompute, alihkan wilayah di pojok kiri atas, lalu peroleh nama proyek MaxCompute dari tab Project Management.

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

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

  • Nama sumber daya: Anda dapat memperoleh nama sumber daya dengan mengeksekusi perintah list resources; pada Klien MaxCompute.

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

  • Nama Instans: Anda dapat memperoleh ID instans dengan mengeksekusi perintah show instances; pada Klien MaxCompute.

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 saat memberikan izin kepada ROLE. Anda tidak dapat menggunakan karakter wildcard saat memberikan izin kepada USER.

role_name

Ya

Nama peran yang akan diberi otorisasi. Anda hanya dapat menentukan satu peran dalam satu perintah.

Anda dapat menjalankan perintah list roles; pada Klien MaxCompute untuk memperoleh nama peran.

privilegeproperties

policy

Ya

Tetapkan nilainya ke true. Ini menunjukkan bahwa metode kontrol akses berbasis kebijakan digunakan.

allow

Diperlukan untuk otorisasi daftar putih

Menentukan mekanisme otorisasi. Nilai yang valid:

  • true: Mengizinkan operasi yang ditentukan pada objek yang ditentukan.

  • false: Menolak operasi yang ditentukan pada objek yang ditentukan. Ini adalah mekanisme blacklist.

conditions

Tidak

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

Contoh kontrol akses berbasis kebijakan

Asumsikan bahwa Bob@aliyun.com adalah pemilik proyek test_project_a, dan Allen serta Tom adalah pengguna Manajemen Akses Sumber Daya (RAM) di bawah akun Bob@aliyun.com. Allen telah diberi peran Admin proyek test_project_a. Contoh berikut menunjukkan cara melakukan operasi otorisasi pada Klien MaxCompute:

  • Contoh 1: Memberikan izin kepada pengguna berdasarkan peran (blacklist)

    Tolak Tom dari menghapus tabel yang namanya dimulai dengan tb_.

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a;
      -- Membuat peran Worker.
      CREATE ROLE Worker;
      -- Menambahkan pengguna Tom sebagai anggota proyek.
      ADD USER RAM$Bob@aliyun.com:Tom;
      -- Menyambungkan peran Worker ke pengguna Tom.
      GRANT Worker TO RAM$Bob@aliyun.com:Tom;
      -- Menolak peran Worker dari menghapus tabel yang namanya dimulai 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 namanya dimulai 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. Masuk ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi sebelah kiri, pilih Management Configuration > Project Management.

      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 definisikan kebijakan otorisasi.

        Berikut adalah contoh kebijakan:

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

  • Contoh 2: Mencabut otorisasi kebijakan (blacklist)

    Berdasarkan Contoh 1, cabut otorisasi dari pengguna Tom.

    -- Bob memasuki proyek test_project_a.
    USE test_project_a; 
    -- Mencabut peran 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 peran (daftar putih)

    Izinkan Tom untuk memperbarui data di tabel yang namanya dimulai dengan tb_.

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a; 
      -- Membuat peran Worker.
      CREATE ROLE Worker; 
      -- Menambahkan pengguna Tom sebagai anggota proyek.
      ADD USER RAM$Bob@aliyun.com:Tom;
      -- Menyambungkan peran Worker ke pengguna Tom.
      GRANT Worker TO RAM$Bob@aliyun.com:Tom; 
      -- Izinkan peran Worker untuk memperbarui data di tabel yang namanya dimulai 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 namanya dimulai 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. Masuk ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi sebelah kiri, pilih Management Configuration > Project Management.

      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 definisikan kebijakan otorisasi.

        Berikut adalah contoh kebijakan:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Update"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/tb_*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. Di tab Role Permissions, klik Manage Members di kolom Actions untuk peran baru dan tambahkan RAM$Bob@aliyun.com:Tom ke peran 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 peran 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 bagi pengguna dengan peran 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 peran Worker.
      CREATE ROLE Worker;
      -- Menyambungkan peran Worker ke pengguna Allen.
      GRANT Worker TO RAM$Bob@aliyun.com:Allen;
      -- Menolak peran 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. Masuk ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi sebelah kiri, pilih Management Configuration > Project Management.

      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, dan tentukan Role Name dan kebijakan otorisasi.

        Berikut adalah contoh kebijakan:

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

  • Contoh 6: Mencabut otorisasi bagi pengguna dengan peran bawaan

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

    -- Bob memasuki proyek test_project_a.
    USE test_project_a;
    -- Mencabut peran 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 mengkueri semua tabel berdasarkan peran (daftar putih)

    • Contoh berikut menunjukkan cara menerapkan otorisasi kebijakan menggunakan perintah:

      -- Bob memasuki proyek test_project_a.
      USE test_project_a;
      -- Membuat peran Worker.
      CREATE ROLE Worker;
      -- Menambahkan pengguna Tom sebagai anggota proyek.
      ADD USER RAM$Bob@aliyun.com:Tom;
      -- Menyambungkan peran Worker ke pengguna Tom.
      GRANT Worker TO RAM$Bob@aliyun.com:Tom;
      -- Izinkan peran Worker untuk mengkueri 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 mengkueri 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. Masuk ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.

      2. Di panel navigasi sebelah kiri, pilih Management Configuration > Project Management.

      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, atur Jenis Peran ke Sumber daya, tentukan Role Name, dan atur Metode Otorisasi ke Kebijakan.

        Berikut adalah 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, klik Manage Members di kolom Actions untuk peran baru dan tambahkan RAM$Bob@aliyun.com:Tom ke peran tersebut.

Langkah selanjutnya

Setelah memahami mekanisme otorisasi kebijakan, Anda dapat melakukan operasi otorisasi berikut sesuai kebutuhan:

Untuk informasi selengkapnya tentang mekanisme otorisasi kebijakan, lihat topik berikut: