Hak Akses Hanya Baca (Read-Only) di Postgresql
https://tuanpembual.wordpress.com/2020/05/14/hak-akses-hanya-baca-read-only-di-postgresql/
Bacaan:
- https://blog.redash.io/postgres-readonly/
- https://marcyes.com/2016/0922-messing-with-postgresql-users-and-permissions/
- https://originmaster.com/create-read-only-users-on-postgresql-5baaf5624fa0
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.

Spesifikasi Sistem:
1 2 3 4 5 6 7 | Database Engine: Postgresql 11Database Host: 10.10.10.10Database Name: blogDatabase Admin User: postgresDatabase User dan Owner for blog database: kiranaRoles Name: hanya_bacaPengguna 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