【openGauss数据库安全策略配置】--略有小成
- 🔻 一、openGauss数据库安全策略
- 🔰 1.1 账户安全策略
- ⛳ 1.1.1 自动锁定和解锁帐户
- 💧 1.1.1.1 配置failed_login_attempts参数
- 💧 1.1.1.2 配置password_lock_time参数
- ⛳ 1.1.2 手动锁定和解锁帐户
- ⛳ 1.1.3 删除不再使用的帐户
- 🔰 1.2 账户有效期设置
- 🔰 1.3 密码安全策略设置
- ⛳ 1.3.1 配置用户密码加密算法
- ⛳ 1.3.2 配置用户密码安全参数
- 💧 1.3.2.1 密码复杂度
- 💧 1.3.2.2 密码重用
- 💧 1.3.2.3 密码有效期限
- 💧 1.3.2.4 密码修改
- 💧 1.3.2.5 密码验证
- 💧 1.3.2.6 设置用户密码失效
- 🔻 二、总结—温故知新
👈【上一篇】 |
💖The Begin💖 点点关注,收藏不迷路💖
| 【下一篇】👉 |
🔻 一、openGauss数据库安全策略
openGauss为帐户提供了自动锁定和解锁帐户、手动锁定和解锁异常帐户和删除不再使用的帐户等一系列的安全措施,保证数据安全。
🔰 1.1 账户安全策略
⛳ 1.1.1 自动锁定和解锁帐户
自动锁定和解锁帐户使用场景:
🌳1、用户输入密码错误次数超过一定次数(failed_login_attempts),系统将自动锁定该帐户,openGauss默认值为10。次数设置越小越安全。
🌳2、当帐户被锁定时间超过设定值(password_lock_time),则当前帐户自动解锁,openGauss默认值为1天。时间设置越长越安全。
🌳3、当failed_login_attempts设置为0时,表示不限制密码错误次数。
🌳4、当password_lock_time设置为0时,表示即使超过密码错误次数限制导致帐户锁定,也会在短时间内自动解锁。
这两个参数的默认值都符合安全标准,可以根据需要重新设置参数,提高安全等级。---建议使用参数默认值。下面介绍有关这两个参数的设置步骤。
💧 1.1.1.1 配置failed_login_attempts参数
failed_login_attempts
参数文件地址/opt/software/install/data/dn/postgresql.conf
,
/opt/software/install/
----你的openGauss数据库安装路径。
###🍀1、以用户omm登录数据库节点、连接postgres数据库🍀###
[root@klgdj ~]# su - omm
[omm@klgdj ~]$ gsql -d postgres -p 15400
###🍀2、查看已配置的failed_login_attempts参数🍀###
openGauss=# SHOW failed_login_attempts;
failed_login_attempts
-----------------------
10
(1 row)
db_test01=#
###🍀3、执行“\q”命令退出数据库
openGauss=# \q
###🍀4、修改failed_login_attempts参数值为5🍀###
[omm@klgdj ~]$ gs_guc reload -D /opt/software/install/data/dn -c "failed_login_attempts=5"
###🍀5、检查参数值,限制密码错误次数已修改为5🍀###
openGauss=# SHOW failed_login_attempts;
failed_login_attempts
-----------------------
5
(1 row)
openGauss=#
或者通过vi 参数文件地址/opt/software/install/data/dn/postgresql.conf,查看。
💧 1.1.1.2 配置password_lock_time参数
failed_login_attempts
参数文件地址/opt/software/install/data/dn/postgresql.conf
,
/opt/software/install/
----你的openGauss数据库安装路径。
###🍀1、查看已配置的password_lock_time参数🍀###
openGauss=# SHOW password_lock_time;
password_lock_time
--------------------
1d
(1 row)
openGauss=#
###🍀2、执行“\q”命令退出数据库
openGauss=# \q
###🍀4、修改password_lock_time参数值为2(天)🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_lock_time=2"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_lock_time=2 reload ].
NOTICE: password_lock_time and failed_login_attempts must have positive for lock and unlock functions to work as.
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.
Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
[omm@klgdj ~]$
###🍀5、检查参数值,帐户锁定后自动解锁时间已修改为2(天)🍀###
openGauss=# SHOW password_lock_time;
password_lock_time
--------------------
2d
(1 row)
openGauss=#
或者通过vi 参数文件地址/opt/software/install/data/dn/postgresql.conf,查看。
⛳ 1.1.2 手动锁定和解锁帐户
手动锁定和解锁帐户使用场景:
🌳1、管理员发现某帐户被盗、非法访问等异常情况,可手动锁定该帐户。
🌳2、当管理员认为帐户恢复正常后,可手动解锁该帐户。
下面手动锁定和解锁用户zyl:
###🍀1、手动锁定用户zyl🍀###
openGauss=# ALTER USER zyl ACCOUNT LOCK;
ALTER ROLE
openGauss=#
###🍀2、手动解锁用户zyl🍀###
openGauss=# ALTER USER zyl ACCOUNT UNLOCK;
ALTER ROLE
openGauss=#
⛳ 1.1.3 删除不再使用的帐户
删除不再使用的帐户使用场景:
🌳1、当确认帐户不再使用,管理员可以删除帐户。
该操作不可恢复
。
🌳2、当删除的用户正处于活动状态时,此会话状态不会立马断开,用户在会话状态断开后才会被完全删除。。
下面以删除zyl02用户为例:
###🍀1、删除zyl02用户🍀###
db_test01=# DROP USER zyl02 CASCADE;
DROP ROLE
db_test01=#
###🍀2、\du 查看数据库用户🍀###
db_test01=# \du
🔰 1.2 账户有效期设置
账户有效期设置使用场景:
🌳1、创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。
🌳2、不在有效操作期内的用户需要重新设定帐号的有效操作期。
###🍀1、创建zyl03用户并制定用户的有效开始时间和有效结束时间🍀###
openGauss=# CREATE USER zyl03 WITH PASSWORD 'zyl03#2023' VALID BEGIN '2023-06-22 08:00:00' VALID UNTIL '2030-06-22 08:00:00';
###🍀2、用户已不在有效使用期内,需要重新设定帐号的有效期🍀###
openGauss=# ALTER USER zyl03 WITH VALID BEGIN '2023-06-22 08:00:00' VALID UNTIL '2035-06-22 08:00:00';
ALTER ROLE
openGauss=#
🔰 1.3 密码安全策略设置
⛳ 1.3.1 配置用户密码加密算法
openGauss数据库的用户密码存储在系统表pg_authid
中,为防止用户密码泄露,openGauss对用户密码进行加密存储,所采用的加密算法由配置参数password_encryption_type
决定。
🌳 0--表示采用md5方式对密码加密。MD5加密算法安全性低,存在安全风险,不建议使用。
🌳 1--表示采用sha256和md5方式对密码加密。MD5加密算法安全性低,存在安全风险,不建议使用。
🌳 2--表示采用sha256方式对密码加密,为默认配置。
🌳 3--表示采用sm3方式对密码加密。
可通过vi 参数文件地址/opt/software/install/data/dn/postgresql.conf,查看。
###🍀1、查看已配置的加密算法---当前设置MD5加密🍀###
openGauss=# SHOW password_encryption_type;
password_encryption_type
--------------------------
0
(1 row)
openGauss=#
###🍀2、如果显示结果为0或1,执行“\q”命令退出数据库🍀###
openGauss=# \q
###🍀3、将其设置为安全的加密算法---sha256🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_encryption_type=2"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c password_encryption_type=2 reload ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.
Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
[omm@klgdj ~]$
###🍀4、再次查看加密算法---(2)sha256🍀###
openGauss=# SHOW password_encryption_type;
password_encryption_type
--------------------------
2
(1 row)
openGauss=#
⛳ 1.3.2 配置用户密码安全参数
💧 1.3.2.1 密码复杂度
初始化数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度(password_policy)的要求。参数文件地址:/opt/software/install/data/dn/postgresql.conf
。
###🍀1、参数password_policy设置为1时表示采用密码复杂度校验,默认值。
###🍀2、参数password_policy设置为0时表示不采用密码复杂度校验,但需满足密码不能为空并且只包含有效字符,有效字符范围为大写字母(A-Z)、小写字母(a-z)、数字(0-9)及其他特殊字符。
###🍀3、设置为0会存在安全风险,不建议设置为0,即使需要设置也要将所有openGauss节点中的password_policy都设置为0才能生效。
配置password_policy参数:
###🍀1、查看已配置的参数---1(默认值)🍀###
openGauss=# SHOW password_policy;
password_policy
-----------------
1
(1 row)
openGauss=#
###🍀2、如果显示结果不为1,执行“\q”命令退出数据库🍀###
openGauss=# \q
###🍀3、设置password_policy参数成默认值1🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_policy=1"
💧 1.3.2.2 密码重用
用户修改密码时,只有超过不可重用天数(password_reuse_time
)或不可重用次数(password_reuse_max
)的密码才可以使用。
🌳 1、openGauss不可重用天数默认值为60天,不可重用次数默认值是0。
🌳 2、可以根据需要重新设置参数,提高安全等级。
###🍀1、password_reuse_time参数设置🍀###
###🍀查看已配置的参数---60天🍀###
openGauss=# SHOW password_reuse_time;
password_reuse_time
---------------------
60
(1 row)
openGauss=#
###🍀2、如果显示结果不为60,执行“\q”命令退出数据库。🍀###
openGauss=# \q
###🍀将password_reuse_time设置成默认值60🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_reuse_time=60"
###🍀2、password_reuse_max参数设置🍀###
###🍀查看已配置的参数----0次🍀###
openGauss=# SHOW password_reuse_max;
password_reuse_max
--------------------
0
(1 row)
openGauss=#
###🍀如果显示结果不为0,执行“\q”命令退出数据库🍀###
openGauss=# \q
###🍀将password_reuse_max设置成默认值0🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_reuse_max = 0"
💧 1.3.2.3 密码有效期限
数据库用户的密码都有密码有效期(password_effect_time
),当达到密码到期提醒天数(password_notify_time
)时,系统会在用户登录数据库时提示用户修改密码。
###🍀1、password_effect_time参数设置🍀###
###🍀查看已配置的参数----90天🍀###
openGauss=# SHOW password_effect_time;
password_effect_time
----------------------
90
(1 row)
openGauss=#
###🍀结果不为90,执行“\q”命令退出数据库🍀###
openGauss=# \q
###🍀设置password_effect_time成默认值90(不建议设置为0)🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_effect_time = 90"
###🍀2、password_notify_time参数设置🍀###
###🍀查看已配置的参数----密码到期前7天提醒🍀###
openGauss=# SHOW password_notify_time;
password_notify_time
----------------------
7
(1 row)
openGauss=#
###🍀如果显示结果不为7,执行如下命令设置成默认值7(不建议设置为0)🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "password_notify_time = 7"
💧 1.3.2.4 密码修改
1、在安装数据库时,会新建一个和初始化用户(omm)的操作系统用户,为了保证帐户安全,需要定期修改操作系统用户的密码。
命令:passwd omm
2、建议系统管理员和普通用户都要定期修改自己的帐户密码,避免帐户密码被非法窃取。
命令:ALTER USER zyl IDENTIFIED BY "zyl@1234";
3、管理员可以修改自己的或者其他帐户的密码。通过修改其他帐户的密码,解决用户密码遗失所造成无法登录的问题。
💧 1.3.2.5 密码验证
设置当前会话的用户和角色时,需要验证密码。
###🍀错误密码情况
openGauss=# SET ROLE zyl PASSWORD "zyl@123456";
ERROR: Invalid username/password,set role denied.
openGauss=#
###🍀正确密码情况
openGauss=# SET ROLE zyl PASSWORD "zyl#2023";
SET
openGauss=>
💧 1.3.2.6 设置用户密码失效
具有CREATEROLE
权限的用户在创建用户时可以强制用户密码失效,新用户首次登陆数据库后需要修改密码才允许执行其他查询操作。
###🍀1、创建用户时,指定密码失效
openGauss=# CREATE USER zyl04 PASSWORD "abc@1234" EXPIRED;
###🍀2、强制用户密码失效或者强制修改密码且失效
openGauss=# ALTER USER zyl04 PASSWORD EXPIRED;
ALTER ROLE
openGauss=# ALTER USER zyl04 PASSWORD "abc@12345" EXPIRED;
ALTER ROLE
openGauss=#
1、密码失效的用户登录数据库后,当执行简单查询或者扩展查询时,会提示用户修改密码。
2、只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以设置用户密码失效,其中系统管理员也可以设置自己或其他系统管理员密码失效。
3、不允许设置初始用户(omm)密码失效。
🔻 二、总结—温故知新
❓ openGauss数据库---设置帐户安全策略
❓ openGauss数据库---设置帐号有效期
❓ openGauss数据库---设置密码安全策略
👈【上一篇】 |
💖The End💖 点点关注,收藏不迷路💖
| 【下一篇】👉 |