* 用账户登录尝试次数
* 口令有效期
* 强制账户在下一次登录时修改密码
* 通过自定义函数灵活控制口令检查规则
1. 基本账号登陆安全控制
在用户使用数据库账号登录IQ Server时,IQ能够对其进行基本的登录安全控制,下面通过示例说明具体的实现方法:
--定义用户登录尝试次数最多3次
sp_iqmodifyadmin (' max_failed_login_attempts','3',NULL)
--定义口令有效期,下面的例子是设定口令的有效期为30天
sp_iqmodifyadmin ('password_life_time','30',NULL)
--强制账户在下一次登录时修改密码
sp_iqmodifyadmin (' password_expiry_on_next_login ','on',NULL)
2. 定制口令检查规则
在IQ数据库中,可以通过编写自定义函数灵活定制用户自己的口令检查规则,下面通过一个例子加以说明。我们假设这个例子实现如下口令规则:
*最小密码长度要求为8位
*至少包含一个数字
*至少包含一个字母(大小写均可)
*至少包含一个特殊字符
下面是实现的方法和步骤:
--创建用户自定义的password检查规则函数
CREATE FUNCTION DBA.f_verify_pwd(user_name varchar(128), new_pwd varchar(255))
RETURNS varchar(255)
BEGIN
--最小密码长度要求8个字符
IF length(new_pwd) RETURN('Password length is too short,at least 8 char');
END IF;
--至少包含一个数字.
IF patindex('%[0-9]%',new_pwd)=0 THEN
RETURN('Password must contains a digital');
END IF;
--至少包含一个字母,大小写均可.
IF patindex('%[A-Z]%',UCASE(new_pwd))=0 THEN
RETURN('Password must contains a letter');
END IF;
--至少包含一个特殊字符
IF (patindex('%[!-/]%',new_pwd)=0) AND (patindex('%[:-@]%',new_pwd)=0) THEN
RETURN('Password must contains a special char');
END IF;
-- success
RETURN(null);
END;
--为函数设定执行权限
GRANT EXECUTE ON DBA.f_verify_pwd TO PUBLIC;
--改变IQ缺省的口令检查规则函数为用户自定义函数
--在执行GRANT CONNECT TO userid IDENTIFIED BY paasword语句时或者
--在执行sp_iqaddlogin时,该数据库选项指定
--的函数将被调用,以对口令规则进行检查.
SET OPTION public.verify_password_function = 'DBA.f_verify_pwd';
在执行了上面的命令和设置之后,我们进行一下简单的测试:
sp_iqaddlogin oltp_user,'aaaaaa' --报口令长度不足8位的错
sp_iqaddlogin oltp_user,'aaaaaaaa' --报口令至少包含一个数字
sp_iqaddlogin oltp_user,'12345678' --报口令至少包含一个字母
sp_iqaddlogin oltp_user,'aaaaaa1a' --报口令至少包含一位特殊字符
sp_iqaddlogin oltp_user,'aaaa&a1a' --执行成功,口令符合规则