Ubuntu 下 PostgreSQL 安全设置清单
一 身份与认证加固
ALTER USER postgres WITH PASSWORD '强密码';,避免使用默认或弱口令。pg_hba.conf 中细化到“数据库/用户/来源网段/认证方式”的粒度,避免使用过于宽松的规则。local all all peerhost all all 127.0.0.1/32 scram-sha-256host myapp appuser 192.168.1.0/24 scram-sha-256host postgres dbadmin 203.0.113.10/32 scram-sha-256二 网络与防火墙
postgresql.conf 中将 listen_addresses 设为仅需要的地址(如仅内网 192.168.1.10 或先保持 localhost 再按需放开),避免暴露到公网。sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp;默认拒绝其他来源。0.0.0.0/0 的开放策略。三 加密与传输安全
postgresql.conf 中设置 ssl = on,并配置 ssl_cert_file、ssl_key_file(以及可选的 ssl_ca_file);客户端连接字符串添加 sslmode=require/verify-full。verify-ca/verify-full 增强校验。四 权限最小化与数据库加固
CREATE ROLE appuser WITH LOGIN PASSWORD '强密码' NOSUPERUSER NOCREATEDB NOCREATEROLE;CREATE DATABASE myapp OWNER appuser;GRANT CONNECT, TEMPORARY ON DATABASE myapp TO appuser; 以及对具体 schema/表 的 SELECT/INSERT/UPDATE/DELETE 权限。PUBLIC 默认授予的权限;对敏感表设置行级安全(RLS)或视图封装。五 日志审计与补丁运维
postgresql.conf 中启用 log_statement = 'all'(或至少 mod),设置 log_connections = on、log_disconnections = on、log_duration = on,并配置合适的 log_directory 与 log_filename 滚动策略。postgresql.conf、pg_hba.conf),变更后使用 SELECT pg_reload_conf(); 或 sudo systemctl reload postgresql 使配置生效,减少停机。