在 CentOS 上“加密 PostgreSQL”通常可以从三个层面来做,取决于你想保护什么:
openssl req -new -x509 -days 365 -nodes \
-out /var/lib/pgsql/server.crt \
-keyout /var/lib/pgsql/server.key
chown postgres:postgres /var/lib/pgsql/server.*
chmod 600 /var/lib/pgsql/server.key
编辑 postgresql.conf(通常在 /var/lib/pgsql/<version>/data/):
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
编辑 pg_hba.conf,强制使用 SSL:
hostssl all all 0.0.0.0/0 md5
systemctl restart postgresql
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb pgdata
mkfs.ext4 /dev/mapper/pgdata
mount /dev/mapper/pgdata /var/lib/pgsql
CREATE EXTENSION pgcrypto;
INSERT INTO users (name, secret)
VALUES ('tom', pgp_sym_encrypt('password', 'key'));
SELECT pgp_sym_decrypt(secret, 'key') FROM users;
scram-sha-256 替代 md5password_encryption = scram-sha-256
pg_hba.conf 限制 IP✅ SSL 传输加密
✅ LUKKS 磁盘加密
✅ scram-sha-256 认证
✅ 敏感字段 pgcrypto
如果你能说明:
我可以给你一套精确可执行的方案。