Lewati ke konten utama

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.