Setelah masuk ke instans Hologres, pengguna harus memiliki izin yang diperlukan untuk melakukan operasi. Topik ini menjelaskan izin yang dibutuhkan untuk pengembangan di instans Hologres.
Alur autentikasi Hologres
Gambar berikut menunjukkan alur autentikasi lengkap untuk pengguna, mulai dari menghubungkan ke Hologres hingga menggunakannya:
Konsep pengguna
Saat Akun Alibaba Cloud terhubung ke Hologres, akun tersebut harus dibuat sebagai pengguna Hologres. Administrator perlu mengeksekusi pernyataan create user "xxx". Jika tidak, pesan error role "xxx" does not exist akan muncul. Pengguna berada pada level instans; menambahkan atau menghapus pengguna berarti menambahkan atau menghapusnya dari instans tersebut. Operasi tertentu dalam instans, seperti membuat tabel, memerlukan izin tingkat database. Izin diberikan dalam database tertentu dan hanya berlaku untuk objek dalam database tersebut, tidak berlaku lintas database.
Anda dapat mengeksekusi perintah select * from pg_user; untuk melihat super administrator dari instans saat ini.
Model izin
Hologres kompatibel dengan PostgreSQL 11. Untuk memberikan izin pengembangan, Anda dapat menggunakan pernyataan otorisasi PostgreSQL standar, yang dikenal sebagai model otorisasi PostgreSQL standar. Granularitas izin dalam PostgreSQL bersifat detail halus, dan sintaks otorisasinya kompleks. Untuk menyederhanakan kontrol akses, Hologres juga menyediakan Model izin sederhana.
Tabel berikut menjelaskan perbedaan antara Model izin sederhana dan model otorisasi PostgreSQL standar, serta skenario penggunaannya.
Jenis izin | Skenario | Deskripsi |
Model otorisasi PostgreSQL standar | Model ini cocok untuk skenario yang memerlukan kontrol akses ketat. Misalnya, Anda dapat memberikan izin kepada pengguna tertentu pada tabel tertentu. | Model otorisasi PostgreSQL standar memberikan izin dengan granularitas dan fleksibilitas tinggi. Anda dapat memberikan izin kepada pengguna pada tabel tertentu. Namun, sintaks otorisasinya kompleks. Untuk informasi selengkapnya tentang cara memberikan izin, lihat Model otorisasi PostgreSQL standar. |
Simple Permission Model (SPM) | Model ini menyediakan kontrol akses tingkat database dan cocok untuk skenario pengelolaan izin kasar. | Model izin sederhana adalah model pra-kemas berdasarkan dimensi database. Setiap kelompok pengguna memiliki izin yang sesuai yang tidak dapat diubah. Model ini memenuhi sebagian besar kebutuhan otorisasi dan menyederhanakan operasi pemberian izin. Untuk informasi selengkapnya tentang cara memberikan izin, lihat Model izin sederhana. |
Schema-level Permission Model (SLPM) | Model ini menyediakan kontrol akses tingkat schema dan cocok untuk skenario yang memerlukan izin detail halus tetapi juga alur otorisasi yang disederhanakan. | Model izin sederhana tingkat schema adalah model pra-kemas berdasarkan dimensi schema. Setiap kelompok pengguna memiliki izin yang sesuai yang tidak dapat diubah. Model ini mendukung kontrol akses yang lebih detail halus dan menyederhanakan operasi otorisasi. Untuk informasi selengkapnya tentang cara memberikan izin, lihat Menggunakan model izin sederhana tingkat schema. |
Memberikan izin
Untuk menggunakan Hologres dalam pengembangan, pengguna harus diberikan izin tertentu. Dua tabel berikut menunjukkan operasi dan izin yang diperlukan berdasarkan model otorisasi PostgreSQL standar dan Model izin sederhana. Berikan izin kepada pengguna sesuai dengan operasi yang diperlukan dan model izin yang digunakan.
Super administrator secara default memiliki semua izin yang tercantum dalam tabel.
Operasi dalam model otorisasi PostgreSQL standar | Izin yang diperlukan | Pernyataan otorisasi |
CREATE USER(ROLE) DROP USER(ROLE) | CREATEROLE | Contoh berikut memberikan izin kepada pengguna A untuk membuat role. |
CREATE TABLE VIEW TABLE FOREIGN TABLE | Izin CONNECT pada database dan izin CREATE pada schema yang sesuai | Contoh berikut memberikan izin kepada pengguna A untuk membuat tabel dalam schema xx. Secara default, setiap pengguna memiliki izin untuk membuat tabel dalam schema public. |
SELECT | Izin USAGE dan izin SELECT pada schema yang sesuai | Berikan izin sebagai berikut: |
INSERT UPDATE DELETE TRUNCATE | Izin USAGE dan izin INSERT, UPDATE, DELETE, atau TRUNCATE pada schema yang sesuai | Berikan izin sebagai berikut: |
ALTER TABLE | Pemilik tabel (Pemilik tabel dapat diubah menggunakan ALTER OWNER) | Jangan gunakan GRANT untuk menghapus tabel. Sebagai gantinya, eksekusi perintah |
DROP TABLE | ||
CREATE DATABASE | CREATEDB | Contoh berikut memberikan izin kepada pengguna A untuk membuat database: |
DROP DATABASE | Pemilik database | Jangan gunakan GRANT untuk menghapus database. Sebagai gantinya, eksekusi perintah |
CREATE EXTENSION | Pemilik database | - |
GRANT REVOKE | Pengguna yang memiliki izin yang sesuai dan izin GRANT OPTION | Contoh berikut memberikan izin operasi GRANT kepada pengguna: |
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 dengan salah satu dari dua cara berikut:
Penting SPM tidak mendukung pemberian izin kepada pengguna kustom yang nama penggunanya diakhiri dengan | DB admin | Berikan izin admin kepada pengguna dengan salah satu dari dua cara berikut:
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 | Lihat pernyataan otorisasi SPM dalam tabel ini untuk memberikan izin admin atau developer kepada pengguna. | Izin dari superuser, atau kelompok pengguna admin atau developer pada schema tersebut | Lihat pernyataan otorisasi SLPM dalam tabel ini untuk memberikan izin admin atau developer pada schema tersebut kepada pengguna. |
SELECT | Izin dari kelompok pengguna superuser, admin, developer, writer, atau viewer | Lihat pernyataan otorisasi SPM dalam tabel ini untuk memberikan izin admin, developer, writer, atau viewer kepada pengguna. | Izin dari superuser, atau kelompok pengguna admin, developer, writer, atau viewer pada schema tersebut | Lihat pernyataan otorisasi SLPM dalam tabel ini untuk memberikan izin admin, developer, writer, atau viewer pada schema tersebut kepada pengguna. |
INSERT UPDATE DELETE TRUNCATE | Izin dari kelompok pengguna superuser, admin, developer, atau writer | Lihat pernyataan otorisasi SPM dalam tabel ini untuk memberikan izin admin, developer, atau writer kepada pengguna. | Izin dari superuser, atau kelompok pengguna admin, developer, atau writer pada schema tersebut | Lihat pernyataan otorisasi SLPM dalam tabel ini untuk memberikan izin admin, developer, writer, atau viewer pada schema tersebut kepada pengguna. |
ALTER TABLE | Izin dari kelompok pengguna superuser, admin, atau developer | Lihat pernyataan otorisasi SPM dalam tabel ini untuk memberikan izin admin atau developer kepada pengguna. | Izin dari superuser, atau kelompok pengguna admin atau developer pada schema tersebut | Lihat pernyataan otorisasi SLPM dalam tabel ini untuk memberikan izin admin atau developer pada schema tersebut kepada pengguna. |
DROP TABLE | ||||
CREATE DATABASE DROP DATABASE CREATE EXTENSION | DB admin | Lihat pernyataan otorisasi SPM dalam tabel ini untuk memberikan izin admin kepada pengguna. | DB admin | Lihat pernyataan otorisasi SLPM dalam tabel ini untuk memberikan izin admin pada schema tersebut kepada pengguna. |
GRANT REVOKE | DB admin | Contoh berikut menunjukkan cara memberikan dan mencabut izin untuk pengguna A: | DB admin | Contoh berikut menunjukkan cara memberikan dan mencabut izin untuk pengguna A: |