操作步骤
用户密码存储在系统表pg_authid中,为防止用户密码泄露,openGauss对用户密码进行加密存储,所采用的加密算法由配置参数password_encryption_type决定。
当参数password_encryption_type设置为2时,表示采用sha256方式对密码加密,为默认配置。
以操作系统用户omm登录数据库主节点。
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.
postgres=#
查看已配置的加密算法。
postgres=# SHOW password_encryption_type; password_encryption_type(1 row)
如果显示结果为0或1,执行“\q”命令退出数据库。
执行如下命令将其设置为安全的加密算法。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_encryption_type=2"
配置密码安全参数。
密码复杂度
初始化数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度( password_policy )的要求,否则会提示用户重新输入密码。
配置password_policy参数。
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.
postgres=#
查看已配置的参数。
postgres=# SHOW password_policy; password_policy(1 row)
如果显示结果不为1,执行“\q”命令退出数据库。
执行如下命令设置成默认值1。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_policy=1"
帐户密码的复杂度要求如下:
用户修改密码时,只有超过不可重用天数( password_reuse_time )或不可重用次数( password_reuse_max )的密码才可以使用。参数配置说明如 表2 所示。
不可重用天数默认值为60天,不可重用次数默认值是0。这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户可以根据需要重新设置参数,提高安全等级。
配置password_reuse_time参数。
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.
postgres=#
查看已配置的参数。
postgres=# SHOW password_reuse_time; password_reuse_time(1 row)
如果显示结果不为60,执行“\q”命令退出数据库。
执行如下命令设置成默认值60。
不建议设置为0,即使需要设置也要将所有openGauss节点中的password_reuse_time都设置为0才能生效。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_reuse_time=60"
配置password_reuse_max参数。
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.
postgres=#
查看已配置的参数。
postgres=# SHOW password_reuse_max; password_reuse_max(1 row)
如果显示结果不为0,执行“\q”命令退出数据库。
执行如下命令设置成默认值0。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_reuse_max = 0"
密码有效期限
数据库用户的密码都有密码有效期( password_effect_time ),当达到密码到期提醒天数( password_notify_time )时,系统会在用户登录数据库时提示用户修改密码。
考虑到数据库使用特殊性及业务连续性,密码过期后用户还可以登录数据库,但是每次登录都会提示修改密码,直至修改为止。
配置password_effect_time参数。
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.
postgres=#
查看已配置的参数。
postgres=# SHOW password_effect_time; password_effect_time(1 row)
如果显示结果不为90,执行“\q”命令退出数据库。
执行如下命令设置成默认值90(不建议设置为0)。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_effect_time = 90"
配置password_notify_time参数。
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.
postgres=#
查看已配置的参数。
postgres=# SHOW password_notify_time; password_notify_time(1 row)
如果显示结果不为7,执行如下命令设置成默认值7(不建议设置为0)。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_notify_time = 7"
建议系统管理员和普通用户都要定期修改自己的帐户密码,避免帐户密码被非法窃取。
以修改用户user1密码为例,以系统管理员用户连接数据库并执行如下命令:
postgres=# ALTER USER user1 IDENTIFIED BY "1234@abc" REPLACE "5678@def";
ALTER ROLE
管理员可以修改自己的或者其他帐户的密码。通过修改其他帐户的密码,解决用户密码遗失所造成无法登录的问题。
以修改用户joe帐户密码为例,命令格式如下:
postgres=# ALTER USER joe IDENTIFIED BY "abc@1234";
ALTER ROLE
- 系统管理员可以修改普通用户密码且不需要用户原密码。
- 系统管理员修改自己密码但需要管理员原密码。
设置当前会话的用户和角色时,需要验证密码。如果输入密码与用户的存储密码不一致,则会报错。
以设置用户joe为例,命令格式如下:
postgres=# SET ROLE joe PASSWORD "abc@1234";
ERROR: Invalid username/password,set role denied.
表 1 特殊字符