All Products
Search
Document Center

MaxCompute:Akses resource lintas proyek berbasis package

Last Updated:Aug 22, 2026

Anda tidak dapat mengakses resource lintas proyek (termasuk lintas akun) secara langsung jika bukan anggota proyek pemilik. Untuk mengatasi hal ini, MaxCompute menyediakan mekanisme kontrol akses berbasis package, yang memungkinkan Anda menggabungkan resource dan izin ke dalam sebuah package agar dapat dipasang oleh proyek lain untuk akses lintas proyek. Topik ini menjelaskan cara menggunakan kontrol akses berbasis package beserta contoh penerapannya.

Informasi latar belakang

Dalam topik ini, sebuah Akun Alibaba Cloud memiliki beberapa proyek MaxCompute dan perlu membagikan tabel tertentu, file resource, serta user-defined function (UDF) di Proyek A dengan proyek lain milik akun tersebut atau proyek dalam Akun Alibaba Cloud lainnya. Anda dapat membagikan resource tersebut ke proyek lain dengan salah satu metode berikut:

  • Tambahkan pengguna dari proyek lain ke Proyek A dan berikan masing-masing pengguna izin untuk mengakses resource tersebut. Metode ini kompleks dan tidak disarankan untuk skenario akses resource lintas proyek. Gunakan metode ini hanya jika diperlukan kontrol akses detail halus terhadap anggota tim proyek Anda. Untuk informasi lebih lanjut tentang sintaksis perintah otorisasi, lihat Kontrol akses berbasis ACL.

  • Gunakan mekanisme kontrol akses berbasis package.

    Mekanisme kontrol akses berbasis package digunakan untuk berbagi data dan resource lintas proyek. Pemilik Proyek A mengemas resource yang dibutuhkan proyek lain beserta izin operasi atas resource tersebut, lalu memberikan otorisasi kepada pemilik proyek lain untuk memasang package tersebut. Setelah package dipasang, pemilik proyek lain dapat menentukan apakah akan memberikan otorisasi kepada pengguna di proyek mereka untuk mengakses resource dalam package tersebut. Gambar berikut menunjukkan cara penerapan mekanisme kontrol akses berbasis package.

    PackageUsage process

Gambar di atas menunjukkan bahwa mekanisme kontrol akses berbasis package melibatkan dua entitas: pembuat package dan pengguna package. Tabel berikut menjelaskan informasi mengenai entitas tersebut dan operasi yang dapat dilakukan oleh masing-masing entitas.

Entitas

Deskripsi

Operasi yang dapat dijalankan

Peran entitas

Platform operasi

Pembuat package

Proyek tempat pembuat package berada menyediakan resource untuk dibagikan. Pembuat package mengemas resource proyek yang perlu dibagikan beserta izin operasi atas resource tersebut, lalu memberikan otorisasi kepada pengguna package untuk memasang package dan mengakses resource di dalamnya.

Buat package

Pemilik proyek tempat resource berada atau pengguna yang diberi peran tingkat proyek Super_Administrator pada proyek tempat resource berada

Tambahkan resource ke package

Hapus resource dari package

Memberi otorisasi paket untuk menggunakan paket lain

Cabut izin akses ke package dari proyek

Hapus package

Lihat paket

Lihat detail package

Pengguna package

Proyek tempat pengguna package berada mengakses resource dalam package. Setelah pengguna package memasang package yang dibuat oleh pembuat package, pengguna package dapat langsung mengakses resource dalam package tersebut.

Pasang package

Pemilik proyek yang menggunakan resource atau pengguna yang diberi peran tingkat proyek Super_Administrator atau Admin pada proyek yang menggunakan resource

Lihat detail package yang telah dipasang

Berikan otorisasi kepada pengguna atau role untuk mengakses package

Uninstall package

Batasan

Sebelum menggunakan mekanisme kontrol akses berbasis package, perhatikan batasan berikut:

  • Maksimal 1.000 resource dapat ditambahkan ke dalam satu package.

  • Satu package dapat dipasang pada maksimal 100.000 proyek MaxCompute.

  • Maksimal 100 package dalam satu proyek MaxCompute dapat dipasang pada proyek MaxCompute lain.

  • Maksimal 100.000 package dapat dibuat dalam satu proyek MaxCompute.

  • Maksimal 100.000 package dapat dipasang dalam satu proyek MaxCompute.

Buat package

Pembuat package membuat package dalam proyek MaxCompute.

  • Sintaksis

    create package <package_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    package_name

    Ya

    Nama package, yang bersifat unik dalam satu proyek. Nama harus terdiri dari 1 hingga 128 karakter, dan dapat berisi huruf, angka, serta garis bawah (_).

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Dalam contoh ini, Akun Alibaba Cloud Bob@aliyun.com adalah pemilik proyek test_project_a dan perlu memberikan otorisasi kepada proyek lain untuk mengakses resource tertentu dalam proyek test_project_a. Buat package. Contoh perintah:

    -- Beralih ke proyek test_project_a.
    use test_project_a; 
    -- Buat package.
    create package datashare;

Tambahkan resource ke package

Pembuat package menambahkan resource yang dibutuhkan pengguna package ke package yang telah dibuat.

  • Sintaksis

    add <object_type> <object_name> to package <package_name> [with privileges <privileges>];
  • Batasan

    Anda tidak dapat menambahkan proyek ke dalam package.

  • Perhatian

    Ketika Anda menambahkan resource ke package, resource tersebut tidak dikemas sebagai Snapshot. Jika data resource diperbarui setelah ditambahkan ke package, pengguna package akan mengakses data resource terbaru.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    object_type

    Ya

    Jenis objek yang ingin Anda tambahkan ke package. Anda hanya dapat menentukan satu jenis objek dalam satu waktu.

    Untuk informasi lebih lanjut mengenai jenis objek, lihat Izin.

    object_name

    Ya

    Nama objek yang ingin Anda hapus dari package. Anda dapat memperoleh nama objek dengan salah satu metode berikut:

    Catatan
    • Anda dapat menggunakan wildcard asterisk (*) saat menambahkan resource. Misalnya, add table * to package package_name; menambahkan semua tabel ke package.

    • Saat menambahkan resource ke package, jangan gunakan format Nama Proyek.Nama Resource untuk nama resource. Misalnya, jika Anda ingin menambahkan tabel bernama table di Proyek A ke package, jangan gunakan A.table sebagai nama resource. Gunakan table sebagai nama resource.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

    privileges

    Tidak

    Izin operasi atas resource dalam package. Jika Anda tidak menentukan parameter ini, izin Read, Describe, dan Select atas resource tersebut akan ditambahkan ke package secara default. Resource dan izin operasi atas resource tersebut tidak dapat dipisahkan dan tidak dapat diperbarui setelah ditambahkan ke package. Jika Anda ingin memperbarui resource atau izin operasi atas resource tersebut dalam package, Anda harus menghapus resource tersebut dari package, lalu menambahkan kembali resource dan izin operasi yang telah diperbarui ke package.

    Untuk informasi lebih lanjut mengenai izin operasi, lihat Izin.

  • Contoh

    Tambahkan file resource udtf.jar dan tabel sale_detail serta bank_data dari proyek test_project_a ke package yang telah Anda buat. Contoh perintah:

    -- Tambahkan resource ke package.
    add resource udtf.jar to package datashare;
    add table sale_detail to package datashare;

Hapus resource dari package

Pembuat package menghapus resource dari package yang telah dibuat.

  • Sintaksis

    remove <object_type> <object_name> from package <package_name>; 
  • Parameter

    Parameter

    Wajib

    Deskripsi

    object_type

    Ya

    Jenis objek yang ingin Anda hapus dari package. Anda hanya dapat menghapus satu objek dalam satu waktu.

    Untuk informasi lebih lanjut mengenai jenis objek, lihat Izin.

    object_name

    Ya

    Nama objek yang ingin Anda hapus dari package. Anda dapat memperoleh nama objek dengan salah satu metode berikut:

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Hapus tabel sale_detail dari package datashare. Contoh perintah:

    -- Hapus resource dari package.
    remove Table sale_detail from package datashare;

Berikan otorisasi kepada proyek untuk menggunakan package

Pembuat package dalam suatu proyek memberikan otorisasi kepada proyek lain untuk menggunakan package yang telah dibuat.

  • Sintaksis

    allow project <project_name> to install package <package_name> [using label <number>];
  • Parameter

    Parameter

    Wajib

    Deskripsi

    project_name

    Ya

    Nama proyek MaxCompute yang ingin Anda beri otorisasi untuk menggunakan package.

    Anda dapat masuk ke MaxCompute console, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

    number

    Tidak

    Parameter ini digunakan untuk menambahkan kebijakan kontrol akses berbasis label. Parameter ini menentukan tingkat sensitivitas data yang dapat diakses pengguna package. Proyek MaxCompute yang diberi otorisasi hanya dapat mengakses data package yang tingkat sensitivitasnya lebih rendah dari atau sama dengan tingkat yang ditentukan oleh number. Jika Anda tidak menentukan parameter ini, tingkat sensitivitasnya secara default adalah 0.

    Untuk informasi lebih lanjut mengenai kontrol akses berbasis label, lihat Kontrol akses berbasis label.

  • Contoh

    Berikan otorisasi kepada test_project_b untuk memasang package datashare yang dibuat dalam proyek test_project_a. Contoh perintah:

    -- Izinkan proyek test_project_b memasang package.
    allow project test_project_b to install package datashare;

Cabut izin akses ke package dari proyek

Pembuat package mencabut izin akses ke package dari suatu proyek.

  • Sintaksis

    disallow project <project_name> to install package <package_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    project_name

    Ya

    Nama proyek MaxCompute dari mana Anda ingin mencabut izin akses ke package.

    Anda dapat masuk ke MaxCompute console, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Cabut izin untuk memasang package datashare dari proyek test_project_a terhadap proyek test_project_b. Contoh perintah:

    -- Cabut otorisasi package.
    disallow project test_project_b to install package datashare;

Hapus package

Pembuat package menghapus package.

  • Sintaksis

    delete|drop package <package_name>;
  • Perhatian

    Jika Anda menghapus package, informasi mengenai izin yang diberikan melalui package tersebut akan dihapus.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    package_name

    Ya

    Nama package yang ingin Anda hapus.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Hapus package datashare yang dibuat dalam proyek test_project_a. Contoh perintah:

    -- Hapus package.
    drop package datashare;

Lihat package

Pembuat package melihat package yang telah dibuat atau dipasang dalam proyek MaxCompute.

  • Sintaksis

    show packages;
  • Contoh

    Lihat informasi mengenai package yang telah dibuat atau dipasang dalam proyek test_project_a. Contoh perintah:

    -- Lihat daftar package.
    show packages;

    Hasil yang dikembalikan berisi informasi berikut:

    • PackageName: nama package yang telah dibuat atau dipasang.

    • CreateTime: waktu pembuatan package.

    • SourceProject: nama proyek MaxCompute tempat package berada.

    • InstallTime: waktu pemasangan package.

    • Status: status package.

    +-------------+--------------------------+
    | PackageName | CreateTime               |
    +-------------+--------------------------+
    | datashare   | 2021-12-28T18:10:39+0800 |
    +-------------+--------------------------+
    +-------------+--------------------+--------------------------+--------+
    | PackageName | SourceProject      | InstallTime              | Status |
    +-------------+--------------------+--------------------------+--------+
    | systables   | information_schema | 2020-11-24T14:11:23+0800 | OK     |
    +-------------+--------------------+--------------------------+--------+

Lihat detail package

Pembuat package melihat detail package yang dibuat dalam proyek MaxCompute.

  • Sintaksis

    describe package <package_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Lihat resource dan izin yang termasuk dalam package datashare di proyek test_project_a. Contoh perintah:

    -- Lihat detail package datashare.
    describe package datashare;

    Hasil yang dikembalikan berisi informasi berikut:

    • CreateTime: waktu pembuatan package.

    • PackageName: nama package.

    • SourceProject: nama proyek MaxCompute tempat package berada.

    • ObjectType: jenis objek dalam package.

    • ObjectName: nama objek dalam package.

    • ObjectPrivileges: izin atas objek dalam package.

    • ProjectName: proyek yang diberi otorisasi untuk memasang package.

    • UserLabel: label pengguna.

    CreateTime:         2021-12-28T18:10:39+0800
    PackageName:        datashare
    SourceProject:      test_project_a
    
    Object List
    +--------------+------------------------------------------+------------------+
    | ObjectType   | ObjectName                               | ObjectPrivileges |
    +--------------+------------------------------------------+------------------+
    | RESOURCE     | udtf.jar                                 | Read             |
    +--------------+------------------------------------------+------------------+
    | TABLE        | sale_detail                              | Describe,Select  |
    +--------------+------------------------------------------+------------------+
    
    Allowed Project List
    +-----------------+-----------+
    | ProjectName     | UserLabel |
    +-----------------+-----------+
    | test_project_b  | 0         |
    +-----------------+-----------+

Pasang package

Pengguna package memasang package dalam proyek MaxCompute.

  • Sintaksis

    install package <project_name>.<package_name>;
  • Perhatian

    Package diekspansi selama pemasangan. Setelah pemasangan, Anda dapat menjalankan perintah show packages; untuk melihat package yang telah dipasang, dan perintah describe package <package_name>; untuk melihat resource dan izinnya.

  • Parameter

    Parameter

    Required

    Description

    project_name

    Yes

    Nama Proyek MaxCompute tempat paket tersebut berada.

    Anda dapat masuk ke Konsol MaxCompute, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Yes

    Nama paket.

    Anda dapat menjalankan perintah show packages; pada client MaxCompute untuk melihat semua paket yang telah dibuat.

  • Contoh

    Pasang package datashare dari proyek test_project_a dalam proyek test_project_b. Dalam contoh ini, Akun Alibaba Cloud Amy@aliyun.com adalah pemilik proyek test_project_b. Contoh perintah:

    -- Beralih ke proyek test_project_b.
    use test_project_b; 
    -- Pasang package.
    install package test_project_a.datashare;

Lihat detail package yang telah dipasang

Pengguna package melihat detail package yang telah dipasang dalam proyek MaxCompute.

  • Sintaksis

    describe package <project_name>.<package_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    project_name

    Ya

    Nama proyek MaxCompute tempat package berada.

    Anda dapat masuk ke MaxCompute console, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Lihat resource dan izin dalam package datashare yang telah dipasang di proyek test_project_b. Contoh perintah:

    -- Lihat detail package.
    describe package test_project_a.datashare;

    Hasil yang dikembalikan berisi informasi berikut:

    • CreateTime: waktu pembuatan package.

    • PackageName: nama package.

    • SourceProject: nama proyek MaxCompute tempat package berada.

    • ObjectType: jenis objek dalam package.

    • ObjectName: nama objek dalam package.

    • ObjectPrivileges: izin atas objek dalam package.

    CreateTime:         2021-12-28T18:10:39+0800
    PackageName:        datashare
    SourceProject:      test_project_a
    
    Object List
    +--------------+------------------------------------------+------------------+
    | ObjectType   | ObjectName                               | ObjectPrivileges |
    +--------------+------------------------------------------+------------------+
    | RESOURCE     | udtf.jar                                 | Read             |
    +--------------+------------------------------------------+------------------+
    | TABLE        | sale_detail                              | Describe,Select  |
    +--------------+------------------------------------------+------------------+

Berikan otorisasi kepada pengguna atau role untuk mengakses package

Pengguna package memberikan otorisasi kepada pengguna atau role untuk mengakses package dalam proyek MaxCompute tempat package tersebut dipasang.

Package yang telah dipasang merupakan jenis objek independen dalam MaxCompute. Jika Anda ingin mengakses resource dalam package, Anda harus memiliki izin Read atas package tersebut. Jika Anda tidak memiliki izin Read, pemilik proyek dan pengguna yang diberi peran Super_Administrator atau Admin dapat memberikan izin Read kepada Anda menggunakan daftar kontrol akses (ACL). Untuk informasi lebih lanjut mengenai kontrol akses berbasis ACL, lihat Kontrol akses berbasis ACL.

  • Sintaksis

    grant <actions> on package <project_name>.<package_name> to {USER|ROLE} <name>;
  • Perhatian

    Setelah izin Read diberikan kepada pengguna atau role, pengguna atau role tersebut hanya dapat mengakses resource dalam package di proyek tempat package tersebut dipasang. Untuk informasi lebih lanjut mengenai cara mengelola izin atas package secara detail halus, lihat Kontrol akses untuk package.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    actions

    Ya

    Izin operasi atas resource dalam package. Tetapkan nilainya ke Read.

    project_name

    Ya

    Nama proyek MaxCompute tempat package berada.

    Anda dapat masuk ke MaxCompute console, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

    name

    Ya

    Nama akun pengguna atau role yang ingin Anda beri izin akses. Anda hanya dapat menentukan satu akun pengguna atau role dalam satu operasi otorisasi.

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

  • Contoh

    Dalam contoh ini, Bella adalah Pengguna RAM dari Akun Alibaba Cloud Amy@aliyun.com. Berikan otorisasi kepada Bella untuk mengakses package datashare. Contoh perintah:

    -- Berikan izin kepada Bella untuk mengakses package.
    grant Read on package test_project_a.datashare to user RAM$Amy@aliyun.com:Bella;

Cabut izin akses ke package dari pengguna atau role

Pengguna package mencabut izin akses ke package dari pengguna atau role dalam proyek MaxCompute tempat package tersebut dipasang.

  • Sintaksis

    revoke <actions> on package <project_name>.<package_name> from {USER|ROLE} <name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    actions

    Ya

    Izin operasi atas resource dalam package. Tetapkan nilainya ke Read.

    project_name

    Ya

    Nama proyek MaxCompute tempat package berada.

    Anda dapat masuk ke MaxCompute console, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

    name

    Ya

    Nama akun pengguna atau role dari mana Anda ingin mencabut izin akses ke package. Anda hanya dapat menentukan satu akun pengguna atau role dalam satu operasi pencabutan.

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

  • Contoh

    Cabut izin akses ke package dari Bella. Contoh perintah:

     -- Cabut akses ke package dari pengguna RAM$Amy@aliyun.com:Bella.
    revoke Read on package test_project_a.datashare from user RAM$Amy@aliyun.com:Bella;

Uninstall package

Pengguna package menguninstall package yang telah dipasang dalam proyek MaxCompute.

  • Sintaksis

    uninstall package <project_name>.<package_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    project_name

    Ya

    Nama proyek MaxCompute tempat package berada.

    Anda dapat masuk ke MaxCompute console, pilih wilayah di pojok kiri atas, lalu temukan nama proyek pada tab Projects.

    package_name

    Ya

    Nama package.

    Anda dapat menjalankan perintah show packages; pada MaxCompute client untuk melihat semua package yang telah dibuat.

  • Contoh

    Uninstall package datashare yang telah dipasang di proyek test_project_b. Contoh perintah:

    -- Menguninstall paket.
    uninstall package test_project_a.datashare;

Contoh penggunaan

Dalam contoh ini, Akun Alibaba Cloud Bob@aliyun.com adalah pemilik proyek test_project_a. Akun Alibaba Cloud Amy@aliyun.com adalah pemilik proyek test_project_b. Untuk keperluan bisnis, Anda ingin membagikan file resource udtf.jar dan tabel sale_detail di proyek test_project_a dengan test_project_b. Anda juga ingin agar Pengguna RAM Amy@aliyun.com:Bella di proyek test_project_b dapat mengakses resource tersebut. Lakukan langkah-langkah berikut pada MaxCompute client:

  1. Buka proyek test_project_a dan buat package menggunakan Akun Alibaba Cloud Bob@aliyun.com.

    -- Beralih ke proyek test_project_a.
    use test_project_a; 
    -- Buat package.
    create package datashare;
  2. Gunakan Akun Alibaba Cloud Bob@aliyun.com untuk menambahkan resource ke package yang telah dibuat.

    -- Tambahkan resource ke package.
    add resource udtf.jar to package datashare;
    add table sale_detail to package datashare;
  3. Gunakan Akun Alibaba Cloud Bob@aliyun.com untuk memberikan otorisasi kepada proyek test_project_b agar dapat memasang package.

    -- Izinkan proyek test_project_b memasang package.
    allow project test_project_b to install package datashare;
  4. Buka proyek test_project_b dan pasang package menggunakan Akun Alibaba Cloud Amy@aliyun.com.

    -- Beralih ke proyek test_project_b.
    use test_project_b;
    -- Pasang package.
    install package test_project_a.datashare; 
    -- Lihat daftar resource dalam package.
    describe package test_project_a.datashare; 
    -- Hasil berikut dikembalikan:
    CreateTime:         2021-12-28T18:10:39+0800
    PackageName:        datashare
    SourceProject:      test_project_a
    
    Object List
    +--------------+------------------------------------------+------------------+
    | ObjectType   | ObjectName                               | ObjectPrivileges |
    +--------------+------------------------------------------+------------------+
    | RESOURCE     | udtf.jar                                 | Read             |
    +--------------+------------------------------------------+------------------+
    | TABLE        | sale_detail                              | Describe,Select  |
    +--------------+------------------------------------------+------------------+
  5. Gunakan Akun Alibaba Cloud Amy@aliyun.com untuk memberikan otorisasi kepada Bella agar dapat mengakses package.

    -- Berikan izin kepada Bella untuk mengakses package.
    grant Read on package test_project_a.datashare to user RAM$Amy@aliyun.com:Bella; 
  6. Bella melakukan kueri terhadap tabel sale_detail.

    SELECT * FROM test_project_a.sale_detail;

Referensi