温馨提示×

centos如何加密postgresql

小樊
41
2026-09-15 14:21:16
栏目: 云计算

在 CentOS 上“加密 PostgreSQL”通常可以从三个层面来做,取决于你想保护什么:


一、数据传输加密(客户端 ↔ 服务端,SSL/TLS)

1. 生成 SSL 证书(CentOS)

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

2. 修改 PostgreSQL 配置

编辑 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

3. 重启服务

systemctl restart postgresql

二、数据存储加密(磁盘 / 表空间加密)

方案 1:LUKS 磁盘加密(推荐)

cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb pgdata
mkfs.ext4 /dev/mapper/pgdata
mount /dev/mapper/pgdata /var/lib/pgsql

方案 2:表空间加密(Pg 13+ 不支持原生,需要扩展)

  • 可使用 pgcrypto(字段级加密)
  • 或使用 第三方:
    • EDB Transparent Data Encryption
    • pgsodium

三、字段级加密(应用层 / SQL 层)

使用 pgcrypto

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 替代 md5
password_encryption = scram-sha-256
  • 修改 pg_hba.conf 限制 IP

推荐组合(生产环境)

✅ SSL 传输加密
✅ LUKKS 磁盘加密
✅ scram-sha-256 认证
✅ 敏感字段 pgcrypto

如果你能说明:

  • PostgreSQL 版本
  • CentOS 版本
  • 是云服务器还是物理机
  • 想防“谁”(黑客 / 运维 / 合规)

我可以给你一套精确可执行的方案。

0 踩