设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源平台

Oracle的口令管理

来源本站整理 作者:佚名 时间:2006-8-1 21:05:10 该文得分0

  编者按: 验证口令,获得访问授权,这是目前最常用的访问控制手段,Oracle数据库也采用这样的安全策略。在这一策略中,口令的管理是关键,然而要做好这项工作,既保证数据的安全也保证用户使用方便却并非易事。
  
  在Oracle数据库中,若要访问数据,必须先具有该数据库的一个账户。这个访问可以是直接访问(通过一个数据库的用户连接)或间接访问(通过在数据库链接中预设权限的访问)。每个账户必须有一个与其相关的口令,一个数据库账户可以连接到一个操作系统账户上。
  
  口令是在创建用户账户时为每一用户设置的,并可在该账户创建后对它们进行变更。用户变更账户口令的能力受他访问工具权限的限制。数据库以加密的形式将口令存储在一个数据字典表中。如果账户直接与操作系统账户相关,就可以旁路口令检查。在Oracle 8i中,口令可以无效。数据库管理员可以建立能重复使用口令的条件(通过一个数据库口令历史设置值),也可以使用环境文件为口令制定标准,如最小长度,或如果连续多次与账户连接不成功,就可以自动锁定账户。
  
  环境文件
  可以使用环境文件来限制用户能使用的系统和数据库资源,并管理口令限制。如果数据库中没有创建环境文件,将使用缺省环境文件(Default)。缺省环境文件对于所有用户资源没有限制,表1列出了可以通过环境文件限制的资源。
  
  
  <a target=Oracle的口令管理" border="0" onload="return imgzoom(this,550);" style="cursor: pointer;" onclick="javascript:window.open(this.src);"/>
  
  (注: PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME互不相容,如果其中一个资源设置成一个值,另一个必须设置成Unlimited。)
  
  如表1所示,许多资源都可以被限制,在用户超过资源限制前不会发生任何动作,一旦到达限值, SQL语句就被停止。
  
  环境文件是通过“create profile”命令创建的,可以用“alter profile”命令修改。下例所示的“alter profile”命令用于修改现有的环境文件。在这个例子中,数据库的缺省环境文件被修改成允许最大空闲时间为1小时:
  
  alter profile DEFAULT limit idle_time 60;
  
  在Oracle 8i中,可以使用环境文件来管理口令的终止、重新使用和复杂性。例如,可以限制一个口令的寿命、锁定口令过旧的账户,也可以强制一个口令至少有一定程度的复杂性,并锁定一个多次注册失败的账户。
  
  口令的锁定与过期
  FAILED_LOGIN_ATTEMPTS用于设定账户允许的尝试次数,可以防止恶意人员无限制地尝试账户口令来破解口令。例如,如果设置用户环境文件的FAILED_LOGIN_ATTEMPTS资源为3,该账户允许连续注册失败3次,第4次失败就会引起账户被锁定。
  
  在下面的例子中,创建一个供用户TestUser使用的TEST_PROFILE环境文件:
  
  create profile TEST_PROFILE limit
  
  FAILED_LOGIN_ATTEMPTS 3;
  
  create user TESTUSER identified by abcd1234
  
  profile TEST_PROFILE;
  
  grant CREATE SESSION to TESTUSER;
  
  如果连续3次与TestUser账户的连接失败,该账户将自动被Oracle锁定。此后当输入TestUser账户的正确口令时,会收到一条错误信息:
  
  ERROR:ORA-28000: the account is locked
  
  要对账户解锁,可在数据库管理员账户中使用“alter user”命令的account unlock子句,如下所示:
  
  alter user TESTUSER account unlock;
  
  账户解锁后,TestUser账户再一次被允许连接。可以通过“alter user”命令的account lock子句来手动锁定一个账户。
  
  alter user TESTUSER account lock;
  
  若一个账户由于多次连接失败而被锁定,当超过其环境文件的PASSWORD_LOCK_TIME值时将自动解锁。例如,如果PASSWORD_LOCK_TIME设为1,前面例子中的TestUser账户就被锁定1天,过后账户即被自动解锁。
  
  可以通过环境文件中的PASSWORD_LIFE_TIME资源建立一个口令的最大期限。例如,可以强制TEST_PROFILE环境文件的用户每30天改变一次口令。
  
  alter profile TEST_PROFILE limit
  
  PASSWORD_LIFE_TIME 30;
  
  在这个例子中,“alter profile”命令用于修改TEST_PROFILE环境文件。PASSWORD_LIFE_TIME值设为30,因此使用这个环境文件的每个账户在30天后口令就会过期。如果口令过期,就必须在下次注册时修改它,除非环境文件对过期的口令有一特定的宽限期。宽限期参数叫做PASSWORD_GRACE_TIME,如果在宽限期内没有修改口令,账户就会过期。
  
  (注: 如果使用PASSWORD_LIFE_TIME参数,就必须为用户提供一种便于其改变口令的方法。)
  
  “过期”账户与“锁定”账户不同。锁定账户会随着时间的推移自动解锁,而过期账户需要通过数据库管理员人工干预才能重新激活。
  
  (注:如果使用口令过期特性,就要确保拥有应用程序的账户具有不同的环境文件设置值,否则它们会被锁定,使得应用程序不能使用。)
  
  如前面例子所述,若要重新恢复一个过期账户,需使用“alter user”命令。在这个例子中,用户TestUser首先由数据库管理员手工使其口令过期。
  
  alter user TESTUSER password expire;
  
  接着,TestUser试图连接其账户。当他输入口令时,立即被提示输入账户的新口令。
  
  也可以使用“create user”命令的“password expire”子句,强制用户在第一次访问时修改口令。不过“create user”命令不允许对用户设置的新口令设置限期日期。要设置的话,必须使用前面例子中的PASSW??????餀???? ??ORD_LIFE_TIME环境文件参数。
  
  若要查看任一账户的口令限期,可查询DBA_USERS数据字典视图的Expire_Date列。若用户自己想查看,可查询USER_USERS数据字典视图的Expiry_Date列(通过SQL*Plus或一个基于客户机的查询工具)。
  
  防止口令重新使用
  若要防止一个口令被重新使用,可以使用两个环境文件参数的其中一个: PASSWORD_REUSE_MAX或PASSWORD_REUSE_TIME。这两个参数互不相容,如果给其中的一个设置了值,另一个就必须设为Unlimited。
  
  PASSWORD_REUSE_TIME参数规定一个口令可以重新使用前必须经过的天数。例如,如果设置PASSWORD_REUSE_TIME为60天,则在6

[1] [2]  下一页

相关文章
广告赞助
网友评论

共有 0 位网友发表了评论,平均得分: 0 查看完整内容

用户名:

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

(注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码