Cara Mengatur PostgreSQL Agar Login Tanpa Password

3
212
views
psql-logo

Tunggu dulu, tanpa password ? Bagaimana jika seseorang mencoba untuk mengakses tanpa izin? Tenang, tanpa password di sini tentu maksudnya dengan syarat. Kita bisa mengatur agar bisa login PostgreSQL tanpa password dengan syarat hanya user dengan nama tertentu atau user dari host tertentu yang bisa mengakses.

Kelebihan Login PostgreSQL Tanpa Password

Dengan menerapkan sistem whitelist seperti ini kita mendapatkan keuntungan dimana jika ada orang yang hendak mengakses server database milik kita dengan mencoba menebak password secara acak (metode brute force) itu tidak akan berhasil karena memang tidak ada password-nya sama sekali.

Kekurangan Login PostgrSQL Tanpa Password

Namun tentu saja ada kekurangannya juga, jika seseorang mendapatkan akses ke host tertentu yang dibolehkan login tanpa password, maka bisa jadi orang tersebut dapat juga masuk ke server database kita. Karena itu sangat penting memperkuat keamanan server dalam whitelist tadi.

Studi Kasus

Saya memiliki dua server dimana akan saya pisah antara server untuk aplikasi dan server untuk database.

Server Database:
IP Address: 10.0.0.1/24
Database User: dbadmin
Database Name: project_demo

Server Aplikasi:
IP Address: 10.0.0.10/24

Dengan demikian sudah jelas yang akan menjadi klien database adalah server aplikasi.

Pengaturan Otentikasi Klien PostgreSQL

Langkah pertama untuk mengaktifkan login tanpa password pada PostgreSQL adalah dengan menyunting file konfigurasi otentikasi klien. Nama file tersebut adalah pg_hba.conf. Lokasi dimana file tersebut tersimpan dapat berbeda tergantung versi PostgreSQL yang terpasang pada server. Jadi jika lokasi file yang ada dalam artikel ini berbeda dengan milik Anda, jangan kuatir. Anda dapat menggunakan perintah locate untuk menemukan dimana file yang Anda cari tersimpan.

$ locate pg_hba.conf

Jika sudah ditemukan, mari kita rubah isi file tersebut dengan menggunakan text editor, di sini saya menggunakan nano.

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

Langsung scroll ke bawah dan kita akan menemukan script yang bentuknya kurang lebih seperti ini:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

Script di atas berbentuk seperti tabel yang menunjukkan bagaimana suatu koneksi terhadap database tertentu diakses oleh user tertentu melalui address tertentu dan bagaimana metodenya.

Nah, sekarang kita akan menambahkan satu baris dalam tabel peraturan tersebut. Perhatikan pada bagian # IPv4 local connections:, di bawahnya sudah ada satu peraturan bawaan. Coba tambahkan satu lagi di bawahnya dengan peraturan berikut:

host    all             all             10.0.0.10/24            trust

Sehingga bentuknya akan menjadi seperti berikut:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             10.0.0.10/24            trust

Peraturan baru yang kita tambahkan tadi punya tujuan sebagai berikut:

host : Merupkan tipe koneksi apa yang diberlakukan dalam peraturan ini, yakni koneksi yang menggunakan IP Address untuk mengakses database server.
all : all yang pertama menunjukkan bahwa peraturan ini berlaku untuk semua database. Anda dapat menuliskan nama database tertentu jika ingin peraturan ini berlaku untuk database tertentu.
all : all yang kedua menunjukkan bahwa peraturan ini berlaku untuk semua user. Anda dapat menuliskan nama user tertentu jika ingin peraturan ini berlaku hanya untuk user tertentu.
10.0.0.10/24 : Merupakan IP Address klien yang mengakses dilengkapi dengan subnet-nya. Jadi peraturan ini berlaku untuk setiap koneksi yang berasal dari IP Address 10.0.0.10/24. Jadi, jika klien Anda memiliki IP Address yang berbeda dengan contoh di atas, silakan ganti sesuai kebutuhan Anda.
trust : Merupakan metode yang diberlakukan dalam peraturan ini, yakni metode trust yang artinya server database akan selalu mengizinkan akses.

Jika Anda sudah selesai menambahkan peraturan baru, jangan lupa simpan file tersebut.

Pengaturan PostgreSQL

Nah, setelah menambahkan peraturan yang membolehkan klien dengan IP Address tersebut login ke PostgreSQL tanpa password, sekarang kita perlu mengatur juga pengaturan PostgreSQL.

Kita perlu membuat server database dapat diakses menggunakan IP Address-nya sendiri, sehingga dapat diakses dari luar (tidak hanya dari lokal sebagaimana pengaturan bawaannya).

File konfigurasi PostgreSQL bernama postgresql.conf dan sama seperti sebelumnya Anda dapat menggunakan perintah locate untuk menemukan lokasi tersimpannya file tersebut.

$ locate postgresql.conf

Jika sudah ditemukan, mari kita rubah isi file tersebut dengan menggunakan text editor, di sini saya menggunakan nano.

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

Isi dari file ini sangat banyak, jadi saya akan menunjukkan bagian mana saja yang perlu diperhatikan. Gunakan fitur pencarian untuk mencari listen_addresses. Anda akan menemukan baris script seperti berikut jika sebelumnya tidak pernah diubah (masih default)

#listen_addresses = 'localhost'		# what IP address(es) 

Nah, langkah pertama hilangkan dulu tanda pagar (#) agar baris tersebut terbaca oleh PostgreSQL. Kemudian tambahkan IP Address server database setelah localhost dipisahkan dengan tanda koma.

listen_addresses = 'localhost,10.0.0.1'

Dengan memasukkan IP Address tadi ke dalam peraturan listen_addresses artinya PostgreSQL hanya dapat diakses melalui localhost atau IP Adress 10.0.0.1. Anda dapat memasukkan IP Address yang berbeda sesuai kebutuhan atau gunakan tanda bintang (*) jika ingin tidak ada batasan host.

Jika Anda sudah selesai menambahkan peraturan baru, jangan lupa simpan file tersebut.

Restart Service PostgreSQL

Pengaturan yang kita lakukan tadi tidak akan diberlakukan sampai service PostgreSQL dimulai ulang, jadi kita perlu restart service-nya.

$ sudo systemctl restart postgresql

Login PostgreSQL Tanpa Password dari Klien

Sekarang dari server aplikasi coba login ke PostgrSQL, maka kita akan masuk tanpa harus memasukkan password lagi.

$ psql -h 10.0.0.1 -p 5432 -U dbadmin -w -d project_demo

Keterangan:
psql : Perintah untuk mengakses PostgreSQL.
-h : IP Address dari server database yang hendak diakses.
-p : Port dari server database yang hendak diakses.
-U : Nama user database yang hendak mengakses.
-w : Mengindikasikan bahwa akses ini tanpa password, jadi psql tidak akan meminta kita memasukkan password.
-d : Nama database yang hendak diakses.

Selesai

Nah, silakan dicoba semoga berhasil, jika Anda memiliki pertanyaan atau punya studi kasus berbeda, silakan kirim komentar Anda melalui kolom komentar di bawah ini.

3 KOMENTAR

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.