#CREATE PROFILE

# 通用描述

CREATE PROFILE用于创建一个profile,profile为系统对用户的一组资源限制的集合。在YashanDB中,profile可用于定义密码策略相关、会话相关以及登录IP相关限制。

执行本语句需注意如下事项:

  • 用户必须拥有CREATE PROFILE权限。
  • profile本身并不包含用户信息,需使用CREATE USERALTER USER语句关联user与profile。

通过DBA_PROFILES视图可查询所有profile及其内容。

YashanDB已预置一个默认的profile(名称为DEFAULT,内容为安全手册密码策略中所描述资源限制),在使用缺省语法创建新用户时,该用户都将被关联到默认的profile,受其指定的资源限制。

分布式部署中,只支持定义密码策略相关的资源限制

Note

  • 参数值支持数据类型隐式转换和表达式运算,结果满足规则即可。
  • 所有参数的值为空字符串或表达式结果为NULL时,视为0值处理。

# 语句定义

create profile::=

syntax
CREATE PROFILE profile_name LIMIT password_parameters resource_parameters tcp_ip_parameters

password_parameters::=

syntax
password_parameter_name password_parameter_value

resource_parameters::=

syntax
resource_parameter_name resource_parameter_value

tcp_ip_parameters::=

syntax
tcp_ip_parameter_name tcp_ip_parameter_value

# profile_name

profile名称,不可省略,且需符合YashanDB的对象命名规范

# password_parameters

定义密码策略相关的资源限制,包括密码策略参数和参数值,同时定义多个参数以空格分隔。

当某个密码策略参数未在本语句中指定时,系统按DEFAULT值(见下文DEFAULT描述)将其生成到profile中。

# password_parameter_name

为安全手册密码策略中所定义的密码策略参数,指定其他参数将报错。

# password_parameter_value

指定密码策略参数所对应的资源限制值。

所有的参数均可设置为DEFAULT或UNLIMITED,除此之外的值依据不同参数存在不同规则。

password_parameters策略参数值

策略参数 参数值规则
FAILED_LOGIN_ATTEMPTS 最大连续错误登录次数,取值需为整数,取值范围(0,2147483647)。
PASSWORD_LIFE_TIME 密码生命周期,单位为天,取值需为整数,取值范围(0,24855]。
PASSWORD_REUSE_TIME 密码不能被复用的时间,单位为天,取值需为整数,取值范围(0,24855]。
PASSWORD_REUSE_MAX 密码被复用需要经历的变更次数,取值需为整数,取值范围(0,2147483647)。
PASSWORD_LOCK_TIME 达到最大连续错误登录次数需要锁定对应用户的时间,单位为天,取值需为整数,取值范围(0,24855]。
PASSWORD_GRACE_TIME 密码过期宽限期,单位为天,取值需为整数,取值范围[0,24855]。

DEFAULT

指定为DEFAULT表示直接采用预置的默认profile中相关配置。

UNLIMITED

指定为UNLIMITED表示不对该参数对应资源进行限制。

示例

CREATE PROFILE prof_pswd1 LIMIT FAILED_LOGIN_ATTEMPTS 1 PASSWORD_LIFE_TIME 180;

CREATE PROFILE prof_pswd2 LIMIT 
FAILED_LOGIN_ATTEMPTS 1 
PASSWORD_LIFE_TIME 30*2.5 
PASSWORD_REUSE_TIME UNLIMITED 
PASSWORD_REUSE_MAX UNLIMITED 
PASSWORD_LOCK_TIME 1 
PASSWORD_GRACE_TIME 0;

# resource_parameters

定义会话相关的资源限制,包括资源限制参数和参数值,同时定义多个参数以空格分隔。

当某个资源策略参数未在本语句中指定时,系统按DEFAULT值(见下文DEFAULT描述)将其生成到profile中。

# resource_parameter_name

目前包括SESSIONS_PER_USER、IDLE_TIME。

SESSIONS_PER_USER

同一用户最多并行会话连接数。

IDLE_TIME

用户最长空闲无操作时间,单位为分钟。用户登录后若连续长时间无操作达到阈值时长,系统将断开该会话,会话被断开后再执行操作将报错。

后台线程每隔10s进行一次检测并断开长时间空闲会话,因此用户最长连续空闲的时间至多可比该用户的对应阈值多10s。

# resource_parameter_value

指定资源参数所对应的资源限制值。

所有的参数均可设置为DEFAULT或UNLIMITED,除此之外的值依据不同参数存在不同规则。

resource_parameters策略参数值

策略参数 参数值规则
SESSIONS_PER_USER 同一用户最多并行会话连接数,取值需为整数,取值范围为[1,2147483646]。
IDLE_TIME 用户最长空闲无操作时间,单位为分钟,取值需为整数,取值范围为[1,2147483646]。

DEFAULT

指定为DEFAULT表示直接采用预置的默认profile中相关配置。

UNLIMITED

指定为UNLIMITED表示不对该参数对应资源进行限制。

示例(单机、共享集群部署)

CREATE PROFILE prof_res LIMIT SESSIONS_PER_USER 10 IDLE_TIME 10;

# tcp_ip_parameters

定义登录IP相关的资源限制,包括登录IP限制参数和参数值,同时定义多个参数以空格分隔。

当某个登录IP限制参数未在本语句中指定时,系统按DEFAULT值(见下文DEFAULT描述)将其生成到profile中。

# tcp_ip_parameters_name

目前包括登录IP白名单INVITED_NODES、登录IP黑名单EXCLUDED_NODES。

黑名单优先级高于白名单,若黑白名单中存在相同IP按黑名单生效。

INVITED_NODES

登录IP白名单,配置IP列表后将只允许白名单中的IP登录。

非重复的IP个数不得超过64个。

EXCLUDED_NODES

登录IP黑名单,配置IP列表后将不允许黑名单中的IP登录。

非重复的IP个数不得超过64个。

# tcp_ip_parameters_value

指定IP策略资源参数所对应的资源限制值。

所有的参数均可设置为iplist、DEFAULT或UNLIMITED。

iplist

IP列表字符串,格式为'IP/mask,IP'

  • IP:实际IP地址,例如192.168.4.11。
  • MASK:表示从左向右匹配二进制IP的比特数,取值范围为[0,32]。如果不加MASK,则默认表示全匹配。

DEFAULT

指定为DEFAULT表示不受限制,效果等同于UNLIMITED。

UNLIMITED

指定为UNLIMITED表示不对该参数对应资源进行限制。

示例(单机、共享集群部署)

CREATE PROFILE prof_ip LIMIT EXCLUDED_NODES '192.168.4.11';