md5 parolalardan scram-sha-256'ya geçiş yap
PostgreSQLGüvenlikKomut
-- 1) Yeni parolalar SCRAM ile saklansın
ALTER SYSTEM SET password_encryption = 'scram-sha-256';
SELECT pg_reload_conf();
-- 2) Hâlâ md5 hash'li parola taşıyan rolleri bul (superuser gerekir)
SELECT rolname,
CASE
WHEN rolpassword LIKE 'SCRAM-SHA-256$%' THEN 'scram-sha-256'
WHEN rolpassword LIKE 'md5%' THEN 'md5'
WHEN rolpassword IS NULL THEN 'no password'
ELSE 'other'
END AS password_type,
rolvaliduntil
FROM pg_authid
WHERE rolcanlogin
ORDER BY password_type, rolname;
-- 3) Her md5 rolün parolasını yeniden belirle (psql'de tercihen: \password legacy_app)
ALTER ROLE legacy_app PASSWORD 'Yeni#Parola2';
# 4) Tüm roller SCRAM olduktan sonra pg_hba.conf'ta md5 -> scram-sha-256 yap ve reload etNe yapar?
Yeni parolaların SCRAM-SHA-256 ile saklanmasını sağlar, hâlâ md5 hash taşıyan login rollerini tespit eder ve parolalar yenilendikten sonra pg_hba.conf'u scram-sha-256'ya geçirme adımlarını verir.
Ne zaman kullanılır?
Güvenlik denetiminde md5 bulgusu geldiğinde, PG14+ yükseltmesi sonrası veya md5'in kullanımdan kaldırıldığı sürümlere hazırlanırken.
Dikkat
Mevcut md5 hash'lerden SCRAM üretilemez; her parola açık haliyle yeniden set edilmelidir (uygulama ekipleriyle koordinasyon gerekir). pg_hba.conf'ta 'md5' yöntemi, parolası SCRAM olan roller için otomatik olarak SCRAM doğrulaması yapar; bu yüzden geçiş boyunca md5 bırakmak güvenli bir ara adımdır, ancak yöntem 'scram-sha-256' yapılınca md5 parolalı roller bağlanamaz. Eski istemci sürücüleri (libpq < 10, eski JDBC/.NET sürücüleri) SCRAM desteklemeyebilir; önce sürücüleri güncelle. ALTER ROLE ... PASSWORD parolayı log_statement ile loga yazabilir; psql \password parolayı istemci tarafında hash'leyip gönderir.
İlgili
- En az yetki ilkesiyle rol hiyerarşisi kur (GRANT + ALTER DEFAULT PRIVILEGES)
- Row-level security ile kiracı (tenant) izolasyonu kur
- pg_hba.conf kural sırasını doğrula ve güvenle reload et
- SSL/TLS'i etkinleştir ve şifreli bağlantıları doğrula (pg_stat_ssl)
- pgaudit ile rol ve nesne bazlı denetim kaydı (audit) tut