Senin, 23 September 2024

POSTGRESQL-readonly user

 

Hak Akses Hanya Baca (Read-Only) di Postgresql

https://tuanpembual.wordpress.com/2020/05/14/hak-akses-hanya-baca-read-only-di-postgresql/

Bacaan:

Sedikit tulisan untuk membantu mengingat. Dalam catatan kali ini, saya akan membuat Role (aturan) dan user (pengguna) yang memiliki hak akses ke database Postgresql hanya untuk membaca (read-only). Dalam kasus saya, rule ini digunakan QA/BI untuk membaca database tanpa bisa mengubah (write) database.

sebuah hedon

Spesifikasi Sistem:

1
2
3
4
5
6
7
Database Engine: Postgresql 11
Database Host: 10.10.10.10
Database Name: blog
Database Admin User: postgres
Database User dan Owner for blog database: kirana
Roles Name: hanya_baca
Pengguna hanya_baca: dev

SQL Untuk Membuat Database blog dan Pemiliknya (Owner) :

Login to postgresql server:

1
psql -h 10.10.10.10 -U postgres -W postgres

Buat database blog:

1
2
3
4
CREATE DATABASE blog;
CREATE USER kirana WITH ENCRYPTED PASSWORD 'superrahasia';
GRANT ALL PRIVILEGES ON DATABASE blog to kirana;
\q

SQL untuk Membuat Roles hanya_baca dan User dev

Login sebagai user postgres:

1
psql -h 10.10.10.10 -U postgres -W postgres

Perintah ini dilakukan oleh user postgres:

1
2
3
4
CREATE ROLE hanya_baca;
CREATE USER dev WITH ENCRYPTED PASSWORD 'inirahasia';
GRANT hanya_baca TO dev;
GRANT CONNECT ON DATABASE blog TO hanya_baca;

Login sebagai user kirana:

1
psql -h 10.10.10.10 -U kirana -W blog

Perintah ini dilakukan oleh user kirana sebagai pemilik database blog:

1
2
3
4
5
GRANT USAGE ON SCHEMA public TO hanya_baca;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO hanya_baca;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO hanya_baca;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO hanya_baca;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO hanya_baca;

Mengatur Ulang Hak Akses (Restore Previleges)

Login sebagai user kirana:

1
2
3
4
5
6
REVOKE CONNECT ON DATABASE blog FROM hanya_baca;
REVOKE ALL PRIVILEGES ON SCHEMA public FROM hanya_baca;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM hanya_baca;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM hanya_baca;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE SELECT ON TABLES FROM hanya_baca;
DROP role hanya_baca;

Uji Coba User dev

Login sebagai user dev:

1
psql -h 10.10.10.10 -U dev -W blog

Perintah ini dilakukan oleh user dev:

1
select * from post_title;

Sekian.
Estu~

Tidak ada komentar:

Posting Komentar