Keamanan transportasi database

Bab ini membahas isu-isu yang berkaitan dengan komunikasi jaringan ke dan dari server database. Ini termasuk binding alamat IP dan mengenkripsi lalu lintas jaringan dengan TLS.

Alamat IP server database mengikat

Untuk mengisolasi komunikasi basis data sensitif antara layanan dan database, kami sangat menyarankan agar server database dikonfigurasi agar hanya mengizinkan komunikasi ke dan dari database melalui jaringan manajemen yang terisolasi. Hal ini dicapai dengan membatasi antarmuka atau alamat IP yang digunakan server database untuk mengikat soket jaringan untuk koneksi klien yang masuk.

Membatasi alamat pengikat untuk MySQL

Di my.cnf:

[mysqld]
...
bind-address <ip address or hostname of management network interface>

Membatasi alamat mendengarkan PostgreSQL

Di postgresql.conf:

listen_addresses = <ip address or hostname of management network interface>

Transportasi database

Selain membatasi komunikasi database ke jaringan manajemen, kami juga sangat menyarankan administrator awan untuk mengkonfigurasi database mereka agar memerlukan TLS. Menggunakan TLS untuk koneksi klien basis data melindungi komunikasi dari gangguan dan penyadapan. Seperti yang akan dibahas pada bagian selanjutnya, dengan menggunakan TLS juga menyediakan framework untuk melakukan otentikasi pengguna database melalui sertifikat X.509 (biasa disebut PKI). Berikut adalah panduan tentang bagaimana TLS biasanya dikonfigurasi untuk dua database populer yang berakhir dengan MySQL dan PostgreSQL.

Catatan

Saat menginstal sertifikat dan file kunci, pastikan hak akses file dibatasi, misalnya chmod 0600, dan kepemilikannya dibatasi pada pengguna daemon database untuk mencegah akses yang tidak sah oleh proses dan pengguna lain di server database.

Konfigurasi SSL MySQL

Baris berikut harus ditambahkan di file konfigurasi system-wide MySQL:

Di my.cnf:

[[mysqld]]
...
ssl-ca = /path/to/ssl/cacert.pem
ssl-cert = /path/to/ssl/server-cert.pem
ssl-key = /path/to/ssl/server-key.pem

Opsional, jika Anda ingin membatasi sekumpulan ciphers SSL yang digunakan untuk koneksi terenkripsi. Lihat ciphers untuk daftar ciphers dan sintaks untuk menentukan string cipher:

ssl-cipher = 'cipher:list'

Konfigurasi SSL PostgreSQL

Baris berikut harus ditambahkan di file konfigurasi system-wide PostgreSQL, postgresql.conf.

ssl = true

Opsional, jika Anda ingin membatasi sekumpulan ciphers SSL yang digunakan untuk koneksi terenkripsi. Lihat ciphers untuk daftar ciphers dan sintaks untuk menentukan string cipher:

ssl-ciphers = 'cipher:list'

File sertifikat server, key, dan certificate authority (CA) harus ditempatkan di direktori $PGDATA pada file berikut:

  • $PGDATA/server.crt - Sertifikat server

  • $PGDATA/server.key - Private key yang sesuai server.crt

  • $PGDATA/root.crt - Otoritas sertifikat dipercaya

  • $PGDATA/root.crl - Daftar pencabutan sertifikat