设置密码安全策略
GaussDB 100设置了完善的密码安全策略,保证数据安全。安全策略主要分为密码复杂度、密码重用、密码有效期、密码修改和密码验证五个部分。
密码复杂度
创建数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度的要求,否则会提示用户重新输入密码。帐户密码的复杂度要求如下:
密码长度必须大于等于8个字符,小于等于64个字符。
若密码不以单引号括起来,则密码首字符必须是字母、#号或下划线。
密码不能与用户名或者用户名的倒序相同(校验时,不区分大小写)。
密码只能包含以下4种类型,并且至少选取其中3种类型的组合。
数字。
小写字母。
大写字母。
空格或特殊字符(GaussDB 100支持的特殊字符列表,请参见下方的“特殊字符”表)。
创建密码时,若密码中包含_#$以外的特殊字符或者空格,则密码须用单引号括起来。
若创建的密码中包含特殊字符$,通过zsql连接数据库时密码在单引号里面$不需要使用\转义字符转义,密码不在单引号里面$需要使用\转义字符转义,否则会登录失败。
若创建的密码中包含特殊字符空格,只能通过交互式登录。
使用conn命令登录数据库密码段都认为是密码字符。
使用zsql命令登录数据库密码字段使用单引号括起来。密码中不能出现单引号。
编号 | 字符 | 编号 | 字符 | 编号 | 字符 | 编号 | 字符 |
---|---|---|---|---|---|---|---|
1 | ` | 9 | & | 17 | \ | 25 | " |
2 | ~ | 10 | * | 18 | | | 26 | , |
3 | ! | 11 | ( | 19 | [ | 27 | < |
4 | @ | 12 | ) | 20 | { | 28 | . |
5 | # | 13 | - | 21 | } | 29 | > |
6 | $ | 14 | _ | 22 | ] | 30 | / |
7 | % | 15 | = | 23 | : | 31 | ? |
8 | ^ | 16 | + | 24 | ' | - | - |
密码重用
用户修改密码时,只有超过不可重用天数(PASSWORD_REUSE_TIME)或不可重用次数(PASSWORD_REUSE_MAX)的密码才可以使用。
这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户可以根据需要重新设置参数,提高安全等级。
PASSWORD_REUSE_TIME
指定密码在多少天内不能重复使用。
取值范围:正数,其中整数部分表示天数,小数部分可以换算成时、分、秒。
如果参数变小,则后续修改密码按新的参数进行检查。
如果参数变大(比如由a变大为b),因为b天之前的历史密码可能已经删除,所以b天之前的密码仍有可能被重用。则后续修改密码按新的参数进行检查。时间以时间为准,历史密码记录的都是当时的时间,不识别时间的修改。
PASSWORD_REUSE_MAX
在重设密码时,指定当前密码至少需要间隔多少次,才能被重复使用。如果参数变小,则后续修改密码按新的参数进行检查。如果参数变大(比如由a变大为b),因为b次之前的历史密码可能已经删除,所以b次之前的密码仍有可能被重用。则后续修改密码按新的参数进行检查。
PASSWORD_REUSE_TIME和PASSWORD_REUSE_MAX这两个参数必须互相关联设置。PASSWORD_REUSE_TIME指定了密码不能重用前的天数,而PASSWORD_REUSE_MAX则指定了当前密码至少需要间隔多少次,才能被重复使用。
设置原则:
PASSWORD_REUSE_MAX、PASSWORD_REUSE_TIME都为UNLIMITED,密码可以随意重用,没有任何限制。
PASSWORD_REUSE_MAX、PASSWORD_REUSE_TIME均指定值时,必须满足这两者的条件时才可以重用密码。
当PASSWORD_REUSE_MAX、PASSWORD_REUSE_TIME两个有其中一个不为UNLIMITED,则密码永远不能重用。取值范围:正整数。
命令示例如下:
--查看已配置的PASSWORD_REUSE_TIME
SELECT * FROM ADM_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_REUSE_TIME';
--更改PASSWORD_REUSE_TIME参数为60。
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME 60;
--查看已配置的PASSWORD_REUSE_MAX
SELECT * FROM ADM_PROFILES WHERE RESOURCE_NAME='PASSWORD_REUSE_MAX';
--更改PASSWORD_REUSE_MAX参数为3。
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX 3;
密码有效期
示例命令如下:
--查看PASSWORD_LIFE_TIME参数
SELECT * FROM ADM_PROFILES WHERE RESOURCE_NAME ='PASSWORD_LIFE_TIME';
--更改PASSWORD_LIFE_TIME参数为90。
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;
PASSWORD_LIFE_TIME
指定同一密码所允许使用的天数。
默认值:180。
密码修改
在创建数据库时,会创建一个数据库管理员用户SYS,为了保证帐户安全,请定期修改SYS用户密码。建议数据库系统管理员和普通用户都要定期修改自己的帐户密码,避免帐户密码被非法窃取。数据库系统管理员可以修改自己的或者其他帐户的密码。通过修改其他帐户的密码,解决用户密码遗失所造成无法登录的问题。
系统管理员之间不允许互相修改对方密码。
系统管理员可以修改普通用户密码且不需要用户原密码。
系统管理员修改自己密码但需要管理员原密码。
以修改用户Tom密码为例,示例命令如下:
ALTER USER Tom IDENTIFIED BY '1234@abc' REPLACE '5678@def';
1234@abc、5678@def分别代表用户Tom的新密码和原始密码,这些密码要符合密码规则,否则会执行失败。