DBAtlas · Veritabanı operasyon atlası

md5 parolalardan scram-sha-256'ya geçiş yap

PostgreSQLGüvenlik

Komut

-- 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 et

Ne 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.

DBAtlas'ta aç →

İlgili