Mengaktifkan Remote Access ke database server PostgreSQL dapat bermanfaat untuk berbagai alasan. Misalnya Anda ingin mengaktifkan manajemen remote access untuk database PostgreSQL agar bisa diakses secara remote dari tools manajemen database seperti pgAdmin4 maupun DBeaver. Atau Anda ingin mengkoneksikan server Postgres Anda dari server yang berbeda, nah hal itu dapat dilakukan dengan cara mengaktifkan akses remote dari sisi server Postgres.

Berikut panduan dan tutorial mengaktifkan remote access ke basis data PostgreSQL. Pada tutorial kali ini saya menggunakan PostgreSQL versi 18, sehingga Anda cukup mengganti angka 18 sesuai dengan nomor versi server Postgres Anda.

PREREQUISITES:
  • Virtual Machine dengan OS Debian/Ubuntu
  • Hak Akses Root Penuh (sudo privileges)
  • Familiar dengan Linux Command-Line (CLI)
  • Bisa Mengoperasikan Terminal, Powershell maupun PuTTY
1.) Edit File Konfigurasi PostgreSQL

Pertama-tama, Anda perlu mengedit dan memodifikasi file konfigurasi PostgreSQL untuk mengizinkan koneksi dari remote hosts. File konfigurasi ini biasanya terletak di /etc/postgresql//main/postgresql.conf. Silahkan ganti dengan nomor versi database PostgreSQL Anda.

Misalnya, disini saya menggunakan PostgreSQL versi 18, jadi cukup jalankan command berikut di terminal:

$ sudo nano /etc/postgresql/18/main/postgresql.conf

Kemudian cari baris berikut ini:

#listen_addresses = 'localhost'

Hilangkan komentar (tanda #) dan ganti variabel ‘localhost’ ke ‘*’ untuk mengizinkan koneksi dari alamat IP manapun.

listen_addresses = '*'
2.) Setup Client Authentication

Setelah itu, kita perlu mengkonfigurasi server PostgreSQL agar dapat menerima koneksi secara remote dengan cara mengedit file pg_hba.conf, yang mengontrol autentikasi sisi klien (client authentication).

Buka file pg_hba.conf dengan nano editor atau editor favorit Anda:

$ sudo nano /etc/postgresql/18/main/pg_hba.conf

Kemudian tambahkan variabel berikut ini di baris paling bawah dari file pg_hba.conf agar Postgres dapat menerima koneksi dari alamat IP manapun menggunakan autentikasi password scram-sha-256.

# Allow remote connections:
host all all 0.0.0.0/0 scram-sha-256
3.) Restart Database Server PostgreSQL

Agar perubahan di atas memberikan efek, Anda perlu me-restart basis data PostgreSQL Anda. Jalankan perintah berikut ini:

$ sudo systemctl restart postgresql
4.) Konfigurasi Firewall

Setelah itu, jika Anda menggunakan Firewall di server Anda pastikan untuk mengizinkan incoming connection ke port default PostgreSQL yakni 5432.

Untuk pengguna UFW (Uncomplicated Firewall), cukup jalankan command berikut ini untuk whitelist port 5432:

$ sudo ufw allow 5432/tcp

Namun, jika server Anda dikonfigurasi dengan Firewall yang lebih canggih seperti ConfigServer Security & Firewall (CSF) misalnya, maka silahkan tambahkan port 5432 di variabel baris “TCP_IN”. Hasilnya seperti berikut ini:

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,5432"

Kemudian jangan lupa restart Firewall untuk memastikan bahwa whitelist port di atas benar-benar berfungsi:

UFW (Uncomplicated Firewall)

$ systemctl restart ufw

ConfigServer Security & Firewall (CSF)

$ csf -r
5.) Verifikasi Remote Access pada PostgreSQL

Untuk memverifikasi bahwa basis data PostgreSQL dapat diakses secara remote, kita bisa menggunakan client tool PostgreSQL seperti “psql” dari remote server atau VM lainnya. Contoh command yang bisa digunakan adalah sebagai berikut:

$ psql -h <alamat_ip_server> -U <username_anda> -d <database_anda>

ATAU

$ psql -h <alamat_ip_server> -U <username_anda>
Pertimbangan Keamanan

Dengan mengizinkan akses remote ke database server PostgreSQL Anda, maka hal tersebut sebenarnya membuka potensi resiko keamanan. Berikut beberapa praktik terbaik untuk mitigasi atau mengurangi resiko keamanan ini:

  • Gunakan Password yang Kuat: Pastikan semua user akun pada server PostgreSQL Anda menggunakan password yang kuat.
  • Batasi Alamat IP pada PostgreSQL: Daripada mengizinkan koneksi dari alamat IP mana pun, Anda bisa membatasi akses ke alamat IP tertentu (misal IP kantor Anda) dengan memodifikasi file konfigurasi pg_hba.conf.
  • Aktifkan SSL: Konfigurasi PostgreSQL Anda dengan menggunakan sertifikat SSL untuk koneksi yang dienksripsi.
  • Update Rutin: Perbarui instalasi server PostgreSQL Anda dan semua paket terkait untuk memastikan agar server Anda mendapatkan patch keamanan terbaru.
Kesimpulan

Dengan mengikuti panduan di atas, Anda dapat mengkonfigurasi PostgreSQL Anda untuk mengizinkan koneksi secara remote dari server lain. Anda wajib memiliki aksesibilitas yang seimbang dengan keamanan untuk melindungi data sensitif Anda. Sehingga, dengan konfigurasi dan praktik keamanan yang tepat, akses remote pada basis data PostgreSQL dapat menjadi nyaman dan aman bagi Anda.

LEAVE A REPLY

Please enter your comment!
Please enter your name here