Pertemuan ke-5: User Management dan Keamanan di PostgreSQL

Pertemuan ke-5: User Management dan Keamanan di PostgreSQL

Sebagai seorang DBA, penting untuk memahami bagaimana cara mengelola pengguna, mengontrol hak akses, dan mengamankan database di PostgreSQL.


1️⃣ Mengelola Pengguna (User Management) di PostgreSQL

Di PostgreSQL, pengguna disebut sebagai roles. Ada dua jenis role utama:

  • Login Role: Bisa masuk ke database.
  • Group Role: Tidak bisa login, hanya digunakan untuk pengelompokan hak akses.

➤ Membuat Pengguna Baru

Untuk membuat user baru dengan hak akses login:

CREATE ROLE dba_user WITH LOGIN PASSWORD 'password_ku';

Catatan: Ubah 'password_ku' dengan password yang lebih aman.

➤ Memberikan Hak Akses ke Database

GRANT CONNECT ON DATABASE nama_database TO dba_user;

➤ Memberikan Hak Akses ke Tabel

GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE pelanggan TO dba_user;

➤ Melihat Daftar Pengguna

SELECT rolname FROM pg_roles;


2️⃣ Hak Akses dan Peran (Privileges & Roles)

PostgreSQL memiliki berbagai level hak akses, mulai dari level database, schema, tabel, hingga kolom.

➤ Membuat Pengguna Read-Only (Hanya Bisa Baca)

CREATE ROLE readonly_user WITH LOGIN PASSWORD 'readonly123';
GRANT CONNECT ON DATABASE nama_database TO readonly_user;
GRANT USAGE ON SCHEMA public TO readonly_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

➤ Membuat Pengguna Read-Write (Bisa Baca & Tulis, tapi Tidak Bisa Hapus)

CREATE ROLE readwrite_user WITH LOGIN PASSWORD 'readwrite123';
GRANT CONNECT ON DATABASE nama_database TO readwrite_user;
GRANT USAGE ON SCHEMA public TO readwrite_user;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO readwrite_user;

➤ Memberikan Hak Akses ke Seluruh Tabel Baru Secara Otomatis

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


3️⃣ Keamanan Database PostgreSQL

➤ Mengubah Password Pengguna

ALTER ROLE dba_user WITH PASSWORD 'password_baru';

➤ Membatasi IP yang Bisa Mengakses Database

Edit file pg_hba.conf (biasanya ada di /etc/postgresql/<version>/main/pg_hba.conf):

# Hanya izinkan akses dari IP tertentu
host    nama_database    dba_user    192.168.1.100/32    md5

Lalu restart PostgreSQL:

pg_ctl restart

➤ Mengaktifkan SSL untuk Keamanan Koneksi

Di file postgresql.conf, aktifkan SSL:

ssl = on
ssl_cert_file = '/etc/ssl/certs/server.crt'
ssl_key_file = '/etc/ssl/private/server.key'

Lalu restart PostgreSQL:

pg_ctl restart


4️⃣ Tugas Praktik

1️⃣ Buat pengguna baru dengan akses login bernama dev_user.
2️⃣ Beri dev_user akses hanya untuk membaca tabel pelanggan.
3️⃣ Coba login sebagai dev_user dan lakukan query:

SELECT * FROM pelanggan;

(Pastikan user tidak bisa melakukan INSERT atau DELETE)
4️⃣ Ubah password dev_user dan coba login kembali.


🎯 Kesimpulan

  • Role di PostgreSQL mengontrol akses ke database.
  • GRANT dan REVOKE digunakan untuk mengatur hak akses.
  • Membatasi IP, mengaktifkan SSL, dan mengganti password secara rutin meningkatkan keamanan.

Leave a comment