Keamanan dalam PostgreSQL
Pendahuluan
Keamanan dalam PostgreSQL sangat penting untuk melindungi data dari akses yang tidak sah. PostgreSQL menyediakan berbagai fitur keamanan seperti autentikasi, enkripsi, kontrol akses, dan audit log untuk memastikan data tetap aman.
Autentikasi
PostgreSQL mendukung berbagai metode autentikasi, termasuk:
- MD5 Password: Metode autentikasi standar menggunakan kata sandi yang di-hash.
- SCRAM-SHA-256: Metode autentikasi yang lebih aman dibandingkan MD5.
- Kerberos & LDAP: Integrasi dengan sistem autentikasi eksternal.
- Certificate Authentication: Menggunakan sertifikat SSL untuk otentikasi pengguna.
Konfigurasi metode autentikasi dapat diatur dalam file pg_hba.conf
:
# Izinkan autentikasi dengan kata sandi terenkripsi
host all all 0.0.0.0/0 scram-sha-256
Kontrol Akses
PostgreSQL menggunakan sistem peran (roles) untuk mengelola hak akses pengguna:
-
Membatasi akses ke database:
REVOKE CONNECT ON DATABASE nama_database FROM PUBLIC;
GRANT CONNECT ON DATABASE nama_database TO pengguna_tertentu; -
Membatasi akses ke tabel:
REVOKE ALL ON TABLE nama_tabel FROM PUBLIC;
GRANT SELECT, INSERT ON nama_tabel TO pengguna_tertentu;
Enkripsi
Untuk memastikan keamanan data, PostgreSQL mendukung enkripsi pada beberapa level:
-
Enkripsi dalam koneksi (SSL/TLS): Aktifkan SSL dengan mengonfigurasi file
postgresql.conf
:ssl = on
-
Enkripsi data di disk: PostgreSQL tidak menyediakan fitur built-in, tetapi Anda bisa menggunakan enkripsi disk pada sistem operasi seperti LUKS atau BitLocker.
Keamanan Jaringan
Batasi akses ke database dengan firewall atau konfigurasi listen address:
listen_addresses = 'localhost'
Untuk mengizinkan akses dari IP tertentu, ubah pg_hba.conf
:
host all all 192.168.1.0/24 scram-sha-256
Audit dan Logging
Gunakan fitur logging PostgreSQL untuk memantau aktivitas pengguna:
log_statement = 'all'
log_connections = on
log_disconnections = on
Anda juga bisa menggunakan ekstensi seperti pgAudit
untuk audit yang lebih rinci.
Kesimpulan
Dengan menerapkan autentikasi yang kuat, kontrol akses yang ketat, enkripsi data, serta pemantauan log, Anda dapat meningkatkan keamanan PostgreSQL dan melindungi data dari ancaman yang tidak diinginkan.