安全管理
密码安全管理
密码强度控制
密码复杂度受只读量password_format_option控制。
密码长度受只读变量password_min_length控制。
两个变量的值均为。时表示关闭密码强度控制。
密码强度控制对以下SQL类型生效:
create user [user] identified by 'pass';
alter user [user] identified by ' pass';
set password = password(' pass');
set password for [user] = password (' pass');
密码强度控制参数为只读变量,定义如下:
变量名 范围 含义
password_format_option 0-31 表示密码字符组合要求,默认值为0,表 示无复杂度要求。
组合中可包含数字(1)、小写字符(2)、 大写字符(4)、其它字符(8)中的1种 或多种。
1:表示必须包含数字。
2:表示必须包含小写字胃。
4:表示必须包含大写字胃。
8:表示必须包含其它字符。
16:表示不能和用户名相同。
要限定组合时配置为上述值的和,可以任 意组合。
例如:限定包含所有种类字符为 (1+2+4+8=15)。
对非英文字符,按其对应的ASII码范围 分类。
password_min_length 0-65535 表示密码的最短长度,默认值为0,表示 不限制长度。
密码重用控制
口令间隔控制参数为只读变量,定义如下:
变量名 范围 含义
password_reuse_max 0-100 默认值为0,表示不控制。正数值N表示允许的 口令间隔,间隔大于N才允许设置。
密码有效期控制
可选的密码策略:
1. 使用默认密码过期时间
默认密码过期时间为只读变量,定义如下:
变量名 范围 含义
password_life_time 0-65535 默认值为0,表示默认禁用密码过期。正数值 N表示密码过期天数,密码必须在N天后修改。
使用默认密码过期策略范例:
CREATE USER Jeffrey PASSWORD EXPIRE DEFAULT;//创建用户同时符合默认密码过期时 间
ALTER USER Jeffrey PASSWORD EXPIRE DEFAULT;//修改用户符合默认密码过期时间
2. 禁用密码过期策略:
此时密码将永不过期,范例:
CREATE USER Jeffrey PASSWORD EXPIRE NEVER;
ALTER USER Jeffrey PASSWORD EXPIRE NEVER;
3. 指定密码过期时间间隔:
设置密码过期的时间间隔为N天。范例:
CREATE USER Jeffrey PASSWORD EXPIRE INTERVAL 180 DAY;
ALTER USER Jeffrey PASSWORD EXPIRE INTERVAL 180 DAY;
4. 使密码立即过期:
使密码立即过期,范例:
CREATE USER Jeffrey PASSWORD EXPIRE;
ALTER USER Jeffrey PASSWORD EXPIRE;
用户密码过期配置下发到各coordinator节点,语法定义如下:
CREATE/ALTER USER
user [auth_option]
[expiration_option | lock_option | host_option] ...
expiration_option: {
PASSWORD EXPIRE
| PASSWORD EXPIRE DEFAULT
| PASSWORD EXPIRE NEVER
| PASSWORD EXPIRE INTERVAL N DAY
}
1、 对不存在用户,使用create user时可以同时指定密码过期选项。
2、 对已存在用户,使用alter user更改用户时可指定密码过期选项。 用户密码过期时执行SQL会提示用户必须先修改密码,例如:
gbase> use test;
ERROR 1840 (HY000): You must reset your password using ALTER USER statement
before executing this statement.
密码过期设置会立即生效,如果指定了多个策略选项,最后一个生效。
用户安全管理
登录重试锁定
用户登录重试次数参数为只读变量,定义如下:
变量名 范围 含义
login_attempt_max 0-65535 默认值为0,表示禁用密码重试,不记录登录 信息。正数值N表示允许密码输错的次数,达 到次数则锁定用户账户。
账户锁定和解锁
用户账户锁定状态下发到各coordinator节点,语法定义如下:
CREATE/ALTER USER
user [auth_option]
[expiration_option | lock_option | host_option] ...
lock_option: {
ACCOUNT LOCK
| ACCOUNT UNLOCK
}
功能说明:
1、对不存在用户,使用create user时可以同时设置为锁定状态或非锁定 状态。
2、对已存在用户,使用alter user更改用户为锁定或非锁定状态。
已锁定的账户登录时提示用户锁定,拒绝登录,例如:
gbase -uuserl
ERROR 1830 (HY000): Access denied for user 'user1'@'%'. Account is locked.
如果指定了多个策略选项,最后一个生效。gbase用户不受锁定控制,可 以锁定解锁,锁定时依然允许登录。
账户限定host列表
CREATE/ALTER USER
user [auth_option]
[expiration_option | lock_option | host_option] ... host_option: {
hosts 'host_list'
}
默认host_list为空,此时登录无host限定。host_list的值可以为ip 或主机名,允许包含多个,使用空格“”分割,使用“%”和“_”做通配符(通 配符用法同原host功能)。登录的ip或主机名在列表中才允许用户登录。
审计策略
创建审计策略
CREATE AUDIT POLICY <audit_policy_name> [(<audit_policy_item> = <value>[,<audit_policy_item> = <value>])];
其中audit_policy_name为审计策略的名称,不区分大小写,存储时小写 保存,与资源池名类似,可包括大小写字胃、数字和下划线,不可以包含特殊
符号,数字不可以作为第一个字胃;audit_policy_item为审计策略项目,审 计策略项目名称不区分大小写,目前支持的审计策略项目包括:
项目名称 取值&含义
Enable Y:启用,默认值
N:禁用
Hosts “":不限制,默认值
<host>:严格匹配host,支持空格""分隔的host 列表,host可使用“%"和“”做通配符
User “":不限制,默认值
<user> :严格匹配user,区分大小写
Db “":不限制,默认值
<db> :严格匹配db
Obj_type “":不限制,默认值
TABLE(VIEW) : Object 为表(视图)
PROCEDURE: Object 为存储过程
FUNCTION: Object 为函数
Object “":不限制,默认值
<object> :匹配 Obj_tpe 指定的 object
Sql_commands “":不限制,默认值
INSERT, DELETE, UPDATE, LOAD, CREATE_USER, CREATE_DB, CREATE_TABLE, CREATE_VIEW, CREATE_INDEX, CREATE_PROCEDURE, CREATE_FUNCTION, RENAME_USER, ALTER_DB, ALTER_TABLE, ALTER_PROCEDURE, ALTER_FUNCTION, ALTER_EVENT, DROP_USER, DROP_DB, DROP_TABLE, DROP_VIEW, DROP_INDEX, DROP_PROCEDURE, DROP_FUNCTION, DROP_EVENT, TRUNCATE, GRANT, REVOKE, SELECT, OTHERS :其中的一种或多种类型, 多个类型间以逗号连接,且不添加空格
Long_query_time <ses〉:最小查询秒数,可带6位小数,精确到微秒,
默认值0,取值范围为0~31536000
Status “":不限制,默认值
SUCCESS :执行成功
FAILED:执行失败
修改审计策略
ALTER AUDIT POLICY <audit_policy_name> SET [(]<audit_policy_item> = <value>[,<audit_policy_item> = <value>] [)];
其中:
audit_policy_name为审计策略的名称,不区分大小写;
audit_policy_item为审计策略项目,取值内容与创建审计策略中描述相 同。
删除审计策略
DROP AUDIT POLICY <audit_policy_name>;
查看安全信息
user_check表结构如下:
列名 类型 Null 默认值 含义
host char(60) No 无 主机名,主键
user char(16) No 无 用户名,主键
attempt smallint(5)
unsigned No 0 密码重试次数
last_attempt smallint(5)
unsigned No 0 最近成功登录的重 试次数
locked enum(' N','Y ') No N 用户是否锁定
password_expired enum(' N','Y ') No N 密码是否过期
password last changed datetime No 无 最近密码修改时间
password_life_time smallint(5)
unsigned Yes NULL 密码有效期,单位 天
password_history varchar(500
0) No 〃 〃 密码历史列表,密
文
host_list varchar(500
0) No 〃 〃 允许登录的host 列表
login time datetime Yes NULL 本次登录时间
login host char(60) No 〃 〃 本次登录主机
last login time datetime Yes NULL 最近登录时间
last login host char(60) No 〃 〃 最近登录主机
login count bigint(8) No 0 用户登录次数
查询用户的锁定和密码过期状态范例:
gbase> select Locked, password_expired from gbase. user_check where user userl';
+ + +
| Locked | password_expired |
+ + +
| N | N
+ + +
登录信息显示
变量名 范围 含义
show login status 0-1 默认值为0,表示关闭。1表示开启。
当幵启登录信息显示时,在用户登录时可以显示以下信息,范例如下:
Login info:
USER: root
LOGIN_TIME: 2017-10-25 09:33:00
LOGIN_HOST: localhost
LAST_LOGIN_TIME: 2017-10-24 15:22:04
LAST_LOGIN_HOST: localhost
LAST_ATTEMPT: 0
VALID_PASSWORD_EXPIRE: 1
新增语法show login status,用于显示用户自身的登录信息,范例如下:
gbase> show login status\G
USER: user1
LOGIN_TIME: 2017-10-25 09:38:50
LOGIN_HOST: localhost
LAST_LOGIN_TIME: 0000-00-00 00:00:00
LAST_LOGIN_HOST:
LAST_ATTEMPT: 0
VALID_PASSWORD_EXPIRE: 1
安全管理的权限
ALTER USER语法执行除修改自己密码外受CREATE USER权限控制,修改自 己密码不受权限控制。
查看安全信息受系统表gbase.user_check的SELECT权限控制。