Cara membuat user read-only PostgreSQL

Tutorial membuat user dan group read-only di PostgreSQL. Kenapa harus membuat group/role? Agar manajemennya lebih mudah dan rapi. Misalnya ingin membuat role dengan privileges hanya SELECT kemudian SELECT, UPDATE dan seterusnya.

Membuat group/role

Pertama kita buat role yang akan kita beri hak akses istimewa, dalam tutorial ini adalah read-only atau SELECT saja, user hanya bisa membaca data table-table yang ada di database tapi tidak bisa INSERT, UPDATE maupun melakukan function lainnya.

Contoh di bawah ini kita buat nama role tim_baca

Sesuaikan nama databasenya ya!

CREATE ROLE tim_baca;
GRANT USAGE ON SCHEMA public TO tim_baca;
GRANT CONNECT ON DATABASE nama_databasenya TO tim_baca;
\connect nama_databasenya;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO tim_baca;

Agar setelah membuat table baru di database bisa terbaca oleh group tim_baca

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO tim_baca;

Kunci keberhasilan memberi hak akses SELECT ke role tim_baca adalah harus connect ke nama database (\connect nama_databasenya)

Jadi misalnya kita membuat nama database baru berarti kita harus konek ke database baru tersebut kemudian kita GRANT lagi ke role tim_baca. Jelas ya? karena dari pengalaman saya melewatkan langkah ini yang membuat stuck hinga beberapa jam.

Membuat user

Sekarang membuat user dan kita masukkan ke role tim_baca

CREATE USER omar WITH PASSWORD 'kata_sandi123';
GRANT tim_baca TO omar;

Uji coba

Sekarang waktunya test

psql -h ip-servernya -p 5432 -U omar -W nama_databasenya
\dt
select * from nama_table;

Nah, selesai sudah.

Semoga bermanfaat.

Add a comment