Topik ini menjelaskan fungsi-fungsi dari model izin tingkat skema (SLPM) di Hologres. Anda dapat memanggil fungsi-fungsi ini untuk mengelola SLPM.
Ikhtisar
SLPM mendukung fungsi-fungsi berikut:
slpm_enable: Mengaktifkan SLPM.
slpm_migrate: Memigrasi objek yang ada seperti tabel, view, dan tabel asing ke SLPM.
slpm_create_user: Membuat pengguna di SLPM.
slpm_grant: Menambahkan pengguna ke grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.
slpm_revoke: Menghapus pengguna dari grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.
slpm_disable: Menonaktifkan SLPM untuk database.
slpm_cleanup: Menghapus grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer yang disimpan untuk SLPM.
slpm_rename_schema: Mengganti nama skema.
slpm_enable
Deskripsi
slpm_enable: Mengaktifkan SLPM.
Setelah memanggil fungsi slpm_enable, sistem secara otomatis membuat grup pengguna berikut: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer.
Sintaksis
CALL slpm_enable ();CatatanUntuk memanggil fungsi slpm_enable, Anda harus menjadi superuser dari instance Hologres.
Catatan Penggunaan
Setelah memanggil fungsi slpm_enable untuk mengaktifkan SLPM pada database, perubahan berikut terjadi pada izin pengguna:
Semua izin pada database dicabut dari grup PUBLIC. Ini mencegah pengguna tidak sah untuk terhubung ke database.
Semua izin pada semua skema database dicabut dari grup PUBLIC.
Pengguna dalam grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer memiliki izin untuk terhubung ke database.
Pengguna dalam grup {db}.admin menjadi pemilik database dan semua skema database.
Pengguna dalam grup {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer memiliki izin USAGE pada skema. Pengguna dalam grup {db}.{schema}.developer memiliki izin CREATE pada skema.
Setelah pengguna dalam grup {db}.admin dan {db}.{schema}.developer membuat objek berdasarkan skema, pengguna dalam grup {db}.{schema}.developer adalah pemilik objek tersebut. Pengguna dalam grup {db}.{schema}.writer memiliki izin baca dan tulis pada objek tersebut. Pengguna dalam grup {db}.{schema}.viewer memiliki izin hanya-baca pada objek tersebut.
Setelah pengguna dalam grup {db}.admin dan {db}.{schema}.developer membuat objek yang tidak memiliki skema, seperti server asing, pembungkus data asing, dan bahasa, pengguna dalam grup {db}.admin adalah pemilik objek tersebut. Pengguna dalam grup {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer memiliki izin USAGE pada objek tersebut.
slpm_migrate
Deskripsi
slpm_migrate: Memigrasi objek yang ada seperti tabel, view, dan tabel asing ke SLPM.
Sintaksis
CALL slpm_migrate ( [ batch_size ] );Tabel berikut menjelaskan parameter dalam sintaksis.
Parameter
Deskripsi
Rentang Nilai
batch_size
Jumlah maksimum objek yang dapat dimigrasi sekaligus.
Jika Anda mengatur parameter ini ke 0, jumlah maksimum objek yang dapat dimigrasi sekaligus ditentukan oleh parameter max_locks_per_transaction.
[1, 64]. Parameter ini tidak valid jika nilainya di luar rentang ini.
Jika database Anda berisi banyak objek, seperti ratusan objek, Anda harus memanggil fungsi slpm_migrate beberapa kali hingga semua objek dimigrasi.
Jika database Anda berisi jumlah objek yang sangat besar, misalnya lebih dari ribuan atau bahkan puluhan ribu objek, kami menyarankan agar Anda menghubungi dukungan teknis di grup DingTalk untuk menaikkan nilai parameter max_locks_per_transaction sebelum memigrasikan objek. Lihat Dapatkan dukungan online untuk Hologres.
Catatan Penggunaan
Jika pesan
DONE BUT NOT COMPLETEDdikembalikan setelah Anda memanggil fungsi slpm_migrate, masih ada beberapa objek yang perlu dimigrasikan. Dalam hal ini, panggil kembali fungsi slpm_migrate.Jika pesan
COMPLETEDdikembalikan, semua objek telah dimigrasikan.
Contoh
CALL slpm_migrate (); // Migrasikan objek ke SLPM. Jumlah maksimum objek yang dapat dimigrasikan ditentukan oleh parameter max_locks_per_transaction. CALL slpm_migrate (64); // Migrasikan maksimal 64 objek ke SLPM.
slpm_create_user
Deskripsi
slpm_create_user: Membuat pengguna di SLPM. Setelah memanggil fungsi ini untuk membuat pengguna, pengguna tersebut hanya memiliki izin logon. Untuk mengizinkan pengguna melakukan analitik data, Anda harus memberikan izin tertentu kepada pengguna tersebut.
CatatanUntuk memanggil fungsi slpm_create_user, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.
Sintaksis
CALL slpm_create_user ( user_name [, role_name] );Tabel berikut menjelaskan parameter dalam sintaksis.
Parameter
Deskripsi
user_name
Nama pengguna yang akan dibuat. Anda dapat menentukan nama dalam salah satu format berikut:
ID atau nama tampilan akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.
UID pengguna RAM dengan awalan p4_ atau nama tampilan pengguna RAM, seperti p4_202338382183xxx atau RAM$mainaccount:subuser.
role_name
Grup ke mana pengguna akan ditambahkan. Anda dapat menambahkan pengguna ke salah satu grup berikut berdasarkan kebutuhan bisnis Anda:
{db}.admin
{db}.{schema}.developer
{db}.{schema}.writer
{db}.{schema}.viewer
Untuk informasi lebih lanjut tentang izin grup pengguna, lihat Grup pengguna dan izin dalam SLPM.
Contoh
CALL slpm_create_user ('my_t***@aliyun.com'); CALL slpm_create_user ('RAM$my_test:mysubuser', 'mydb.public.developer'); CALL slpm_create_user ('13532313103042xxx'); CALL slpm_create_user ('p4_23319103042xxx', 'mydb.admin');
slpm_grant
Deskripsi
slpm_grant: Menambahkan pengguna ke grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.
CatatanUntuk memanggil fungsi slpm_grant, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.
Sintaksis
CALL slpm_grant ( role_name, user_name );Tabel berikut menjelaskan parameter dalam sintaksis.
Parameter
Deskripsi
user_name
Nama pengguna kepada mana Anda ingin memberikan izin. Anda dapat menentukan nama dalam salah satu format berikut:
ID atau nama tampilan akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.
UID pengguna RAM dengan awalan p4_ atau nama tampilan pengguna RAM, seperti p4_202338382183xxx atau RAM$mainaccount:subuser.
role_name
Grup ke mana pengguna akan ditambahkan. Anda dapat menambahkan pengguna ke salah satu grup berikut berdasarkan kebutuhan bisnis Anda:
{db}.admin
{db}.{schema}.developer
{db}.{schema}.writer
{db}.{schema}.viewer
Untuk informasi lebih lanjut tentang izin grup pengguna, lihat Grup pengguna dan izin dalam SLPM.
Catatan Penggunaan
Anda hanya dapat memanggil fungsi ini setelah SLPM diaktifkan.
Nilai parameter user_name harus berupa ID akun atau nama tampilan akun Alibaba Cloud atau pengguna RAM.
Nilai parameter role_name harus dalam salah satu format berikut: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.
Contoh
CALL slpm_grant ('mydb.public.developer', 'p4_202338382183xxx'); // Tambahkan Pengguna RAM yang ditentukan ke kelompok mydb.public.developer. CALL slpm_grant ('mydb.admin', 'RAM$my_test:xxx'); // Tambahkan Pengguna RAM yang ditentukan ke kelompok mydb.admin. CALL slpm_grant ('otherdb.admin', '13532313103042xxx'); // Fungsi ini gagal karena Anda hanya dapat menambahkan pengguna ke kelompok database saat ini. Untuk menambahkan pengguna ke kelompok database lain, sambungkan ke database tersebut dan panggil fungsi slpm_grant.
slpm_revoke
Deskripsi
slpm_revoke: Menghapus pengguna dari grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.
CatatanUntuk memanggil fungsi slpm_grant, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.
Sintaksis
CALL slpm_revoke ( role_name, user_name );Catatan Penggunaan
Anda hanya dapat memanggil fungsi ini setelah SLPM diaktifkan.
Nilai parameter user_name harus berupa ID akun atau nama tampilan akun Alibaba Cloud atau pengguna RAM.
Nilai parameter role_name harus dalam salah satu format berikut: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, atau {db}.{schema}.viewer.
Contoh
CALL slpm_revoke ('mydb.public.developer', 'p4_202338382183xxx'); // Hapus Pengguna RAM yang ditentukan dari kelompok mydb.public.developer. CALL slpm_revoke ('mydb.admin', 'RAM$my_test:xxx'); // Hapus Pengguna RAM yang ditentukan dari kelompok mydb.admin. CALL slpm_revoke ('otherdb.admin', '13532313103042xxx'); // Fungsi ini gagal karena Anda hanya dapat menghapus pengguna dari kelompok database saat ini. Untuk menghapus pengguna dari kelompok database lain, sambungkan ke database tersebut dan panggil fungsi slpm_revoke.
slpm_disable
Deskripsi
slpm_disable: Menonaktifkan SLPM untuk database.
CatatanUntuk memanggil fungsi slpm_disable, Anda harus menjadi superuser.
Sintaksis
CALL slpm_disable ();Catatan Penggunaan
Ketika menonaktifkan SLPM, perhatikan item berikut:
Grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer tetap ada. Anda dapat mengeksekusi pernyataan otorisasi dalam model otorisasi PostgreSQL standar untuk menambahkan pengguna ke grup pengguna ini. Pengguna dalam grup {db}.{schema}.developer tetap menjadi pemilik objek database.
Izin CONNECT dan TEMPORARY pada database diberikan ke grup PUBLIC.
Izin USAGE dan CREATE pada skema publik database diberikan ke grup PUBLIC.
Izin EXECUTE pada fungsi dan prosedur skema publik dalam database diberikan ke grup PUBLIC.
Izin USAGE pada bahasa yang ditentukan pengguna dari database diberikan ke grup PUBLIC.
Izin USAGE pada tipe yang ditentukan pengguna dari database diberikan ke grup PUBLIC.
Contoh
CALL slpm_disable ();
slpm_cleanup
Deskripsi
slpm_cleanup: Menghapus grup {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, dan {db}.{schema}.viewer yang disimpan untuk SLPM.
CatatanUntuk memanggil fungsi slpm_cleanup, Anda harus menjadi superuser.
Sintaksis
CALL slpm_cleanup ( db_name [, batch_size ] );Tabel berikut menjelaskan parameter dalam sintaksis.
Parameter
Deskripsi
Range Nilai
db_name
Nama database untuk mana Anda ingin menghapus grup pengguna.
Jika nama tersebut mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda (" "), seperti
"MYDB".batch_size
Jumlah maksimum objek yang dapat dimigrasi sekaligus.
Jika Anda mengatur parameter ini ke 0, jumlah maksimum objek yang dapat dimigrasi sekaligus ditentukan oleh parameter max_locks_per_transaction. Nilai default parameter ini adalah 64.
[0, 64]. Parameter ini tidak valid jika nilainya di luar rentang ini.
Jika database Anda berisi banyak objek, misalnya ratusan objek, Anda harus memanggil fungsi slpm_cleanup() beberapa kali hingga semua objek dimigrasikan.
Jika database Anda berisi jumlah objek yang sangat besar, misalnya lebih dari ribuan atau bahkan puluhan ribu objek, kami menyarankan agar Anda menghubungi dukungan teknis di grup DingTalk untuk menaikkan nilai parameter batch_size sebelum memigrasikan objek.
Catatan Penggunaan
Jika pesan
DONE BUT NOT COMPLETEDdikembalikan setelah Anda memanggil fungsi slpm_cleanup, masih ada beberapa objek yang perlu dimigrasikan, dan kelompok pengguna belum dihapus. Dalam hal ini, panggil kembali fungsi slpm_cleanup.Jika pesan
COMPLETEDdikembalikan, semua objek telah dimigrasikan dan kelompok pengguna telah dihapus.
Contoh
CALL slpm_cleanup ('mydb'); // Ubah Pemilik objek menjadi pengguna saat ini. Jumlah maksimum objek yang Pemiliknya dapat diubah ditentukan oleh parameter max_locks_per_transaction. CALL slpm_cleanup ('mydb', 64); // Ubah Pemilik hingga 64 objek menjadi pengguna saat ini.Kasus 1: Hapus database dan kemudian grup pengguna dari database tersebut.
drop database mydb; CALL slpm_cleanup ('mydb'); // Anda dapat menghapus kelompok pengguna database yang telah dihapus sekaligus.Kasus 2: Hapus grup pengguna dari database yang ada. Dalam hal ini, Anda harus terhubung ke database.
CALL slpm_cleanup ('otherdb'); ERROR: Permission Denied. execute in database otherdb, or drop database before call slpm_cleanup.
slpm_rename_schema
Deskripsi
slpm_rename_schema: Mengganti nama skema.
Setelah mengganti nama database yang SLPM-nya diaktifkan, Anda juga harus mengganti nama empat grup pengguna. Fungsi slpm_rename_schema secara otomatis mengganti nama gruppengguna. Oleh karena itu, Anda harus memanggil fungsi ini untuk mengganti nama skema.
CatatanUntuk memanggil fungsi slpm_rename_database, Anda harus menjadi superuser atau anggota grup {db}.admin dari database.
Sintaksis
CALL slpm_rename_schema ( old_name, new_name );Tabel berikut menjelaskan parameter dalam sintaksis.
Parameter
Deskripsi
old_name
Nama asli skema yang akan diganti namanya. Jika nama tersebut mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda (" "), seperti
"MYDB".new_name
Nama baru yang ingin Anda tentukan untuk skema tersebut. Jika nama tersebut mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda (" "), seperti
"MYDB".Contoh
CALL slpm_rename_schema ('oldschema', 'newschema');