Kontrol unduh memungkinkan Anda mengelola siapa yang dapat mengekspor data dari proyek MaxCompute melalui perintah Tunnel. Tanpa fitur ini, setiap pengguna dan role dalam proyek dapat mengunduh tabel atau instans apa pun secara bebas, sehingga berisiko menyebabkan kebocoran data. Setelah fitur ini diaktifkan, hanya pengguna atau role yang memiliki izin unduh eksplisit yang dapat mengekspor data.
Cara kerja
Secara default, kontrol unduh dinonaktifkan untuk proyek baru. Setelah diaktifkan di tingkat proyek, semua operasi unduh berbasis Tunnel akan dibatasi oleh izin eksplisit.
Tabel berikut menunjukkan objek yang mendukung izin unduh beserta cara otorisasinya:
| Jenis objek | Nilai yang valid | Dukungan wildcard |
|---|---|---|
Table | Nama tabel atau view | Hanya berbasis role (*) |
Instance | Nama instans (sama dengan ID instans) | Tidak mendukung wildcard |
Tersedia dua model otorisasi:
| Model | Cara kerja | Paling cocok untuk |
|---|---|---|
| Otorisasi pengguna tunggal | Memberikan izin unduh langsung kepada satu pengguna pada tabel atau instans tertentu | Akses terarah untuk pengguna individu |
| Otorisasi berbasis role | Memberikan izin unduh kepada suatu role, lalu menetapkan role tersebut ke beberapa pengguna | Mengelola akses untuk kelompok; mendukung pola wildcard (*) dalam nama objek |
Batasan dan catatan penggunaan
Batasan:
Otorisasi hanya berlaku untuk subjek (pengguna atau role) dan objek yang sudah ada. Anda tidak dapat memberikan otorisasi sebelumnya untuk subjek atau objek yang belum ada.
Saat memberikan izin langsung kepada pengguna, wildcard (
*) tidak didukung dalam nama objek. Pembatasan ini bertujuan mencegah pemberian akses luas yang tidak disengaja—gunakan otorisasi berbasis role jika Anda memerlukan pola wildcard.
Catatan penggunaan:
Saat suatu objek dihapus, MaxCompute secara otomatis mencabut semua izin unduh pada objek tersebut.
Saat pengguna dihapus dari proyek, izinnya tetap dipertahankan. Jika pengguna tersebut ditambahkan kembali, izin tersebut akan aktif lagi. Untuk menghapus informasi izin sisa, lihat Membersihkan sepenuhnya informasi izin sisa pengguna yang telah dihapus.
Mengaktifkan kontrol unduh
Izin yang diperlukan: Pemilik proyek atau role Super_Administrator.
Jalankan perintah berikut di tingkat proyek:
setproject odps.security.enabledownloadprivilege=true;Untuk menonaktifkan kontrol unduh:
setproject odps.security.enabledownloadprivilege=false;Memberikan dan mencabut izin unduh
Izin yang diperlukan: Untuk memberikan atau mencabut izin pada suatu objek, lihat kolom Authorized by di Izin.
Jalankan semua perintah pada client MaxCompute, MaxCompute Studio, atau Konsol DataWorks.
Alur kerja
Untuk otorisasi berbasis pengguna tunggal maupun berbasis role, ikuti langkah-langkah berikut:
Pastikan pengguna atau role tersebut merupakan anggota proyek. Jalankan
list users;ataulist roles;pada client MaxCompute untuk memverifikasi keberadaannya. Untuk menambahkan pengguna atau role, lihat Perencanaan dan manajemen pengguna atau Perencanaan role.Pastikan nama tabel atau instans yang ingin dikendalikan. Jalankan
show tables;ataushow instances;untuk menampilkan daftar objek yang tersedia.Jalankan perintah
grantataurevoke.Verifikasi hasilnya dengan
show grantsataudescribe role.
Sintaksis
Memberikan izin unduh:
grant Download on <object_type> <object_name> to <subject_type> <subject_name>;Mencabut izin unduh:
revoke Download on <object_type> <object_name> from <subject_type> <subject_name>;Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
object_type | Ya | Jenis objek. Nilai yang valid: Table, Instance. Satu jenis objek per perintah. |
object_name | Ya | Nama tabel, view, atau instans. Untuk otorisasi berbasis role, wildcard didukung—misalnya, table taobao* cocok dengan semua tabel yang namanya diawali dengan taobao. Jalankan show tables; atau show instances; untuk mendapatkan nama. |
subject_type | Ya | Jenis subjek. Nilai yang valid: USER (Akun Alibaba Cloud atau RAM user), ROLE (suatu role). |
subject_name | Ya | Nama pengguna atau role. Satu subjek per perintah. Gunakan ALIYUN$<account> untuk Akun Alibaba Cloud dan RAM$<account>:<username> untuk RAM user. Jalankan list users; atau list roles; untuk mendapatkan nama. |
Contoh
Contoh berikut menggunakan konfigurasi berikut: username@example.com memiliki test_project_a. Allen, Tom, dan Alice adalah RAM user di bawah akun tersebut. Kontrol unduh telah diaktifkan untuk proyek ini.
Contoh 1: Memberikan izin unduh kepada RAM user
Tambahkan Allen sebagai anggota proyek dan berikan izin unduh pada tabel sale_detail:
-- Beralih ke proyek.
use test_project_a;
-- Tambahkan Allen sebagai anggota proyek.
add user RAM$username@example.com:Allen;
-- Berikan izin unduh Allen pada sale_detail.
grant Download on table sale_detail to USER RAM$username@example.com:Allen;
-- Verifikasi izin Allen.
show grants for RAM$username@example.com:Allen;Output yang diharapkan:
Authorization Type: ACL
[user/RAM$username@example.com:Allen]
A projects/test_project_a/tables/sale_detail: DownloadContoh 2: Mencabut izin unduh dari RAM user
Mencabut izin yang diberikan pada Contoh 1:
-- Beralih ke proyek.
use test_project_a;
-- Cabut izin unduh Allen.
revoke Download on table sale_detail from USER RAM$username@example.com:Allen;
-- Verifikasi bahwa izin telah dihapus.
show grants for RAM$username@example.com:Allen;Contoh 3: Memberikan izin unduh kepada beberapa pengguna melalui role
Berikan Alice dan Tom izin unduh pada semua tabel yang namanya diawali dengan tb_:
-- Beralih ke proyek.
use test_project_a;
-- Tambahkan Alice dan Tom sebagai anggota proyek.
add user RAM$username@example.com:Alice;
add user RAM$username@example.com:Tom;
-- Buat role.
create role Worker;
-- Tetapkan role tersebut kepada Alice dan Tom.
grant Worker TO RAM$username@example.com:Alice;
grant Worker TO RAM$username@example.com:Tom;
-- Berikan role Worker izin unduh pada semua tabel tb_*.
grant Download on table tb_* to ROLE Worker;
-- Verifikasi izin role tersebut.
describe role Worker;Output yang diharapkan:
Authorization Type: Policy
[role/worker]
A projects/test_project_a/tables/tb_*: DownloadContoh 4: Mencabut izin unduh berbasis role
Mencabut izin yang diberikan pada Contoh 3 dari Alice dan Tom:
-- Beralih ke proyek.
use test_project_a;
-- Hapus role Worker dari Alice dan Tom.
revoke Worker from RAM$username@example.com:Alice;
revoke Worker from RAM$username@example.com:Tom;
-- Verifikasi bahwa izin Alice tidak lagi mencakup akses unduh.
show grants for RAM$username@example.com:Alice;