CentOS系统中PostgreSQL的安全设置
导读:CentOS 上 PostgreSQL 安全设置实操指南 一 系统与服务加固 保持系统与安全组件为最新:执行 sudo yum update -y,及时修补漏洞。 安装与初始化:安装 postgresql-server(及可选的 post...
CentOS 上 PostgreSQL 安全设置实操指南
一 系统与服务加固
- 保持系统与安全组件为最新:执行 sudo yum update -y,及时修补漏洞。
- 安装与初始化:安装 postgresql-server(及可选的 postgresql-contrib),使用 postgresql-setup initdb 初始化数据目录,随后启动并设为开机自启:sudo systemctl start postgresql & & sudo systemctl enable postgresql。
- 最小暴露面:如无远程需求,保持仅本地监听;如必须远程,仅开放必要来源 IP 与端口,并优先采用 SSL/TLS 加密通道。
二 网络访问控制
- 防火墙放行:使用 firewalld 仅开放 5432/tcp(或自定义端口),例如:sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp & & sudo firewall-cmd --reload;如使用默认服务名也可:sudo firewall-cmd --permanent --add-service=postgresql & & sudo firewall-cmd --reload。
- 监听与端口:在 postgresql.conf 中设置 listen_addresses(建议仅内网网段)与 port(默认 5432)。
- 客户端认证:在 pg_hba.conf 中按“最小权限”配置认证,示例:
- 本地仅本机:host all all 127.0.0.1/32 md5
- 内网网段:host all all 192.168.1.0/24 md5
- 禁止公网 0.0.0.0/0 的口令登录,必要时改为 scram-sha-256 并限定来源
- 变更生效:修改配置后执行 sudo systemctl restart postgresql。
三 身份认证与传输加密
- 启用 SSL/TLS:在 postgresql.conf 中开启 ssl = on,配置证书与密钥:
- ssl_cert_file = ‘/path/to/server.crt’
- ssl_key_file = ‘/path/to/server.key’
- 可按需设置 ssl_ciphers = ‘HIGH:MEDIUM:+3DES:!aNULL’、ssl_prefer_server_ciphers = on
- 证书生成示例(测试环境):使用 openssl 生成 server.req、server.key、server.crt,部署后将证书与密钥权限设为仅数据库运行用户可读。
- 认证强度:优先使用 scram-sha-256 替代 md5;在 pg_hba.conf 中对不同来源网段设置不同 METHOD,公网来源仅允许加密通道与强认证。
四 权限与最小权限模型
- 角色与权限基础:PostgreSQL 以 角色(Role) 为权限载体,区分 LOGIN 角色与组角色;所有角色默认属于 public,需注意其默认权限,业务对象避免放入 public 模式。
- 预定义角色:PostgreSQL 14 提供 pg_read_all_data、pg_write_all_data,可快速授予全库只读/只写(适合运维与审计场景,生产建议按 Schema/表细化)。
- 权限规划示例(以项目 db_prj 为例):
- 创建资源账号与业务角色:db_prj_owner(资源/建库建表)、db_prj_role_readonly、db_prj_role_readwrite
- 按 Schema 授权:对 db_prj 及新增 db_prj_1/db_prj_2 执行
- GRANT USAGE ON SCHEMA db_prj TO db_prj_role_readonly, db_prj_role_readwrite;
- GRANT CREATE ON SCHEMA db_prj TO db_prj_owner;
- 按需授予表级权限(只读:SELECT;读写:SELECT/INSERT/UPDATE/DELETE;避免授予 DDL)
- 业务账号归属角色:GRANT db_prj_role_readonly TO app_user; 或 GRANT db_prj_role_readwrite TO app_writer;
- 查询账号与角色关系:使用 \du 或查询 pg_roles/pg_auth_members 查看成员关系与权限继承。
五 审计监控与备份恢复
- 审计与日志:
- 启用数据库日志:在 postgresql.conf 配置 log_min_messages、log_directory 等,集中记录错误、连接与关键 DDL/DML;结合系统审计 auditd 记录本地操作:sudo yum install auditd & & sudo systemctl start auditd,使用 ausearch/aureport 分析 /var/log/audit/audit.log。
- 性能与安全监控:安装 pg_stat_statements 扩展,分析慢查询与异常访问模式。
- 备份与恢复:
- 逻辑备份:pg_dump -U user -W -F t -f backup.tar dbname(或自定义格式/压缩),定期验证可恢复性。
- 恢复演练:定期在隔离环境验证备份完整性与恢复流程,确保 RPO/RTO 达标。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS系统中PostgreSQL的安全设置
本文地址: https://pptw.com/jishu/758884.html
