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.
