MaxCompute memungkinkan Anda mengimplementasikan kontrol akses tingkat baris dengan membuat Tampilan. Topik ini menjelaskan metode implementasi spesifik menggunakan contoh praktis.
Informasi latar belakang
MaxCompute memperkenalkan fitur kontrol akses tingkat baris yang ideal untuk mendefinisikan aturan bagi sejumlah besar pengguna. Metode ini menghilangkan kebutuhan untuk membuat objek dibagi untuk setiap pengguna individu, serta menghindari penyimpanan berlebihan dari objek tersebut. Namun, pendekatan ini dapat menghasilkan Rencana kueri yang lebih kompleks berdasarkan tabel asli dan memiliki beberapa batasan. Untuk informasi lebih lanjut, lihat Kontrol akses tingkat baris.
Jika Anda perlu mengimplementasikan kontrol akses tingkat baris untuk pengguna yang berbeda dengan aturan filter mereka sendiri, Anda dapat mencapainya dengan membuat Tampilan atau tabel dan membaginya sesuai. Pendekatan ini mendukung komputasi berdasarkan data yang sudah difilter serta menawarkan operasi yang lebih sederhana dan intuitif.
Skenario
Dalam contoh ini, tabel table_order di Proyek A adalah tabel informasi transaksi pesanan untuk semua pedagang. Tabel ini dapat diakses oleh semua pedagang, tetapi setiap pedagang hanya dapat melihat informasi transaksi pesanan dari tokonya sendiri.
Solusi
Tabel table_order berisi ID pedagang (sellerid). Data dapat difilter berdasarkan ID pedagang. Kontrol akses tingkat baris diperlukan untuk memastikan bahwa setiap pedagang hanya dapat membaca datanya sendiri. Anda dapat menggunakan salah satu dari metode berikut untuk melakukan kontrol izin tingkat baris:
Metode 1: Buat Tampilan terpisah untuk setiap pedagang berdasarkan tabel table_order, dan berikan izin pada Tampilan kepada pedagang terkait. Metode ini direkomendasikan karena memenuhi persyaratan kontrol izin tingkat baris.
Metode 2: Buat tabel terpisah untuk setiap pedagang berdasarkan tabel table_order, dan berikan izin pada tabel kepada pedagang terkait. Metode ini memenuhi persyaratan kontrol akses tingkat baris, tetapi menyebabkan data disimpan secara berulang. Selain itu, untuk memastikan konsistensi data, Anda harus memastikan bahwa tabel diperbarui secara real-time dengan tabel table_order.
Prosedur
Untuk membuat Tampilan di klien MaxCompute guna melakukan kontrol izin tingkat baris, ikuti langkah-langkah berikut:
Masuk ke klien MaxCompute menggunakan akun Alibaba Cloud. Untuk informasi lebih lanjut, lihat Instal dan mulai klien MaxCompute.
Buat Tampilan untuk pedagang tertentu di Proyek A. Contoh pernyataan:
create view <view_name> as select * from table_order WHERE sellerid='xxxx';Untuk informasi lebih lanjut tentang cara membuat Tampilan, lihat Operasi terkait Tampilan.
Buat paket di Proyek A dan berikan pedagang izin pada Tampilan menggunakan paket. Contoh pernyataan:
-- Buat paket. create package <package_name>; -- Tambahkan Tampilan yang Anda buat ke dalam paket. add table <view_name> to package <package_name>; -- Gunakan paket untuk berbagi sumber daya dengan pedagang. allow project <project_name> to install package <package_name>;Untuk informasi lebih lanjut tentang cara berbagi sumber daya menggunakan paket, lihat Akses sumber daya lintas proyek berdasarkan paket.
Instal paket di proyek MaxCompute milik pedagang dan berikan pedagang izin yang diperlukan untuk menggunakan Tampilan. Contoh pernyataan:
-- Instal paket di proyek milik pedagang. install package <Project A>.<package_name>; -- Berikan pedagang izin baca pada paket. grant read on package <Project A>.<package_name> to user <user_name>;
Contoh ini menunjukkan cara memberikan izin Tampilan menggunakan paket. Pemilik proyek MaxCompute juga dapat langsung mengeksekusi pernyataan berikut untuk memberikan pengguna izin SELECT dan DESCRIBE pada Tampilan. Anda dapat memilih metode berdasarkan kebutuhan bisnis Anda.
grant select,describe on table <view_name> to user <user_name>;