Veritabanı taşıma güvenliği

Bu bölümde, veritabanı sunucusuyla olan ağ iletişimi ile ilgili konular ele alınmaktadır. Buna IP adresi bağlamaları ve ağ trafiğini TLS ile şifrelemek dahildir.

Veritabanı sunucusu IP adresi bağlama

Servisler ve veritabanı arasındaki hassas veritabanı iletişimini izole etmek için, veritabanı sunucularının yalnızca izole bir yönetim ağı üzerinden veritabanına ve veritabanına iletişim sağlamak üzere yapılandırılmasını öneririz. Bu, veritabanı sunucusunun gelen istemci bağlantıları için ağ soketini bağladığı arabirimi veya IP adresini sınırlandırarak sağlanır.

MySQL için bağlama adresini sınırlama

my.cnf dosyasında:

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

PostgreSQL için dinleme adresini kısıtlama

postgresql.conf dosyasında:

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

Veritabanı taşıma

Yönetim ağına veritabanı iletişimi kısıtlamanın yanı sıra, bulut yöneticisinin, veritabanının arka uçını TLS’yi gerektirmesi için yapılandırmasını şiddetle tavsiye ederiz. Veritabanı istemci bağlantıları için TLS’i kullanmak, iletişimi kurcalamaya ve dinlemeye karşı korur. Bir sonraki bölümde tartışılacak olan TLS’in kullanılması, X.509 sertifikaları (genellikle PKI olarak anılacaktır) aracılığıyla veritabanı kullanıcı kimlik doğrulaması yapmak için bir çatı sunmaktadır. Aşağıda, TLS’nin genel olarak iki popüler veritabanı arka uç MySQL ve PostgreSQL için yapılandırıldığı konusunda rehberlik etmektedir.

Not

Sertifika ve anahtar dosyaları yüklerken, dosya izinlerinin sınırlandırıldığından emin olun, örneğin chmod 0600 ve sahiplik veritabanı sunucusu kullanıcısı tarafından, diğer işlemler ve kullanıcıların veritabanı sunucusu üzerindeki yetkisiz erişimi önlemek için sınırlandırılmıştır.

MySQL SSL yapılandırması

Sistem geneli MySQL yapılandırma dosyasına aşağıdaki satırlar eklenmelidir:

my.cnf dosyasında:

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

İsteğe bağlı olarak, şifreli bağlantı için kullanılan SSL şifrelemeleri kümesini kısıtlamak isterseniz. Şifrelere ilişkin bir liste ve şifre dizesini belirten sözdizimi için şifreler ‘a bakınız:

ssl-cipher = 'cipher:list'

PostgreSQL SSL yapılandırma

Sistem geneli PostgreSQL yapılandırma dosyası postgresql.conf a aşağıdaki satırlar eklenmelidir.

ssl = true

İsteğe bağlı olarak, şifreli bağlantı için kullanılan SSL şifrelemeleri kümesini kısıtlamak isterseniz. Şifrelere ilişkin bir liste ve şifre dizesini belirten sözdizimi için şifreler ‘a bakınız:

ssl-ciphers = 'cipher:list'

Sunucu sertifikası, anahtar ve sertifika yetkilisi (CA) dosyaları, $PGDATA dizinindeki aşağıdaki dosyalara yerleştirilmelidir:

  • $PGDATA/server.crt - Sunucu sertifikası

  • $PGDATA/server.key - server.crt sertifikasının gizli anahtarı

  • $PGDATA/root.crt - Güvenilen sertifika otoriteleri

  • $PGDATA/root.crl - Sertifika iptal listesi