MaxCompute memungkinkan Anda mengonfigurasi label tingkat akses untuk pengguna dan label tingkat sensitivitas untuk tabel atau kolom dalam tabel di tingkat proyek. Setelah dikonfigurasi, pengguna hanya dapat mengakses tabel atau kolom yang tingkat sensitivitasnya lebih rendah dari atau sama dengan tingkat akses mereka. Topik ini menjelaskan mekanisme kontrol akses berbasis label dan memberikan contoh penggunaannya.
Informasi latar belakang
Kontrol akses berbasis label, juga dikenal sebagai LabelSecurity, digunakan sebagai kebijakan kontrol akses wajib (MAC) di tingkat proyek. Secara default, LabelSecurity dinonaktifkan setelah pembuatan proyek MaxCompute. Pemilik proyek dapat menjalankan perintah Set LabelSecurity=true|false; di tingkat proyek untuk mengaktifkan atau menonaktifkan LabelSecurity.
Jika LabelSecurity diaktifkan, pemilik proyek harus mendefinisikan tingkat sensitivitas tabel atau kolom serta tingkat akses pengguna atau peran. Pengguna yang ingin mengakses data dengan tingkat sensitivitas tertentu harus memiliki izin SELECT pada tabel yang menyimpan data tersebut dan hanya dapat mengakses data dengan tingkat sensitivitas lebih rendah dari atau sama dengan tingkat akses mereka.
LabelSecurity menyediakan kemampuan berikut untuk data sensitif:
Granularitas minimum yang didukung untuk konfigurasi tingkat sensitivitas adalah kolom dalam tabel.
Label tingkat sensitivitas dapat dikonfigurasikan untuk semua kolom dalam tabel. Sebuah tabel dapat berisi kolom-kolom dengan tingkat sensitivitas yang berbeda.
Label tingkat sensitivitas dapat dikonfigurasikan untuk tampilan. Label tingkat sensitivitas tampilan tidak terkait dengan label tingkat sensitivitas tabel sumber yang sesuai.
Tabel berikut menjelaskan operasi yang didukung oleh LabelSecurity.
Bab | Deskripsi | Dilakukan Oleh | Platform Operasi |
Konfigurasikan label tingkat sensitivitas untuk data dalam tabel atau kolom | Mengizinkan Anda mengonfigurasi label tingkat sensitivitas untuk tabel atau kolom dalam tabel. |
| |
Konfigurasikan label tingkat akses untuk pengguna atau peran | Mengizinkan Anda mengonfigurasi label tingkat akses untuk pengguna atau peran guna mengakses data tingkat sensitivitas. | ||
Mengizinkan Anda memberi otorisasi kepada pengguna atau peran dengan tingkat akses rendah untuk mengakses data dengan tingkat sensitivitas tinggi. | |||
Mengizinkan Anda mencabut izin akses pada data dengan tingkat sensitivitas tinggi dari pengguna atau peran. | |||
Mengizinkan Anda menghapus informasi tentang izin yang kedaluwarsa. |
Kebijakan default untuk kontrol akses berbasis label
Setelah Anda mengonfigurasi label untuk tabel atau kolom dan pengguna atau peran, kebijakan default berikut untuk kontrol akses berbasis label akan diterapkan:
No-ReadUp: Pengguna tidak dapat mengakses tabel atau kolom yang tingkat sensitivitasnya lebih tinggi dari tingkat akses mereka. Jika pengguna ingin mengakses data dengan tingkat sensitivitas lebih tinggi, operasi otorisasi eksplisit diperlukan. Untuk informasi lebih lanjut, lihat Aktifkan Otorisasi Eksplisit Berbasis Label.
Trusted-User: Pengguna dapat menulis data yang tingkat sensitivitasnya tidak lebih tinggi dari tingkat akses mereka. Tingkat sensitivitas default tabel atau tampilan baru adalah 0, yang berarti semua pengguna atau peran dapat mengaksesnya. Tingkat akses default pengguna baru juga adalah 0.
Prasyarat
Sebelum melakukan kontrol akses berbasis label, pastikan informasi berikut telah diperoleh:
Akun pengguna atau nama peran yang ingin diberi izin telah ditambahkan ke proyek MaxCompute Anda. Jika akun pengguna adalah akun Alibaba Cloud, catat dalam format ALIYUN$<account_id>. Jika akun pengguna adalah pengguna RAM, catat dalam format RAM$<account_id>:<RAM user ID>. Jika akun pengguna adalah peran RAM, catat dalam format `RAM$<account_id>:role/<Name of the RAM role>`.
Anda dapat menjalankan perintah
list users;ataulist roles;pada Klien MaxCompute untuk menanyakan nama akun atau peran.Untuk menambahkan pengguna atau peran, lihat Perencanaan dan Manajemen Pengguna atau Perencanaan Peran.
Nama objek. Objek bisa berupa tabel atau kolom.
Anda dapat menjalankan perintah
SHOW TABLES;pada Klien MaxCompute untuk memperoleh nama tabel atau tampilan serta nama kolom dalam tabel atau tampilan.
Batasan
Anda tidak dapat mengonfigurasi label tingkat sensitivitas untuk kolom kunci partisi.
Peringatan
Catat hal-hal berikut saat menggunakan LabelSecurity:
Dalam beberapa sistem MAC tradisional, Anda dapat menggunakan kebijakan keamanan kompleks saat melakukan kontrol akses berbasis label. Ini mencegah data didistribusikan oleh pengguna yang tidak sah dalam suatu proyek. Misalnya, kebijakan No-WriteDown melarang pengguna menulis data yang tingkat sensitivitasnya lebih rendah dari atau sama dengan tingkat akses mereka. Secara default, MaxCompute tidak mendukung kebijakan No-WriteDown untuk mengurangi biaya pengelolaan tingkat sensitivitas data. Jika proyek Anda memiliki persyaratan serupa, Anda dapat menjalankan perintah
Set ObjectCreatorHasGrantPermission=false;untuk memodifikasi konfigurasi keamanan proyek.Untuk mencegah transfer data lintas proyek, Anda dapat menjalankan perintah
set ProjectProtection=true;untuk mengaktifkan perlindungan data proyek. Dengan cara ini, pengguna hanya dapat mengakses data dalam proyek mereka, mencegah transfer data lintas proyek. Untuk informasi lebih lanjut, lihat Perlindungan Data Proyek.Jika Anda menghapus objek, MaxCompute secara otomatis mencabut semua label yang terkait dengan objek tersebut.
Setelah pengguna dihapus, izin yang diberikan kepada pengguna tetap ada. Jika pengguna ditambahkan kembali ke proyek, izin akses historis mereka akan diaktifkan kembali. Untuk informasi lebih lanjut tentang cara membersihkan informasi izin residual pengguna yang dihapus, lihat Bersihkan Sepenuhnya Informasi Izin Residual Pengguna yang Dihapus.
Konfigurasikan label tingkat sensitivitas untuk data dalam tabel atau kolom
Pemilik proyek atau pengguna yang diberi peran Admin mengonfigurasi label tingkat sensitivitas untuk tabel atau kolom dalam tabel.
Sintaksis
SET Label <number> TO TABLE <table_name>[(<column_list>)];Peringatan
Jika Anda mengonfigurasi label tingkat sensitivitas untuk tabel tanpa mengonfigurasi label untuk kolom dalam tabel, tingkat sensitivitas semua kolom dalam tabel sama dengan tingkat sensitivitas tabel. Misalnya, jika tingkat sensitivitas tabel adalah 2 dan tidak ada tingkat sensitivitas yang dikonfigurasi untuk kolom, tingkat sensitivitas semua kolom dalam tabel adalah 2.
Label yang dikonfigurasikan untuk kolom dalam tabel menimpa label yang dikonfigurasikan untuk tabel tanpa memandang apakah tingkat sensitivitas kolom lebih tinggi atau lebih rendah. Label yang dikonfigurasikan untuk tabel tidak menimpa label yang dikonfigurasikan untuk kolom dalam tabel. Misalnya, jika tingkat sensitivitas awal tabel adalah 2 dan tingkat sensitivitas col1 adalah 3, tingkat sensitivitas semua kolom kecuali col1 adalah 2, dan tingkat sensitivitas col1 adalah 3.
Jika Anda ingin memodifikasi label tingkat sensitivitas yang dikonfigurasikan untuk tabel atau kolom, Anda dapat menjalankan ulang perintah untuk mengonfigurasi label tingkat sensitivitas.
Parameter
Parameter
Diperlukan
Deskripsi
number
Ya
Tingkat sensitivitas. Nilai valid: 0-9. Nilai yang lebih besar menunjukkan tingkat keamanan yang lebih tinggi.
table_name
Ya
Nama tabel atau tampilan.
Anda dapat menjalankan perintah
show tables;pada Klien MaxCompute untuk memperoleh nama tabel atau tampilan.column_list
Tidak
Nama kolom dalam tabel. Anda dapat menentukan beberapa nama kolom. Pisahkan nama kolom dengan koma (,).
Konfigurasikan label tingkat akses untuk pengguna atau peran
Pemilik proyek atau pengguna yang diberi peran Admin mengonfigurasi label tingkat akses untuk pengguna lain atau peran dalam proyek.
Sintaksis
SET Label <number> TO {USER|ROLE} <name>;Peringatan
Setelah Anda mengonfigurasi label tingkat akses untuk pengguna, pengguna tersebut hanya dapat mengakses data yang tingkat sensitivitasnya lebih rendah dari atau sama dengan tingkat akses mereka. Misalnya, jika tingkat akses pengguna adalah 3, pengguna dapat mengakses tabel atau kolom yang tingkat sensitivitasnya berkisar antara 0 hingga 3.
Jika Anda ingin memodifikasi label tingkat akses yang dikonfigurasikan untuk pengguna atau peran, Anda harus menjalankan ulang perintah untuk mengonfigurasi label tingkat akses baru.
Parameter
Parameter
Diperlukan
Deskripsi
number
Ya
Tingkat sensitivitas tertinggi data yang dapat diakses oleh pengguna atau peran. Nilai valid berkisar dari 0 hingga 9 dan sesuai dengan label tingkat sensitivitas.
name
Ya
Nama pengguna atau peran.
Anda dapat menjalankan perintah
list users;ataulist roles;pada Klien MaxCompute untuk menanyakan nama akun atau peran.
Aktifkan otorisasi eksplisit berbasis label
Pemilik proyek atau pengguna yang diberi peran Admin memberi otorisasi kepada pengguna atau peran dengan tingkat akses rendah untuk mengakses data dengan tingkat sensitivitas tinggi.
Sintaksis
GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO {USER|ROLE} <name> [WITH exp <days>];Peringatan
Label yang secara eksplisit dikonfigurasikan untuk kolom dalam tabel menimpa label yang secara eksplisit dikonfigurasikan untuk tabel.
Parameter
Parameter
Diperlukan
Deskripsi
number
Ya
Tingkat sensitivitas tertinggi data yang dapat diakses oleh pengguna atau peran.
Nilai valid berkisar dari 0 hingga 9 dan sesuai dengan label tingkat sensitivitas data.
table_name
Ya
Nama tabel atau tampilan.
Anda dapat menjalankan perintah
show tables;pada Klien MaxCompute untuk memperoleh nama tabel atau tampilan.column_list
Tidak
Parameter ini diperlukan jika Anda ingin memberi otorisasi kepada pengguna atau peran untuk mengakses kolom tertentu dalam tabel atau tampilan. Anda dapat menentukan beberapa nama kolom untuk satu operasi otorisasi. Pisahkan nama kolom dengan koma (,).
name
Ya
Nama pengguna atau peran.
Anda dapat menjalankan perintah
list users;ataulist roles;pada Klien MaxCompute untuk menanyakan nama akun atau peran.days
Tidak
Waktu kedaluwarsa izin yang ditentukan. Unit: hari. Nilai valid: 0 hingga 263 - 1. Jika Anda tidak menentukan parameter ini, waktu kedaluwarsa default adalah 180 hari.
Cabut otorisasi eksplisit berbasis label
Pemilik proyek atau pengguna yang diberi peran Admin mencabut label yang dikonfigurasikan secara eksplisit dari pengguna atau peran.
Sintaksis
REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM {USER|ROLE} <name>;Peringatan
Jika Anda mencabut label yang dikonfigurasikan secara eksplisit untuk tabel dari pengguna, label yang dikonfigurasikan secara eksplisit untuk kolom dalam tabel juga akan dicabut.
Jika Anda mencabut label yang dikonfigurasikan secara eksplisit untuk tabel atau kolom, label tingkat akses yang dikonfigurasikan untuk pengguna atau peran tidak terpengaruh. Misalnya, jika pengguna dengan tingkat akses 2 dicabut izinnya untuk mengakses data tabel yang tingkat sensitivitasnya lebih rendah dari atau sama dengan 3, pengguna tersebut masih dapat mengakses data tabel yang tingkat sensitivitasnya lebih rendah dari atau sama dengan 2.
Parameter
Parameter
Diperlukan
Deskripsi
table_name
Ya
Nama tabel atau tampilan.
Anda dapat menjalankan perintah
show tables;pada Klien MaxCompute untuk memperoleh nama tabel atau tampilan.column_list
Tidak
Parameter ini diperlukan jika Anda ingin mencabut izin untuk mengakses data sensitif dari kolom tertentu dalam tabel atau tampilan. Anda dapat menentukan beberapa nama kolom. Pisahkan nama kolom dengan koma (,).
name
Ya
Nama pengguna atau peran.
Anda dapat menjalankan perintah
list users;ataulist roles;pada Klien MaxCompute untuk menanyakan nama akun atau peran.
Informasi jelas tentang izin yang kedaluwarsa
Pemilik proyek atau pengguna yang diberi peran Admin menghapus informasi tentang izin yang kedaluwarsa yang diberikan melalui otorisasieksplisit.
clear expired grants;Contoh
Dalam contoh-contoh berikut, proyek test_project_a menyimpan tabel bernama sale_detail yang berisi kolom shop_name, customer_id, dan total_price. Bob@aliyun.com adalah pemilik proyek test_project_a. Allen adalah pengguna RAM yang termasuk dalam akun Alibaba Cloud Bob@aliyun.com dan telah ditambahkan ke proyek test_project_a.
Contoh 1: Konfigurasikan label tingkat sensitivitas untuk tabel sale_detail dan kolom dalam tabel sale_detail. Contoh perintah:
-- Gunakan akun Alibaba Cloud Bob@aliyun.com untuk mengakses proyek test_project_a. USE test_project_a; -- Setel label tabel sale_detail menjadi 1. Dalam hal ini, tingkat sensitivitas semua kolom dalam tabel adalah 1. SET Label 1 TO TABLE sale_detail; -- Setel label kolom shop_name dan customer_id dalam tabel sale_detail menjadi 2. Dalam hal ini, label kolom lainnya tetap 1. SET Label 2 TO TABLE sale_detail(shop_name, customer_id); -- Ubah label tabel sale_detail menjadi 3. Label shop_name dan customer_id tetap 2. Label kolom lainnya dalam tabel sale_detail diubah menjadi 3. SET Label 3 TO TABLE sale_detail; -- Ubah label kolom shop_name dan customer_id dalam tabel sale_detail menjadi 4. Dalam hal ini, label kolom lainnya tetap 3. SET Label 4 TO TABLE sale_detail(shop_name, customer_id); -- Lihat label tabel. DESCRIBE sale_detail; -- Hasil berikut dikembalikan: +------------------------------------------------------------------------------------+ | Owner: ALIYUN$****@test.aliyun.com | Project: **** | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-12-13 11:27:04 | | LastDDLTime: 2021-12-13 11:27:04 | | LastModifiedTime: 2021-12-13 11:27:26 | +------------------------------------------------------------------------------------+ | TableLabel: 3 | -- Label tabel adalah 3. | MaxLabel: L4 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 784 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | shop_name | string | 4 | | -- Label kolom adalah 4. | customer_id | string | 4 | | -- Label kolom adalah 4. | total_price | double | 3 | | -- Label kolom adalah 3. +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | sale_date | string | | | region | string | | +------------------------------------------------------------------------------------+Contoh 2: Konfigurasikan label tingkat akses untuk akun Alibaba Cloud Kate@aliyun.com dan RAM$Bob@aliyun.com:Allen dalam proyek test_project_a. Contoh perintah:
-- Gunakan akun Alibaba Cloud Bob@aliyun.com untuk mengakses proyek test_project_a. USE test_project_a; -- Setel label tingkat akses akun Alibaba Cloud Kate@aliyun.com menjadi 3. Ini memungkinkan Kate@aliyun.com mengakses data yang tingkat sensitivitasnya 0 hingga 3. SET Label 3 TO USER ALIYUN$Kate@aliyun.com; -- Setel label tingkat akses pengguna RAM Allen menjadi 1. Ini memungkinkan Allen mengakses data yang tingkat sensitivitasnya 0 atau 1. SET Label 1 TO USER RAM$Bob@aliyun.com:Allen; -- Lihat informasi tentang tingkat akses Allen. SHOW LABEL GRANTS FOR RAM$Bob@aliyun.com:Allen; -- Hasil berikut dikembalikan: User Label: 1 (daftar label yang diberikan kosong)Contoh 3: Beri otorisasi eksplisit kepada Allen untuk mengakses data dengan tingkat sensitivitas tinggi. Contoh perintah:
-- Gunakan akun Alibaba Cloud Bob@aliyun.com untuk mengakses proyek test_project_a. USE test_project_a; -- Beri otorisasi eksplisit kepada Allen untuk mengakses data yang tingkat sensitivitasnya lebih rendah dari atau sama dengan 3 dalam tabel sale_detail. Masa berlaku izin yang diberikan adalah 4 hari. GRANT LABEL 3 ON TABLE sale_detail TO USER RAM$Bob@aliyun.com:Allen WITH exp 4; -- Lihat izin yang diberikan kepada Allen. SHOW LABEL GRANTS ON TABLE sale_detail FOR USER RAM$Bob@aliyun.com:Allen; -- Hasil berikut dikembalikan: User Label: 1 +-------------+--------------+--------------------------+ | Column | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | total_price | 3 | 2021-12-31T19:56:18+0800 | +-------------+--------------+--------------------------+ -- Beri otorisasi eksplisit kepada Allen untuk mengakses data yang tingkat sensitivitasnya lebih rendah dari atau sama dengan 3 dalam kolom shop_name, customer_id, dan total_price tabel sale_detail. Masa berlaku izin yang diberikan adalah 10 hari. GRANT LABEL 4 ON TABLE sale_detail(shop_name, customer_id, total_price) TO USER RAM$Bob@aliyun.com:Allen WITH exp 10; -- Lihat izin yang diberikan kepada Allen. SHOW LABEL GRANTS ON TABLE sale_detail FOR USER RAM$Bob@aliyun.com:Allen; -- Hasil berikut dikembalikan: User Label: 1 +-------------+--------------+--------------------------+ | Column | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | customer_id | 4 | 2022-01-06T19:58:00+0800 | +-------------+--------------+--------------------------+ | shop_name | 4 | 2022-01-06T19:58:00+0800 | +-------------+--------------+--------------------------+ | total_price | 4 | 2022-01-06T19:58:00+0800 | +-------------+--------------+--------------------------+Contoh 4: Cabut izin untuk mengakses data dengan tingkat sensitivitas tinggi dari Allen. Contoh perintah:
-- Cabut izin untuk mengakses data yang tingkat sensitivitasnya lebih rendah dari atau sama dengan 3 dalam kolom shop_name, customer_id, dan total_price tabel sale_detail dari Allen. REVOKE LABEL ON TABLE sale_detail(shop_name, customer_id, total_price) FROM USER RAM$Bob@aliyun.com:Allen; -- Lihat izin yang diberikan kepada Allen. SHOW LABEL GRANTS ON TABLE sale_detail FOR USER RAM$Bob@aliyun.com:Allen; -- Hasil berikut dikembalikan: User Label: 1 +-------------+--------------+--------------------------+ | Column | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | total_price | 3 | 2021-12-31T19:56:18+0800 | +-------------+--------------+--------------------------+ -- Cabut izin untuk mengakses data sensitif dalam tabel sale_detail dari Allen. REVOKE LABEL ON TABLE sale_detail FROM USER RAM$Bob@aliyun.com:Allen; -- Lihat izin yang diberikan kepada Allen. SHOW LABEL GRANTS ON TABLE sale_detail FOR USER RAM$Bob@aliyun.com:Allen; -- Hasil berikut dikembalikan: User Label: 1
Apa yang harus dilakukan selanjutnya
Setelah Anda memahami kontrol akses berbasis label, Anda dapat melakukan operasi otorisasi sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat topik-topik berikut: