数据已经成为了一个企业发展的基石,数据的安全至关重要,近年来,发生了多起,数据被删除的案例。因此数据库的安全策略相当重要,本文列举了一些常见的安全加固方法。
1、设置PostgreSQL数据库实例的最大连接数,并给超级用户预留足够的连接
Alter system set max_connections to 2000; Alter system set superuser_reserved_connections to 20; 注意:普通用户的最大连接数实际为:2000-20 =1980;参数修改后,需要重启数据库生效 |
2、为数据库设置最大允许的连接数
Alter database dbname with connection limit 1000; |
3、修改数据库实例的默认监听端口
查看PG使用的监听端口:
Alter system set port to 6789;//注意需要使用超级用户修改,重启生效 |
4、为应用用户设置最大连接数
Max_connections设置PG实例的最大连接数,还可以为单独用户设置最大连接数 Create user weiqiang password ‘weiqiang’ connection limit 300; 或者 Alter user weiqiang wiyh connection limit 300; |
5、自定义PG超级管理员
在初始化数据库时,指定超级管理员: |
6、设置用户角色的密码的导入日期
尝试进行登录报错信息如下: |
7、不使用默认的postgres数据库
在数据库集群初始化完毕后,不建议保留postgres数据,建议使用一个新的空的数据库进行代替,避免人为非法尝试登录默认数据库: Create database empty_used; \c empty_used Drop database postgres; |
8、修改用户的默认密码加密方式
新版本数据库建议用户密码加密方式设置为scram-sha-256 修改用户加密方式 或者在数据库实例初始化时指定密码加密方式: Initdb -A scram-sha-256 或者 Alter system set password_encryption to ‘scram-sha-256’; |
9、设置PostgreSQL实例的监听地址
PostgreSQL监听地址默认为localhost,不建议使用*或0.0.0.0 建议修改为:应用的ip地址 Alter system set listen_addresses to ‘192.168.21.142,192,168.21.144’;重启生效 |
10、配置pg_hba.conf客户端认证
Local all all scram-sha-256 ##本地登录使用密码验证,禁止设置为trust认证 Host all postgres 0.0.0.0/0 reject ##禁止超级用户远程登录 Host all all 192.168.21.142/32 scram-sha-256 Host replication repuser 192.168.21.144/32 scram-sha-256 |
不建议用户和密码相同;建议使用大小写字母及特殊字符混合,且不能小于一定的长度。建议使用passwordcheck进行密码复杂度检查。在CREATE USER或ALTER USER设置用户密码时会自动触发密码复杂度检查。 Vi $PGDATA/postgresql.conf Shared_preload_libraries=’passwordcheck’; Passwordcheck.level=’true’; 举例: |
用户权限设置原则:应用用户权限越小越好;够用就好 建议1:数据库删除public模式,或者回收所有用户拥有的public模式的权限 Revoke all privileges on schema public from PUBLIC; 建议2:设置应用用户的search_path to ‘app_user_schema’;不建议将该shema的所有权限授予引用用户 |
