分享
 
 
 

Oracle的口令管理

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

编者按: 验证口令,获得访问授权,这是目前最常用的访问控制手段,Oracle数据库也采用这样的安全策略。在这一策略中,口令的治理是要害,然而要做好这项工作,既保证数据的安全也保证用户使用方便却并非易事。

在Oracle数据库中,若要访问数据,必须先具有该数据库的一个账户。这个访问可以是直接访问(通过一个数据库的用户连接)或间接访问(通过在数据库链接中预设权限的访问)。每个账户必须有一个与其相关的口令,一个数据库账户可以连接到一个操作系统账户上。

口令是在创建用户账户时为每一用户设置的,并可在该账户创建后对它们进行变更。用户变更账户口令的能力受他访问工具权限的限制。数据库以加密的形式将口令存储在一个数据字典表中。假如账户直接与操作系统账户相关,就可以旁路口令检查。在Oracle 8i中,口令可以无效。数据库治理员可以建立能重复使用口令的条件(通过一个数据库口令历史设置值),也可以使用环境文件为口令制定标准,如最小长度,或假如连续多次与账户连接不成功,就可以自动锁定账户。

环境文件

可以使用环境文件来限制用户能使用的系统和数据库资源,并治理口令限制。假如数据库中没有创建环境文件,将使用缺省环境文件(Default)。缺省环境文件对于所有用户资源没有限制,表1列出了可以通过环境文件限制的资源。

(注: 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天,则在60天内不能使用同一个口令。

PASSWORD_REUSE_MAX参数指定一个口令可以重新使用前必须对其改变的次数。假如试图在这个限制到达前重新使用该口令,Oracle会拒绝口令的修改。

例如,可以为本章前面创建的TEST_PROFILE环境文件设置一个PASSWORD_REUSE_MAX参数。

alter profile TEST_PROFILE limit

PASSWORD_REUSE_MAX 3

PASSWORD_REUSE_TIME UNLIMITED;

假如用户TestUser现在试图重新使用一个最近的口令,修改口令就会失败。例如,如下修改口令:

alter user TESTUSER identified by eye123;

然后再次改变它:

alter user TESTUSER identified by eye456;

在下次修改口令时,试图重新使用最近的口令,就会失败。他不能重新使用任何他最近用过口令,必须提供一个新口令。

口令历史被存储在SYS模式下一个叫USER_HISTORY$的表中。在这个表中,Oracle存储了用户资源识别符、加密的口令值和创建该口令的日期/时间标记。当PASSWORD_REUSE_TIME值已过期或口令修改次数超过PASSWORD_REUSE_MAX值时,这个老的口令记录就从SYS.USER_HISTORY$表中删除。假如一个新的密码与现有的密码一样,这个新口令就被拒绝。

由于老口令存储在SYS拥有的一个表中,所以数据存储在System表空间中。因此,假如要为频繁修改口令的大量用户保留非常大的口令历史,口令历史表SYS.HISTORY$所需的空间就会影响System表空间的空间需求。

设置口令复杂度

可以强制用户的口令符合复杂度标准。例如,可以要求口令的最小长度,限制不能是一些简单的词,至少包括一个数字或标点符号等。“create profile”和“alter profile”命令的PASSWORD_VERIFY_FUNCTION参数指定用于评估口令的函数名。假如用户提出的口令不符合要求,就不会被接受。例如,可以拒绝“abcde”和“eye”作为口令,因为它们未包含任何数字值。为简化实施口令复杂度的过程,Oracle提供了一个函数VERIFY_FUNCTION。在缺省情况下,不创建这个函数。只有在运行utlpwdmg.sql脚本文件(该文件位于Oracle软件主目录下的/rdbms/admin子目录中)时才创建VERIFY_FUNCTION函数(注重这个函数应当在SYS模式下创建)。

函数中的前三个条件子句检查口令是否与用户名相同,是否少于4个字符,是否是一组特定的词之一。可以任意修改这些检查或增加你的要求。

例如,安全原则可能要求口令最少有六个字符,运行前要简单地更新部分utlpwdmg.sql文件。

函数的下一个主要部分是对口令字符串内容的三段检查。要通过这些检查,口令中至少要包含一个字符、一个数字和一个标点符号。同前面的检查一样,它们是可以编辑的。例如,可以不要求用户在其口令中使用标点符号,只要简单地绕过那部分口令检查就可以。

函数的下一部分是将新口令与老口令逐字符进行比较。假如它们之间的不同之处少于三处,新口令将不予接受。

这个脚本文件中最后一条命令不属于该函数,它是一条改变缺省环境文件的“alter profile”命令。假如改变了缺省环境文件,那么数据库中所有使用缺省环境文件的用户都会受到影响。

要注重

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有