墨墨导读:本文主要介绍PostgreSQL数据库中一些常见用户安全配置。
1. 限制用户连接数max_connections根据应用并发量设置合理的值,对普通数据库用户设置限制连接数,并设置少量的保留超级用户登录连接数。postgres=# create user app1 connection limit 5; CREATE ROLE
2. 修改默认端口postgres=# select * from current_setting('port'); current_setting ----------------- 6000 (1 row)
3. 不使用默认postgres数据库postgres=# create database my_app_db owner app1; CREATE DATABASE postgres=# \c my_app_db You are now connected to database "my_app_db" as user "postgres". my_app_db=# drop database postgres; DROP DATABASE
4. 自定义超级用户建议删除默认超级用户postgres,新建不同名称超级用户,也可再initdb时使用-U指定。$ initdb -D /opt/data6000/ -U admin -W
5. 修改监听地址根据业务场景设置,比如设置为localhost或服务器IP。#listen_addresses = 'localhost' #listen_addresses = '192.168.99.100' #listen_addresses = '192.168.99.100,192.168.99.200'
6. 配置客户端认证# 服务端本地数据库用户免密登录 local all all trust # 拒绝超级用户从网络登录 host all postgres 0.0.0.0/0 reject # 其它用户密码验证登陆 host all all 0.0.0.0/0 scram-sha-256 # 流复制用户密码验证登录 host replication replica 192.168.99.101/32 md5
7. 设置socket访问方式unix_socket_directories='$PGDATA' unix_socket_group='' unix_socket_permissions='0700'
8. 使用pgpass文件linux和window都建议使用pgpass文件Linux $ cat .pgpass 192.168.99.200:5432:postgres:postgres:admin 192.168.99.227:6432:*:app1:yourPassword
win10 C:\Users\pcsuc\AppData\Roaming\postgresql\pgpass.conf localhost:5432:*:postgres:admin 192.168.99.227:6432:*:app1:yourPassword
9. 用户密码安全策略可参考《PostgreSQL用户密码安全策略管理》(链接:https://www./db/21476)
10. 权限配置表权限按最小最需原则分配,建议不使用public模式 revoke all on DATABASE XXX from public; 可参考《PostgreSQL用户表权限设计与配置》(链接:https://www./db/23483)
11. 记录数据库日志并清理配置合理的日志级别,常见级别如warn 配置日期过期策略,如配置最大100个循环写文件,或按周循环等。
12. 备份恢复测试初始化数据目录时建议打开checksums,数据库备份后需要做恢复测试,确保有效性,可以使用第三方备份恢复管理器,如pg_rman,pg_probackup,pgBackRest等。
13. 备份数据文件加密存储备份文件可以手工压缩加密或者借助第三方备份工具,如pgBackRest等。
14. 小版本升级定期升级数据库小版本,下面是源码方式升级主要步骤:
下载编译新版本的源码程序到新目录
重新编译现有数据库所有源码安装的扩展
停数据库服务
使用符号链接新目录到原目录
新版本服务启动
检查无误后移除旧版本 墨天轮原文链接:https://www./db/27257(复制到浏览器中打开或者点击“阅读原文”)
|