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 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