Topik ini menjelaskan cara Hologres melakukan autentikasi pengguna dan memperkenalkan tiga model izin yang dapat digunakan untuk memberikan izin pengembangan: model PostgreSQL standar, Simple Permission Model (SPM), dan Schema-level Permission Model (SLPM).
Alur autentikasi Hologres
Gambar berikut menunjukkan alur autentikasi lengkap:
Pengguna
Sebelum Akun Alibaba Cloud dapat mengakses Hologres, administrator harus menjalankan create user "xxx" untuk mendaftarkannya sebagai pengguna Hologres. Jika tidak, error role "xxx" does not exist akan dikembalikan. Pengguna berada di tingkat instans. Menambahkan atau menghapus pengguna berarti menambahkan atau menghapus pengguna tersebut dari instans. Operasi seperti membuat tabel memerlukan izin tingkat database, yang diberikan dalam database tertentu dan tidak dapat digunakan lintas database.
Jalankan select * from pg_user; untuk melihat superuser instans saat ini.
Model izin
Hologres kompatibel dengan PostgreSQL 11 dan mendukung otorisasi PostgreSQL standar (model expert). Karena izin PostgreSQL bersifat detail halus dan sintaks otorisasinya kompleks, Hologres juga menyediakan dua model yang disederhanakan: Simple Permission Model (SPM) dan Schema-level Permission Model (SLPM).
Tabel berikut membandingkan ketiga model tersebut.
|
Model izin |
Skenario |
Deskripsi |
|
Standard PostgreSQL authorization model (expert model) |
Kontrol akses ketat hingga ke pengguna tertentu pada tabel tertentu. |
Detail halus dan fleksibel, tetapi sintaks otorisasi kompleks. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Expert permission model. |
|
Simple Permission Model (SPM) |
Kontrol akses kasar di tingkat database. |
Role tingkat database yang telah dipaketkan dengan izin tetap per kelompok pengguna. Mencakup sebagian besar kasus penggunaan dengan sintaks yang lebih sederhana. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Manage permissions using SPM. |
|
Schema-level Permission Model (SLPM) |
Kontrol akses detail halus di tingkat skema dengan otorisasi yang disederhanakan. |
Role tingkat skema yang telah dipaketkan dengan izin tetap per kelompok pengguna. Lebih detail halus dibandingkan SPM. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Manage permissions using SLPM. |
Berikan izin
Tabel berikut mencantumkan izin yang diperlukan untuk setiap operasi dalam model PostgreSQL standar dan model yang disederhanakan (SPM/SLPM).
Superuser secara default memiliki semua izin berikut.
|
Operasi dalam model otorisasi PostgreSQL standar |
Izin yang diperlukan |
Pernyataan otorisasi |
|
CREATE USER(ROLE) DROP USER(ROLE) |
CREATEROLE |
Berikan izin CREATEROLE kepada pengguna A:
|
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
CONNECT pada database dan CREATE pada skema target |
Berikan izin CREATE kepada pengguna A pada skema xx:
Secara default, semua pengguna dapat membuat tabel di skema public. |
|
SELECT |
USAGE pada skema terkait dan SELECT pada tabel target |
Contoh:
|
|
INSERT UPDATE DELETE TRUNCATE |
USAGE pada skema terkait dan izin DML terkait (INSERT/UPDATE/DELETE/TRUNCATE) pada tabel target |
Contoh:
|
|
ALTER TABLE |
Pemilik tabel (dapat diubah melalui ALTER OWNER) |
GRANT tidak dapat mentransfer kepemilikan tabel. Jalankan |
|
DROP TABLE |
||
|
CREATE DATABASE |
CREATEDB |
Berikan izin CREATEDB kepada pengguna A:
|
|
DROP DATABASE |
Pemilik DB |
GRANT tidak dapat mentransfer kepemilikan database. Jalankan |
|
CREATE EXTENSION |
Pemilik DB |
- |
|
GRANT REVOKE |
Pengguna dengan izin terkait dan GRANT OPTION |
Berikan GRANT OPTION kepada pengguna A:
|
|
Otorisasi berdasarkan model izin |
Simple Permission Model (SPM) |
Schema-level Permission Model (SLPM) |
||
|
Operasi |
Izin yang diperlukan |
Pernyataan otorisasi |
Izin yang diperlukan |
Pernyataan otorisasi |
|
CREATE USER(ROLE) DROP USER(ROLE) |
DB admin |
Berikan izin admin kepada pengguna:
Penting
SPM tidak mendukung pemberian izin kepada pengguna kustom yang nama penggunanya diakhiri dengan |
DB admin |
Berikan izin admin kepada pengguna:
Penting
SLPM tidak mendukung pemberian izin kepada pengguna kustom yang nama penggunanya diakhiri dengan |
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
Izin dari kelompok pengguna superuser, admin, atau developer |
Berikan izin admin atau developer menggunakan pernyataan SPM di atas. |
Izin dari superuser, atau kelompok pengguna admin atau developer skema tersebut |
Berikan izin admin atau developer skema tersebut menggunakan pernyataan SLPM di atas. |
|
SELECT |
Izin dari kelompok pengguna superuser, admin, developer, writer, atau viewer |
Berikan izin admin, developer, writer, atau viewer menggunakan pernyataan SPM di atas. |
Izin dari superuser, atau kelompok pengguna admin, developer, writer, atau viewer skema tersebut |
Berikan izin admin, developer, writer, atau viewer skema tersebut menggunakan pernyataan SLPM di atas. |
|
INSERT UPDATE DELETE TRUNCATE |
Izin dari kelompok pengguna superuser, admin, developer, atau writer |
Berikan izin admin, developer, atau writer menggunakan pernyataan SPM di atas. |
Izin dari superuser, atau kelompok pengguna admin, developer, atau writer skema tersebut |
Berikan izin admin, developer, atau writer skema tersebut menggunakan pernyataan SLPM di atas. |
|
ALTER TABLE |
Izin dari kelompok pengguna superuser, admin, atau developer |
Berikan izin admin atau developer menggunakan pernyataan SPM di atas. |
Izin dari superuser, atau kelompok pengguna admin atau developer skema tersebut |
Berikan izin admin atau developer skema tersebut menggunakan pernyataan SLPM di atas. |
|
DROP TABLE |
||||
|
CREATE DATABASE DROP DATABASE CREATE EXTENSION |
DB admin |
Berikan izin admin menggunakan pernyataan SPM di atas. |
DB admin |
Berikan izin admin skema tersebut menggunakan pernyataan SLPM di atas. |
|
GRANT REVOKE |
DB admin |
Berikan dan cabut izin untuk pengguna A:
|
DB admin |
Berikan dan cabut izin untuk pengguna A:
|