Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1570756
  • 博文数量: 201
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-18 18:28
个人简介

从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。

文章存档

2016年(1)

2015年(8)

2014年(23)

2013年(50)

2012年(32)

2011年(87)

分类: Sybase

2013-11-14 10:03:41

   SAP Sybase IQ支持如下基本账号登录安全控制机制:
       * 用账户登录尝试次数
       * 口令有效期
       * 强制账户在下一次登录时修改密码
       * 通过自定义函数灵活控制口令检查规则

   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)<8 THEN
     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'   --执行成功,口令符合规则 

阅读(5785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~