SSL/TLS Encryption in Transit for PostgreSQL
Platform ini menyediakan add-on bawaan yang menerapkan fungsionalitas “encryption in transit” untuk solusi PostgreSQL. Add-on ini menciptakan koneksi terenkripsi SSL/TLS untuk melindungi data saat bergerak antara klien dan server database. Perlindungan meliputi enkripsi data sebelum transmisi, otentikasi titik akhir, dekripsi konten, dan verifikasi saat tiba.
Add-On Installation
Add-on ini hanya dapat dipasang pada node PostgreSQL dan Pgpool-II (untuk cluster database).
1. Temukan lapisan database PostgreSQL yang sesuai di dashboard Anda, pergi ke bagian Add-Ons, dan klik Install untuk add-on SSL/TLS Encryption.
Solusi ini juga tersedia dari Marketplace dan dapat diimpor dari repositori di GitHub.
2. Dalam jendela instalasi yang terbuka, pilih Environment dan Node Group(s) target di mana add-on akan dipasang.
Kedua lapisan harus dipilih jika dipasang untuk cluster PostgreSQL dengan node penyeimbang beban Pgpool-II.
Klik Install untuk melanjutkan.
3. Dalam satu menit, database Anda akan dikonfigurasi ulang untuk bekerja melalui koneksi terenkripsi.
Add-On Specifics
Di bawah ini Anda dapat mempelajari tentang proses dan spesifikasi pembuatan sertifikat:
- Sertifikat dibuat dengan utilitas /usr/local/sbin/selfcertgen.
- Sertifikat bersifat self-signed dan diterbitkan untuk hostname node tertentu. Artinya, setiap node memiliki satu set sertifikat sendiri, dan Anda harus menggunakan yang sesuai dengan node yang diakses untuk otentikasi.
- Sertifikat disimpan dalam folder /var/lib/jelastic/keys/SSL-TLS (dapat diakses melalui pintasan keys di file manager). Terdapat dua subfolder:
- server – sertifikat server digunakan untuk memberikan enkripsi TLS dari koneksi ke database PostgreSQL
- client – sertifikat klien yang dapat diunduh dapat digunakan untuk mengotentikasi koneksi klien ke server database (fungsionalitas tidak tersedia untuk node Pgpool-II)
Konfigurasi PostgreSQL:
-
Autentikasi md5 diubah menjadi scram-sha-256 untuk memberikan tingkat keamanan yang lebih baik (dianggap sebagai praktik terbaik oleh pengembang PostgreSQL) dan untuk mendukung SSL dalam topologi cluster dengan node penyeimbang beban Pgpool-II.
-
Jika md5 digunakan sebagai protokol autentikasi default sebelum pemasangan add-on SSL - pengaturan ini diubah secara global untuk daemon PostgreSQL.
-
Perubahan berikut dilakukan pada file konfigurasi /var/lib/pgsql/data/postgresql.conf:
ssl_cert_file = '/var/lib/jelastic/keys/SSL-TLS/server/server.crt'
ssl_ca_file = '/var/lib/jelastic/keys/SSL-TLS/server/root.crt'
ssl_key_file = '/var/lib/jelastic/keys/SSL-TLS/server/server.key'
ssl = on
-
Karena perubahan algoritma, password pengguna database yang ada harus direset. Ini dilakukan secara otomatis untuk pengguna default ‘ webadmin ’ (ke password yang sama seperti sebelumnya) tetapi harus dilakukan secara manual untuk pengguna kustom yang ada.
-
Aturan ‘ hostssl ’ digunakan sebagai pengganti ‘ host ’ dalam file /var/lib/pgsql/data/pg_hba.conf untuk memastikan autentikasi SSL untuk pengguna.
hostssl all all 0.0.0.0/0 scram-sha-256
- Jika Anda ingin mengaktifkan autentikasi pengguna melalui sertifikat klien, Anda perlu menambahkan “ cert ” secara manual sebagai metode autentikasi.
Konfigurasi Pgpool-II:
-
Opsi SSL diaktifkan dalam konfigurasi Pgpool-II (/etc/pgpool-II/pgpool.conf) secara otomatis selama pemasangan add-on.
ssl = on
enable_pool_hba = on
ssl_key = '/var/lib/jelastic/keys/SSL-TLS/server/server.key'
ssl_cert = '/var/lib/jelastic/keys/SSL-TLS/server/server.crt'
pool_passwd = 'pool_passwd'
-
Aturan ‘ hostssl ’ digunakan sebagai pengganti ‘ host ’ dalam file /etc/pgpool-II/pool_hba.conf untuk memastikan autentikasi SSL untuk pengguna.
hostssl all all 0.0.0.0/0 scram-sha-256
-
Catatan yang sesuai harus ditambahkan untuk pengguna kustom ke file /etc/pgpool-II/pool_passwd. Dua catatan untuk pengguna default ‘ webadmin ’ dan ‘ pgpool ’ ditambahkan secara otomatis. Untuk semua pengguna lainnya, silakan gunakan utilitas pg_enc:
pg_enc -m -f /etc/pgpool-II/pgpool.conf -u $USERNAME $PASSWORD
Add-On Configuration
Setelah pemasangan, add-on dapat ditemukan di bawah tab Add-Ons untuk layer yang sesuai.
Opsi konfigurasi yang tersedia cukup sederhana:
- Re-issue certificates – menghasilkan sertifikat SSL untuk koneksi aman yang baru (misalnya, jika kompromi atau terhapus secara tidak sengaja)
- Configuration Tutorial – membuka panduan manual tentang Establishing SSL Connection to PostgreSQL
- Uninstall (di menu add-on di sudut kanan atas) - menghapus add-on, konfigurasi kustom, dan sertifikat SSL yang dihasilkan dari layer
Secure Connection to PostgreSQL
1. Fungsionalitas “encryption in transit” (server-side encryption) berfungsi segera setelah pemasangan. Anda dapat memeriksanya dengan memberikan kredensial akses kepada klien dan membangun koneksi. Kami akan menggunakan utilitas psql untuk contoh ini.
Anda dapat menggunakan endpoint atau public IP sebagai titik masuk database Anda untuk koneksi eksternal. Mari kita periksa contoh endpoint (ke node Pgpool-II untuk cluster):
Hubungkan dari klien dengan perintah berikut (Anda bisa mendapatkan kredensial akses default dari email yang diterima setelah pemasangan database):
psql -U {userName} {dbName} -h {host} -p {port} -W
Di sini:
{userName}
- nama pengguna database untuk koneksi{dbName}
- nama database yang akan dihubungkan{host}
- titik masuk database (endpoint, dalam kasus kami){port}
- port untuk koneksi (dari endpoint, dalam kasus kami)
2. Selain itu, Anda dapat menggunakan sertifikat klien untuk otentikasi (server- and client-side encryption). Dalam hal ini, file sertifikat SSL harus diberikan kepada klien. Anda dapat mengunduhnya dari direktori /var/lib/jelastic/keys/SSL-TLS/client dari node PostgreSQL yang dibutuhkan.
Klien perlu mengunggah file sertifikat (client.crt, client.key, root.crt) ke komputer/container/VM mereka. Setelah itu, koneksi ke node PostgreSQL yang dibutuhkan dapat dibangun sebagai berikut:
psql "sslmode=verify-ca sslrootcert={path/to/root.crt} sslcert={path/to/client.crt} sslkey={path/to/client.key} host={host} port={port} user={userName} dbname={dbName}"
Sebagai alternatif, Anda bisa memeriksa otentikasi dengan sertifikat klien seperti yang dijelaskan dalam panduan SSL Connection to PostgreSQL.