Topik ini menjelaskan fungsi-fungsi yang dapat Anda gunakan untuk mengelola Model Izin Sederhana (SPM) di Hologres.
Ikhtisar fungsi
Topik ini menjelaskan fungsi dan fitur Model Izin Sederhana.
spm_enable: Mengaktifkan model izin sederhana.
spm_migrate: Melakukan migrasi objek instans yang sudah ada, seperti tabel, view, dan foreign table, ke model izin SPM.
spm_create_user: Membuat pengguna dengan hanya izin logon. Anda harus memberikan izin spesifik kepada pengguna tersebut untuk pengembangan.
spm_grant: Menambahkan pengguna ke kelompok pengguna.
spm_revoke: Menghapus pengguna dari kelompok pengguna.
spm_disable: Menonaktifkan model izin sederhana untuk DB saat ini.
spm_cleanup: Melakukan purge terhadap kelompok pengguna yang dicadangkan oleh SPM dari suatu DB.
spm_enable
Deskripsi
Fungsi spm_enable() mengaktifkan model izin sederhana.
Setelah memanggil fungsi spm_enable(), sistem secara otomatis membuat empat kelompok pengguna: {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer.
Sintaksis
CALL spm_enable();CatatanHanya superuser instans yang dapat memanggil fungsi spm_enable().
Catatan Penggunaan
Perubahan berikut terjadi setelah memanggil fungsi spm_enable() untuk mengaktifkan SPM:
Semua izin pada DB dicabut dari kelompok pengguna PUBLIC. Akibatnya, pengguna tanpa izin eksplisit tidak dapat terhubung ke DB target.
Semua izin pada semua skema di dalam DB dicabut dari kelompok pengguna PUBLIC.
Kelompok {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer semuanya dapat terhubung ke DB.
Kelompok {db}_admin menjadi Pemilik DB dan semua skema di dalam DB.
Kelompok {db}_developer, {db}_writer, dan {db}_viewer memiliki izin USAGE pada semua skema. Kelompok {db}_developer juga memiliki izin CREATE pada semua skema.
Kelompok {db}_developer menjadi pemilik objek yang dibuat oleh anggota kelompok {db}_admin dan {db}_developer. Kelompok {db}_writer diberikan izin baca-tulis, dan kelompok {db}_viewer diberikan izin read-only.
spm_migrate
Deskripsi
Fungsi spm_migrate() melakukan migrasi objek instans yang sudah ada, seperti tabel, view, dan foreign table, ke model izin SPM.
Sintaksis
CALL spm_migrate( [ batch_size ] );Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Rentang nilai
batch_size
Jumlah objek per migrasi massal.
Jika Anda mengatur parameter ini ke 0, nilai saat ini dari max_locks_per_transaction digunakan sebagai ukuran batch.
Nilai harus berada dalam rentang [0, max_locks_per_transaction]. Nilai di luar rentang ini tidak valid. Anda dapat menjalankan perintah SQL
show max_locks_per_transaction;untuk melihat nilai aktual max_locks_per_transaction.Jika instans Anda memiliki banyak objek (ribuan atau puluhan ribu) yang perlu dialihkan ke model izin sederhana, Anda harus menjalankan fungsi spm_migrate() beberapa kali hingga semua objek dialihkan.
Selain itu, bergabunglah dengan grup komunikasi gudang data real-time Hologres untuk meminta peningkatan nilai parameter max_locks_per_transaction, lalu lakukan operasi tersebut. Untuk informasi lebih lanjut tentang cara bergabung ke grup, lihat Dapatkan dukungan online lebih lanjut.
Catatan Penggunaan
Jika pesan
DONE BUT NOT COMPLETEDdikembalikan setelah memanggil fungsi spm_migrate(), berarti tidak semua objek telah dimigrasikan. Anda harus memanggil kembali spm_migrate().Jika pesan
COMPLETEDdikembalikan, berarti semua objek telah dimigrasikan.
Contoh
CALL spm_migrate(); // Alihkan maksimal sejumlah objek sesuai max_locks_per_transaction ke pengelolaan SPM. CALL spm_migrate(128); // Alihkan 128 objek ke pengelolaan SPM.
spm_create_user
Deskripsi
Fungsi spm_create_user() membuat pengguna dalam model izin sederhana. Pengguna yang dibuat hanya memiliki izin logon. Anda harus memberikan izin spesifik kepada pengguna tersebut untuk pengembangan.
CatatanHanya superuser atau anggota kelompok {db}_admin yang dapat memanggil fungsi ini.
Sintaksis
CALL spm_create_user( user_name [, role_name] );Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
user_name
Username yang akan dibuat. Formatnya sebagai berikut:
Akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.
Akun Pengguna RAM, seperti RAM$mainaccount:subuser atau p4_202338382183xxx.
role_name
Saat membuat pengguna, Anda dapat menambahkan pengguna tersebut ke salah satu kelompok pengguna berikut sesuai kebutuhan:
{db}_admin
{db}_developer
{db}_writer
{db}_viewer
Contoh
CALL spm_create_user('my_t***@aliyun.com'); CALL spm_create_user('RAM$my_test:mysubuser', 'mydb_developer'); CALL spm_create_user('13532313103042xxx'); CALL spm_create_user('p4_23319103042xxx', 'mydb_admin');
spm_grant
Deskripsi
Fungsi spm_grant() menambahkan pengguna ke kelompok pengguna {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.
CatatanHanya superuser atau anggota kelompok {db}_admin yang dapat memanggil fungsi ini.
Sintaksis
CALL spm_grant( role_name, user_name );Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
role_name
Anda dapat menambahkan pengguna ke salah satu kelompok pengguna berikut sesuai kebutuhan:
{db}_admin
{db}_developer
{db}_writer
{db}_viewer
Untuk informasi lebih lanjut tentang izin kelompok pengguna, lihat Model izin sederhana (SPM).
user_name
Username yang akan ditambahkan ke kelompok pengguna. Formatnya sebagai berikut:
Akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.
Akun Pengguna RAM, seperti RAM$mainaccount:subuser atau p4_202338382183xxx.
Catatan Penggunaan
Anda hanya dapat memanggil fungsi ini setelah model izin sederhana diaktifkan.
user_name harus berupa akun Alibaba Cloud atau ID akun Alibaba Cloud.
role_name harus berupa {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.
Contoh
CALL spm_grant('mydb_developer', 'p4_202338382183xxx');// Berikan izin developer untuk database mydb kepada Pengguna RAM. CALL spm_grant('mydb_admin', 'RAM$my_test:xxx');// Berikan izin admin untuk database mydb kepada Pengguna RAM. CALL spm_grant('otherdb_admin', '13532313103042xxx'); // Error. Untuk menambahkan pengguna ke role DB lain, hubungkan ke DB tersebut dan jalankan fungsi spm_grant.
spm_revoke
Deskripsi
Fungsi spm_revoke() menghapus pengguna dari kelompok pengguna {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.
CatatanHanya superuser atau anggota kelompok {db}_admin yang dapat memanggil fungsi ini.
Sintaksis
CALL spm_revoke( role_name, user_name );Catatan Penggunaan
Anda hanya dapat memanggil fungsi ini setelah model izin sederhana diaktifkan.
user_name harus berupa akun Alibaba Cloud atau ID akun Alibaba Cloud.
role_name harus berupa {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.
Contoh
CALL spm_revoke('mydb_developer', 'p4_202338382183xxx');// Hapus Pengguna RAM dari kelompok developer database mydb. CALL spm_revoke('mydb_admin', 'RAM$my_test:xxx');// Hapus Pengguna RAM dari kelompok admin database mydb. CALL spm_revoke('otherdb_admin', '13532313103042xxx'); // Error. Untuk menghapus pengguna dari kelompok pengguna DB lain, hubungkan ke DB tersebut dan jalankan spm_revoke.
spm_disable
Deskripsi
Fungsi spm_disable() menonaktifkan model izin sederhana untuk DB saat ini.
CatatanHanya superuser yang dapat memanggil fungsi ini.
Sintaksis
CALL spm_disable();Catatan Penggunaan
Langkah-langkah berikut menjelaskan cara menonaktifkan SPM:
Kelompok pengguna {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer tetap dipertahankan. Anda dapat menggunakan pernyataan otorisasi dalam mode expert untuk menambahkan pengguna ke kelompok-kelompok pengguna ini guna pengelolaan izin. Pemilik objek database tetap {db}_developer.
Izin CONNECT dan TEMPORARY pada DB diberikan kepada PUBLIC.
Izin USAGE dan CREATE pada skema public di dalam DB diberikan kepada PUBLIC.
Izin EXECUTE pada fungsi dan prosedur di skema public DB diberikan kepada PUBLIC.
Izin USAGE pada LANGUAGE buatan pengguna diberikan kepada PUBLIC.
Izin USAGE pada TYPE buatan pengguna diberikan kepada PUBLIC.
Contoh
CALL spm_disable();
spm_cleanup
Deskripsi
Fungsi spm_cleanup() melakukan purge terhadap kelompok pengguna yang dicadangkan oleh SPM dari suatu DB, termasuk {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer.
CatatanHanya superuser yang dapat memanggil fungsi ini.
Sintaksis
CALL spm_cleanup( db_name [, batch_size ] );Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Rentang nilai
db_name
DB tempat kelompok pengguna akan di-purge. Apabila db_name mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda. Misalnya,
"MYDB".Tidak ada
batch_size
Jumlah objek yang dimigrasikan dalam satu batch.
Nilai 0 menunjukkan bahwa nilai max_locks_per_transaction saat ini digunakan sebagai batch_size.
[0, max_locks_per_transaction]. Nilai di luar rentang ini tidak valid.
Jika instans Anda memiliki banyak objek untuk dimigrasikan, seperti ribuan atau bahkan puluhan ribu, overflow lock dapat terjadi. Jika hal ini terjadi, eksekusi fungsi spm_migrate() beberapa kali hingga semua objek dimigrasikan.
Juga, bergabunglah dengan grup komunikasi Hologres untuk meminta peningkatan nilai parameter max_locks_per_transaction, lalu eksekusi migrasi tersebut. Untuk informasi tentang cara bergabung ke grup, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.
Catatan Penggunaan
Jika pesan
DONE BUT NOT COMPLETEDdikembalikan, pembersihan belum lengkap dan kelompok pengguna yang dicadangkan belum dihapus. Anda harus memanggil kembali fungsi spm_cleanup().Jika pesan
COMPLETEDdikembalikan, pembersihan telah selesai dan kelompok pengguna yang dicadangkan telah dihapus. Anda tidak perlu memanggil fungsi ini lagi.
Contoh
CALL spm_cleanup('mydb'); // Alihkan kepemilikan maksimal sejumlah objek sesuai max_locks_per_transaction ke current_user sekaligus. CALL spm_cleanup('mydb', 128);// Alihkan kepemilikan 128 objek ke current_user sekaligus.Skenario 1: Hapus DB, lalu purge kelompok pengguna.
drop database mydb; CALL spm_cleanup('mydb'); // Tidak perlu mencoba ulang. Operasi berhasil dalam satu kali jalan.Skenario 2: Jika DB masih ada, Anda harus terhubung ke DB tersebut untuk melakukan purge.
CALL spm_cleanup('otherdb'); ERROR: Permission Denied. execute in database otherdb, or drop database before call spm_cleanup.
Izin pemanggilan fungsi
Tabel berikut menjelaskan izin pemanggilan fungsi untuk kelompok pengguna yang berbeda.
Fungsi | Fungsi | Superuser | db_admin | db_developer | db_writer | db_viewer |
spm_enable | Mengaktifkan model izin sederhana. | Ya. | Tidak | Tidak |
spm_disable | Menonaktifkan model izin sederhana. | Ya. | Tidak diberikan | Tidak |
spm_grant | Menambahkan pengguna ke kelompok. | Ya. | Ya. | Tidak |
spm_revoke | Menghapus pengguna dari kelompok. | Ya. | Diberikan | Tidak |
spm_migrate | Memindahkan tabel atau objek mirip tabel yang sudah ada ke pengelolaan SPM. | Ya. | Diberikan | Tidak |
spm_cleanup | Menghapus semua kelompok pengguna yang dicadangkan dari suatu DB. | Ya. | Tidak | Tidak. |
spm_create_user | Membuat pengguna sederhana yang hanya memiliki izin logon. | Ya. | Ya. | Tidak |
Perintah izin yang dibatasi
Setelah mengaktifkan model izin sederhana, beberapa perintah terkait izin dibatasi. Tabel berikut menjelaskan perintah-perintah yang dibatasi dalam model izin sederhana.
Pernyataan | Deskripsi |
alter table owner to xx | Pemilik semua tabel secara otomatis adalah kelompok pengguna developer dari skema yang bersangkutan. Pemilik tidak dapat diubah dan tidak perlu diubah secara manual. |
grant | Setelah Anda menambahkan pengguna ke kelompok pengguna menggunakan |
revoke | Saat menambahkan pengguna ke kelompok pengguna dengan |
alter default privileges | Pada model izin sebelumnya, otorisasi hanya berlaku untuk tabel saat ini dan masa lalu. Anda harus memberikan izin lagi untuk tabel masa depan. Dalam model sederhana, Anda tidak perlu mempertimbangkan waktu pembuatan tabel. Anda hanya perlu menambahkan pengguna ke kelompok pengguna untuk memberikan izin yang sesuai. Oleh karena itu, Anda tidak perlu memberikan izin untuk tabel masa depan. |
create role / drop role / alter role / alter role set kelompok pengguna default | Kelompok pengguna db_admin, db_developer, db_writer, dan db_viewer adalah kelompok pengguna sistem default. Kelompok ini dibuat secara otomatis setelah model izin sederhana diaktifkan. Pengguna, termasuk superuser, tidak diizinkan membuat atau mengubah kelompok pengguna default ini. |
rename to/from kelompok pengguna default | Anda tidak dapat mengganti nama kelompok pengguna yang dicadangkan |