管理用户安全性
Posted ✧*꧁一品堂.技术学习笔记꧂*✧.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管理用户安全性相关的知识,希望对你有一定的参考价值。
第1 章数据库用户管理
【学习目标】
Oracle 数据库用户是数据库安全机制的一种,通过它可管理数据库对象的所有权和访问
权限。本章主要内容是介绍Oracle 数据库用户、模式(Schema)的概念,数据库用户的身
份验证机制,以及如何创建和管理数据库用户。
【本章要点】
• 了解ORACLE 验证方式
• 使用概要文件
• 创建、修改和删除数据库用户
• 获取数据库用户信息
【关键术语】
Schema (模式、用户、方案、纲要) Quota 配额
Database authentication 数据库验证Operating system authentication 操作系统验证
Profiles 概要文件Password limits 口令限制
Resource limits 资源限制Default profile 默认概要文件
Password expiration 口令失效Password verification 口令验证
Password grace time 口令失效宽限时间
1.1 用户与安全
1.1.1 数据的安全访问
Oracle 数据库的安全包括在对象级控制数据库访问和使用的机制,这是通过数据库用户
来实现的,数据库用户是定义在数据库中的一个名称,它是存取数据库中信息的通道,是
Oracle 数据库的基本访问控制机制。
要访问数据库,用户必须指定有效的数据库用户帐户,而且还要根据该用户帐户的要求
成功通过验证。每一个数据库用户都有自己的数据库帐户。这是Oracle 的最佳实践建议,
这样可避免存在潜在的安全漏洞,为特定的审计活动提供有意义的数据。但是,在极少数情
况下,若干用户会共享一个公用数据库帐户。此时,操作系统和应用程序必须为数据库提供足够的安全性。
数据安全策略决定哪个用户访问特定模式对象,在对象上允许每个用户的特定类型操
作。用户在访问Oracle 数据库时必须提供一个数据库帐户,只有合法身份的用户才能够访
问数据库。
在Oracle 数据库中,每个数据库用户有一系列安全属性,见图13-1。
各个属性的含义如下:
• 唯一的用户名:用户名不能超过30个字节,不能包含特殊字符,而且必须以字母开
头。
• 验证方法:最常见的验证方法是口令,但是Oracle Database 10g 支持其它多种验
证方法,包括生物统计学验证、证书验证和标记验证。
• 默认表空间:如果用户未指定其它表空间,则可在这个表空间中创建对象。请注意,
具有默认表空间并不意味着用户具有在该表空间创建对象的权限,也不意味着用户
具有该表空间(用于创建对象)中的空间限额。这两项需要另外单独授权。
• 临时表空间:用户可在其中创建临时对象(如排序和临时表)的表空间。
• 用户概要文件:分配给用户的一组资源与口令的限制。
• 使用者组:由资源管理器使用。
• 锁定状态:用户只可访问“未锁定”帐户。
• 表空间配额:指明用户在某个表空间中所能使用的存储空间大小。
1.1.2 预定义账户SYS和SYSTEM
● SYS 帐户:
– 授予了DBA 角色
– 具有ADMIN OPTION 的所有权限
– 执行启动、关闭和某些维护命令时需要使用的帐户
– 拥有数据字典
– 拥有自动工作量资料档案库(AWR)
– 使用AS SYSDBA子句连接(任何授予了SYSDBA 权限的用户均可通过使用
AS SYSDBA 子句连接到SYS 帐户)
● SYSTEM 帐户授予了DBA 角色(非SYSDBA)。
● 这两个帐户不在例行程序操作中使用。
● 只有授予了SYSDBA 或SYSOPER权限的“授权”用户才可以启动或关闭数据库实
例。
● SYS和 SYSTEM 帐户是数据库中必需存在的帐户,不能将其删除。
最佳实践提示:如果应用最少权限原则,则不在例行程序操作中使用这些帐户。需要DBA 权
限的用户另外拥有授予了所需权限的独立帐户。例如,Jim 有一个名为jim 的低权限帐户及
一个名为jim_dba 的授权帐户。使用此方法可应用最少权限原则,不需要共享帐户,而且可
审计各项操作。
1.1.3 验证用户
验证指的是对要使用数据、资源或应用程序的用户、设备或其它实体的身份进行验证。
通过对该身份进行验证可建立一种信任关系,从而可进一步执行交互。通过验证可将访问和
操作与特定的身份联系起来,从而实现可靠性。完成验证后,验证流程可允许或限制该实
体许可的访问和操作的级别。
创建用户时,必须确定要使用的验证方法,以后可修改此方法。
1.1.3.1外部验证
又称操作系统验证。用户可以在不指定用户名或口令的情况下连接到Oracle 数据库。
使用外部验证时,数据库依赖于基础操作系统或网络验证服务来限制对数据库帐户的访问。
数据库口令不会用于此类登录。如果操作系统或网络服务允许的话,可以使用外部验证来验
证用户。如果要执行此操作,请设置 OS_AUTHENT_PREFIX 初始化参数,并在 Oracle 用户名中使用此前缀。OS_AUTHENT_PREFIX 参数定义了一个前缀,Oracle 数据库会在每
个用户的操作系统帐户名之前添加此前缀。为了实现与Oracle 软件早期版本的向后兼容,
此参数的默认值为 OPS$。用户尝试建立连接时,Oracle 数据库会将带前缀的用户名与数据
库中的Oracle 用户名进行比较。
例如,假定OS_AUTHENT_PREFIX 设置如下:
OS_AUTHENT_PREFIX=OPS$
如果某个用户的操作系统帐户名为tsmith,它需要连接到Oracle 数据库而且已由操作
系统验证,那么Oracle 数据库会检查是否存在一个对应的数据库用户OPS$tsmith,如果存
在这样的用户,则允许该用户建立连接。在用户(已由操作系统验证)的所有引用中必须包
含OPS$tsmith 中显示的前缀。
注:在某些操作系统中,OS_AUTHENT_PREFIX 初始化参数的文本是区分大小写的。
1 SQL> show parameter os_authent_prefix 2 NAME TYPE VALUE 3 ------------------------------------ ----------- ------------------------------ 4 os_authent_prefix string ops$ 5 或者: 6 SQL> select value from v$parameter where name=\'os_authent_prefix\'; 7 VALUE 8 -------------------------------------------------------------------------------- 9 ops$
创建外部操作系统身份验证的用户很简单,假如有一个操作系统用户名为dragon,则:
对于LINUX 系统: create user ops$dragon identified externally;
对于WINDOWS 系统,假如登陆ID 是Dragon,域名是MIS: create user "OPS$MIS\\DRAGON" identified externally;
创建好用户后,以dragon 身份登录到操作系统,然后在直接输入:sqlplus / 进行登录 并连接到数据库。
外部验证的优点:
● 经过操作系统的身份验证后,用户可以更便捷地连接到Oracle,而无需提供用户
名及密码。例如,经过操作系统验证的用户,按以下方式调用SQL*Plus,即可跳
过输入用户名及密码的步骤:SQLPLUS /
● 在操作系统中集中地进行用户身份验证, Oracle 不必再存储及管理用户密码,但
Oracle 仍旧需要在数据库中维护用户名。
● 在数据库及操作系统中记录审计跟踪数据(audit trail)时可以使用相同的用户名。
1.1.3.2口令验证
又称为Oracle 数据库验证。
创建的每一个用户都有一个关联口令,用户尝试建立连接时,必须提供这个口令。设置
口令时,可以使该口令立即失效,这会强制用户在首次登录后更改口令。如果决定要使用户
口令失效,请确保用户能够更改口令。有些应用程序不具备此功能。
在(客户机/服务器之间和服务器/服务器之间)建立网络连接期间,系统总是先通过使
用修改过的数据加密标准(DES) 算法,以自动透明方式对口令加密,然后通过网络发送这
些口令
在使用SQL*Plus 时,通过口令身份验证进行连接的语法如下: CONNECT username / password [ @db_alias ]
● SQL> connect scott/tiger;
● SQL> conn scott/tiger;
● [oracle@oracle ~]$ sqlplus scott/tiger;
这是Oracle 一般用户使用得最多的一种身份验证方式。在使用口令身份验证进行连接
时,实例将针对在数据字典中的用户账户存储的口令。验证给定的口令。为此,数据库必须
处于打开状态;从逻辑上讲,在使用口令身份验证连接时,不可能发出STARTUP 命令或
者SHUTDOWN 命令。不允许SYS 用户以口令身份验证的方式进行连接,SYS 只能使用
口令文件、操作系统或LDAP 身份验证。
数据库验证表示用户名和口令的验证由Oracle 完成,用户在连接数据库时必须同时提
供用户名和口令。采用数据库验证具有以下一些优点:
● 用户帐户及其身份验证信息全部存储在数据库中,验证由Oracle Server 完成,而不
需要借助数据库外的任何控制。
● 当使用数据库验证时,Oracle 提供了严格的口令管理特征以加强口令的安全性,例
如帐户锁定、口令有效期以及口令长度、复杂度等。
● 易于管理。
1.1.3.3全局验证
使用Oracle Advanced Security 选项时,可通过全局验证(一种严格的验证方法)并使用生物统计学、x509 证书、标记设备和Oracle Internet Directory 来识别用户。
1.1.3.4网络验证
● 基于第三方的身份验证技术
如果系统中存在(DCE,Kerberos,或SESAME 等)的网络身份验证服务(network
authentication service),Oracle 可以使用这些网络服务进行身份验证。在使用网络身份验证
服务时,应注意其对网络角色(network role)及数据库链接(database link)的影响。
● 基于PKI 的身份验证
基于公共密钥加密(public key cryptography)的身份验证系统能够为用户客户端生成数
字证书(digital certificate),客户端使用此证书在业务服务器上进行身份验证,而不是直接
和身份验证服务器交互(authentication server)。Oracle 提供了支持公共密钥(public key)
及数字证书的公共密钥基础结构(public key infrastructure,PKI),其中包含以下组件:
− 基于SSL(Secure Sockets Layer(安全套接字层))的身份验证及安全会话密钥(secure
session key)管理。
− Oracle Call Interface 函数及PL/SQL 函数,用于使用私有密钥(private key)及证书来
保护用户指定的数据,或用可信证书(trusted certificate)验证数据上的签名(signature)。
− 可信证书,用于验证第三方实体的身份,确认其是否为可信的用户证书签署者。
− Oracle wallet,用于储存用户私有密钥,用户证书,及用户信任点(trust point)(即可信
的认证机构)集的数据结构。
− Oracle Wallet Manager,用于管理及编辑Oracle wallet 安全身份证明(security
credentials)的单机Java 应用程序。
− 由Oracle 之外的认证机构签署并发布的X.509v3 证书。
− Oracle Internet Directory,用于管理用户的权限及安全属性,包括通过X.509 证书进行用户身份验证。OID 能够确保属性级(attribute-level)的访问控制,并使读,写,及更
新等权限可以控制到具体的用户,例如管理员。
− Oracle Enterprise Security Manager,实现集中化的权限管理,从而简化管理员的工作,
并提升系统的安全级别。用户可以通过此组件在Oracle Internet Directory 中存储或提
取角色信息。
− Oracle Enterprise Login Assistant 是一个基于Java 的工具,用于打开或关闭用户的
wallet,从而控制应用程序是否采用基于SSL 的安全通讯。
● 远程身份验证
Oracle 能够利用远程拨号用户服务(Remote Dial-In User Service,RADIUS)支持远程用
户身份验证。RADIUS 是一个标准的轻量级协议,主要用于用户身份验证,授权,及审计
(accounting)。
1.1.4 管理员验证
数据库管理员能够执行普通数据库用户不该执行的特殊操作(例如启动或关闭数据库)。
Oracle 为数据库管理员用户提供更为安全的身份验证方式。
1.1.4.1操作系统安全性
在UNIX 和Linux 中,默认情况下,DBA 属于install 操作系统组。该组具有创建和
删除数据库文件所需的权限。
● DBA 必须具有创建或删除文件的操作系统权限。
● 普通数据库用户不应具有创建或删除数据库文件的操作系统权限。
1.1.4.2管理员安全性
只在使用口令文件或操作系统特权与权限完成验证后,才授权建立SYSDBA 和
SYSOPER 连接。如果使用操作系统验证,那么数据库就不使用提供的用户名和口令。当口
令文件不存在,或者该文件中不存在提供的用户名和口令,或者未提供用户名和口令时,就
使用操作系统验证。
但是,如果使用口令文件成功完成了验证,则使用用户名记录连接。如果使用操作系统
成功完成了验证,则表示这是一个CONNECT/连接,这种连接不记录具体用户。
注:操作系统验证优先于口令文件验证。特别是,如果您是操作系统中OSDBA 或
OSOPER 组的成员,而且以SYSDBA 或SYSOPER 身份进行连接,则会使用关联的管理
权限为您建立连接,不管您指定的用户名和口令是什么。
● 通过口令文件或操作系统验证SYSDBA 和SYSOPER 连接。
– 口令文件验证会按名称记录DBA 用户。
– 操作系统验证并不记录具体用户。
– 对于SYSDBA 和SYSOPER,操作系统验证优先于口令文件验证。
要为账户启用操作系统和口令身份验证(二者是相配的),必须为用户授予SYSDBA 或者
SYSOPER 权限:
GRANT [ sysdba | sysoper ] TO username ;
如果向用户授予这些权限之一或者所有权限,则会将用户口令从数据字典复制到外部口令文件中,此时,即使数据库未处于打开状态,实例也可以读取口令。
要使用口令文件身份验证,用户可以在使用SQL*Plus 时通过以下语法连接:
CONNECT username / password[ @db_alias] AS [ SYSOPER | SYSDBA ] ;
注意,可使用口令文件身份验证,通过Oracle Net 连接到远程数据库。
要使用操作系统身份验证,用户必须被确认为有权限访问Oracle 二进制文件的操作
系统用户之后,且在使用SQL*Plus 时通过以下语法连接之前首先登陆到数据库服务器:
CONNECT / AS [ SYSOPER | SYSDBA ] ;
与SYSDBA 和SYSOPER 以同一种方式运行的第三种权限是SYSASM,此权限仅适
用于ASM 实例。
Oracle 数据库在密码文件(password file)中记录被授予了SYSDBA 及SYSOPER 权
限的数据库用户,这些权限能够执行以下操作:
具备SYSOPER 权限的数据库管理员能够执行STARTUP,SHUTDOWN,ALTER
DATABASE OPEN/MOUNT,ALTER DATABASE BACKUP,ARCHIVE LOG,及RECOVER
命令,并具备RESTRICTED SESSION 权限。
具备SYSDBA 权限的数据库管理员拥有所有系统权限(system privilege)及权限的
ADMIN OPTION 选项,还拥有SYSOPER 所拥有的全部系统权限。此外,能够执行
CREATE DATABASE 命令,并能够执行基于时间的恢复操作(time-based recovery)。
1.1.5 身份验证的几个相关参数和配置
● remote_login_passwordfile
查看是否允许远程登录使用口令文件进行身份验证
SHARED 一个或多个数据库可以使用口令文件。可以包含SYS 或者非SYS 的口令文件。
EXCLUSIVE 新版本和SHARED 功能一致。
NONE 不允许远程使用口令文件验证,如远程用SYS 账号连接Oracle 将会报错。
1 SQL> show parameter remote_login_passwordfile NAME TYPE VALUE 2 ------------------------------------ ----------- -------------------- 3 remote_login_passwordfile string EXCLUSIVE 4 SQL> alter system set remote_login_passwordfile=\'NONE\' scope=spfile 5 SQL> startup force 6 --进行远程连接,报错,实际是参数值被更改: 7 SQL> conn sys / oracle@orcl as sysdba 8 ERROR: 9 ORA-01017: invalid username/password; logon denied
● 查看使用口令文件进行身份验证的用户列表:
1 SQL> select * from v$pwfile_users; 2 USERNAME SYSDB SYSOP 3 ------------------------------ ----- ----- 4 SYS TRUE TRUE
● SQLNET.AUTHENTICATION_SERVICES
$ORACLE_HOME/network/admin/sqlnet.ora 配置文件中
SQLNET.AUTHENTICATION_SERVICES 参数,有三个取值:
NONE:作用是不允许通过OS 系统用户登录数据库,需要提供用户名及密码;
ALL:作用是允许所有的登录方式;
NTS:作用是允许本地操作系统用户认证;
1.1.6 数据库模式对象
Schema 模式是一系列对象的集合。一个模式只能够被一个数据库用户所拥有,并且模
式的名称与这个用户的名称相同。ORACLE 数据库中的每个用户都拥有一个唯一的模式,
他所创建的所有模式对象都保存在自己的模式中。模式对象的类型有表、索引、簇、触发器、
PL/SQL、序列、同义词、视图、存储过程和存储函数等,当然,Oracle 中并不是所有的对
象都是模式对象,非模式对象有:
• 表空间
• 用户
• 角色
• 回滚段
• 概要文件
当用户在数据库中创建一个模式对象后,这个模式对象默认地属于这个用户的模式。一
个用户可以访问其模式的所有对象,但其它用户要访问另一个模式的对象时,必须在对象名
前加上它所属的模式名。例如用户SCOTT 检索其模式的表EMP 时,可以直接执行语句:
SELECT * FROM EMP;
但是,如果要访问SMITH 模式的CLASS 表时,则必须执行语句:
SELECT * FROM SMITH.CLASS。
初学者在刚刚接触模式概念时,常常不清楚数据库用户与模式之间的区别。造成这种情
况的原因是因为在Oracle 数据库中,模式与数据库用户是一一对应,每个数据库用户都拥
有一个与他的用户名相同的模式。因此,在Oracle 数据库中,模式与用户两个概念的差别
很小,经常可以替换。例如“用户A 拥有TEMP 表”和“模式A 拥有TEMP 表”两句话的意义是相同的。因此不必在语言上完全区分模式与用户,但是,一定要清楚模式与用户是两个完
全不同的概念。
1.1.7 概要文件
1.1.7.1概要文件管理
1.1.7.1.1 概要文件的作用
概要文件是口令限制和资源限制的命名集合,是Oracle 安全策略的重要组成部分,利 用概要文件可以对数据库用户进行口令管理和资源限制。例如使用概要文可以指定口令有效 期、口令校验函数、用户连接时间以及最大空闲时间等。概要文件具有以下一些作用:
• 限制用户执行消耗资源过度的SQL 操作。
• 自动断开空闲会话。
• 在大而复杂的多用户数据库系统中合理分配资源。
• 控制用户口令的使用。
在建立数据库时,Oracle 会自动建立名称为DEFAULT 的默认概要文件,初始的 DEFAULT 概要文件的所有口令及资源限制选项值均为UNLIMITED,即未进行任何口令及 资源限制。当建立用户时,如果不指定概要文件,则Oracle 会将DEFAULT 概要文件分配给 该用户。根据用户所承担任务的不同,DBA 应该建立不同的概要文件,并将概要文件分配 给相应用户。一个用户只能分配一个概要文件,一个概要文件可以同时包含口令限制和资源 限制。1.1.7.1.2 概要文件内容
概要文件内容包括口令和资源的限制,下面分别介绍这两部分的有关参数。
1) 口令策略参数
口令策略参数可以实现帐户锁定、口令的过期以及口令的复杂度等策略,在概要文件中 的口令参数可以有以下几个:
• FAILED_LOGIN_ATTEMPTS:该参数指定允许的输入错误口令的次数,超过该次 数后用户帐户被自动锁定。
• PASSWORD_LOCK_TIME:用于指定指定账户被锁定的天数(单位:天)。
• PASSWORD_LIFE_TIME:指定口令的有效期(单位:天)。如果在达到有效期前用 户还没有更换口令,它的口令将失效,这时必须由DBA 为它重新设置新的口令。
• PASSWORD_GRACE_TIME:用于指定口令失效的宽限期(单位:天)。• PASSWORD_REUSE_TIME:指定能够重复使用一个口令前必须经过的时间(单位: 天)。
• PASSWORD_REUSE_MAX:用于指定在重复使用口令之前必须对口令进行修改的 次数。PASSWORD_REUSE_TIME 和PASSWORD_REUSE_MAX 两个参数只能设 置一个,另一个必须为UNLIMITED。
• PASSWORD_VERIFY_FUNCTION:指定验证口令复杂度的函数。Oracle 提供了一 个默认的口令校验函数,这可以通过运行脚本utlpwdmg.sql 来建立该函数,脚本保 存在RACLE_HOME\\rdbms\\admin 目录中。DBA 也可以通过修改脚本来实现自己 的口令校验函数。
2) 资源限制参数
利用概要文件,可以对以下系统资源进行限制。
• CPU 时间
• 逻辑读
• 用户的并发会话数
• 空闲时间
• 连接时间
• 私有SGA 区
对这些资源的限制是通过在概要文件中设置参数来实现的,参数的值可以是一个整数, 也可以是UNLIMITED(即不受限制),还可以是DEFAULT(使用DEFAULT 概要文件中的 参数设置)。下面分别介绍有关参数:
• CPU_PER_SESSION:限制每个会话所能使用的CPU 时间。参数值是一个整数, 单位是百分之一秒。
• SESSIONS_PER_USER:限制每个用户所允许建立的最大并发会话数。
• CONNECT_TIME:限制每个会话能连接到数据库的最长时间,超过这个时间会话 将自动断开。参数值是一个整数,单位是分钟。
• IDLE_TIME:限制每个会话所允许的最长连续空闲时间,超过这个时间会话将自 动断开。参数值是一个整数,单位是分钟。
• LOGICAL_READS_PER _SESSION:限制每个会话所能读取的数据块数目。
• PRIVATE_SGA:每个会话分配的私有SGA 区大小(以字节为单位)。该参数只对 共享服务器模式有效。• CPU_PER_CALL:用于指定每条SQL 语句可占用的最大CPU 时间,单位是百分 之一秒。
• LOGICAL_READS_PER_CALL:用于指定每条SQL 语句最多所能读取的数据块数 目。
1.1.7.2使用概要文件管理口令
Oracle 数据库中不同用户账户具有不同的口令,如何防止其他人窃取账户密码是DBA
要重点关切的问题。为了加强用户账户的安全性,Oracle 提供了概要文件来管理口令,概要
文件管理口令有锁定账户、终止口令、口令历史以及口令校验等四种安全保护方式。大家需
要注意,前面介绍的概要文件中共包含了7 个口令管理选项,如果仅指定某个或某几个选项,
那么其他选项将自动使用DEFAULT 概要文件的相应选项值。
使用概要文件管理口令主要步骤是先创建概要文件,然后设置相关口令参数,最后把概
要文件分配给用户。建立概要文件是使用CREATE PROFILE 命令来完成的,一般情况下建
立概要文件是由DBA 来完成的,如果要以其他用户身份建立概要文件,则要求该用户必须
具有CREATE PROFILE 系统权限。
1.1.7.2.1 锁定帐户
如果用户在指定的次数内尝试登录系统失败,系统会在设置的持续时间内锁定帐户。
• FAILED_LOGIN_ATTEMPTS 参数指定在锁定帐户前尝试登录失败的次数。
• PASSWORD_LOCK_TIME 参数指定在经历指定的尝试登录失败次数后锁定 帐户的天数。
如果建立PROFILE 时没有提供PASSWORD_LOCK_TIME 选项,将自动使用默认 值(UNLIMITED),在这种情况下,需要DBA 手工解锁通过使用概要文件,可以限制登录失败 次数,如果连续登录的失败次数超出一定范围,那么Oracle 会自动锁定账户。1 --【实例16-1】为了加强devp 用户的口令安全,要限制其登录失败次数为3。 2 --1)以管理员身份登录 3 SQL>CONNECT / AS SYSDBA 4 已连接。 5 --2)创建概要文件,设定相关参数 6 SQL>CREATE PROFILE devp_lock LIMIT FAILED_LOGIN_ATTEMPTS 3; 7 --配置文件已创建 8 --3) 分配概要文件给用户devp,这既可以在建立用户时使用PROFILE 子句,也可以在 建立用户之后使用ALTER USER 语句修改。 9 10 SQL>ALTER USER devp PROFILE devp_lock; 11 用户已更改。 12当将概要文件分配给devp 用户之后,如果以devp 连接到数据库时,连续登录失败 次数达到三次,那么系统会自动锁定该用户账户。此时,即使为用户devp 提供了正确的口 令,也将无法连接到数据库,并显示错误信息。例如:
1.1.7.2.2 终止口令
使用户口令具有生存期,口令在此生存期之后会失效,而且可能已更改。
• PASSWORD_LIFE_TIME 参数指定口令的生存期(以天为单位),此时间之后, 口令会失效。
• PASSWORD_GRACE_TIME 参数指定口令失效后首次成功登录时用于更改 口令的宽限期(以天为单位)。
注:通过使口令失效和锁定SYS、SYSMAN 和DBSNMP 帐户,可避免出现Enterprise Manager 不正常运行的情况。应用程序必须捕获“口令到期”警告消息并处理口令更 改;否则,宽限期一到期,会在原因不明的情况下锁定用户。
1 --【实例16-2】强制用户devp 每隔10 天修改其自身口令,并设置两天宽限期。 2 --1)以管理员身份登录 3 SQL>CONNECT / AS SYSDBA 4 已连接。 5 --2)创建概要文件,设定相关参数 6 SQL>CREATE PROFILE devp_life LIMIT PASSWORD_LIFE_TIME 10 PASSWORD_GRACE_TIME 2; 7 配置文件已创建 8 --3) 分配概要文件给用户devp 9 SQL>ALTER USER devp PROFILE devp_life; 10 用户已更改。 11 --当将概要文件分配给用户devp 之后,第10 天登录会显示警告信息: 12 SQL>connect devp/development 13 ERROR: 14 ORA_28002:the password will expire within 2 days 15 已连接。 16 -- 如果第10 天未改变口令,那么第11 天登录时仍然会显示类似警告信息。但用户如果第11 天仍然未改变口令,那么第12 天登录时系统会强制你改变口令,并显示如下信息: 17 SQL>connect devp/development 18 19 ERROR: 20 ORA-28001: the password has expired 21 更改devp 的口令 22 新口令: 23 重新键入新口令: 24 口令已更改 25 已连接。 261.1.7.2.3 口令历史
通过核对新口令可确保在指定的时间内或者在指定的口令更改次数内不重复使用口令。 通过使用下列其中一项来进行核对:
• PASSWORD_REUSE_TIME:用于指定口令可重用时间
• PASSWORD_REUSE_MAX:用于指定在重用口令之前口令需要改变的次数
注意: 这两个参数是互相排斥的, 因此, 如果其中一个参数的设置值不是 UNLIMITED(如果DEFAULT 概要文件的设置值为UNLIMITED,则为DEFAULT), 则另一个参数必须设置为UNLIMITED。 假定devp 原有口令为development,终止口令时新口令仍然可以设置为development, 这种做法显然失去了终止口令的含义。为了强制用户使用不同口令,可以使用口令历史选项。
1 --【实例16-3】为了防止用户devp 重用旧口令,强制该用户在口令终止10 天之内不能重 用以前口令。 2 --1)以管理员身份登录 3 SQL>CONNECT / AS SYSDBA 4 --2)创建概要文件,设定相关参数 5 SQL>CREATE PROFILE devp_his LIMIT PASSWORD_LIFE_TIME 10 PASSWORD_GRACE_TIME 2 PASSWORD_REUSE_TIME 10 PASSWORD_REUSE_MAX UNLIMITED; 6 配置文件已创建 7 --3) 分配概要文件给用户devp 8 SQL>ALTER USER devp PROFILE devp_his; 9 用户已更改。 10 -- 注意,前面已经提到过,当使用口令历史选项时, PASSWORD_REUSE_TIME 和 PASSWORD_REUSE_MAX 两个参数只能设置一个,另一个必须为UNLIMITED。 当将概要文件分配给用户devp 之后,如果前11 天没有修改用户口令,那么在第12 天 登录时,Oracle 会强制终止口令,并要求用户改变口令。但如果仍然使用过去的口令,则口 令修改不能成功,如下所示: 11 12 SQL>CONNECT devp/development 13 ERROR: 14 ORA-28001: the password has expired 15 更改devp 的口令 16 新口令: 17 重新键入新口令: 18 ERROR: 19 ORA-28007: the password cannot be reused 20 口令未更改 21
1.1.7.2.4 口令校验
口令校验是指使用PL/SQL 函数检查口令的有效性。在设置口令时,多数人都习惯于 按照自己易记的方式(如用户名、生日等)来指定口令。但如果其他人很了解用户的各种习惯, 那么口令将不再安全。通过使用口令校验函数,可以强制用户使用复杂的口令。尽管这种做 法会给用户带来一些小麻烦,但却可以大大加强口令的安全性。大家需要注意,如果要使用 口令校验函数,那么必须要以SYS 用户建立口令校验函数,并且口令校验函数必须满足如
下规范:
1 function_name( 2 userid_parameter IN VARCHAR2(30), 3 password_parameter IN VARCHAR2(30), 4 old_password_parameter IN VARCHAR2(30) 5 )
RETURN BOOLEAN
其中,userid_parameter 对应于用户名, password_parameter 对应于用户的新口令, old_password_parameter 对应于用户的旧口令。如果函数返回值为TRUE,则表示新口令可 以使用;但如果返回值为FALSE,则表示新口令不满足函数规则。另外, Oracle 也提供了 默认的口令校验函数VERIFY_FUNCTION,该口令校验函数具有以下一些功能:
• 口令最少为4 个字符。
• 口令不能与用户名相同。
• 新口令与旧口令至少有三个字符不同。
• 口令至少包含一个阿拉伯字母、一个数字和一个特殊字符。
可以通过以SYS 用户身份登录后运行脚本utlpwdmg.sql 来建立默认的口令校验函数, 脚本保存在ORACLE_HOME\\rdbms\\admin 目录中。DBA 也可以通过修改脚本来实现自己的 口令校验函数。
1 --【实例16-4】为用户devp 指定口令校验函数以强制它使用复杂口令 2 3 --1)以管理员身份登录 4 SQL>CONNECT / AS SYSDBA 5 已连接。 6 --2)运行脚本utlpwdmg.sql 建立默认口令校验函数VERIFY_FUNCTION。(当然也可自 己创建口令校验函数) 7 SQL>@%ORACLE_HOME%/rdbms/admin/utlpwdmg.sql 8 函数已创建。 9 --3)创建概要文件,设定参数 10 SQL>CREATE PROFILE devp_verify LIMIT PASSWORD_LIFE_TIME 10 PASSWORD_GRACE_TIME 2 PASSWORD_VERIFY_FUNCTION verify_function; 11 配置文件已创建 12 -4) 分配概要文件给用户devp 13 SQL>ALTER USER devp PROFILE devp_verify; 14 用户已更改。 15 -这样,当修改devp 用户口令时,如果不满足函数规则,会出错。如把devp 的口令改成 与用户名一样,则会显示如下错误信息: 16 SQL>alter user devp identified by devp; 17 alter user devp identified by devp 18 * 19 ERROR 位于第1 行: 20 ORA-28003: 指定口令的口令验证失败 21 ORA-20001: Password same as or similar to user 22 --另外,如果你不想使用口令校验函数,则可以将PASSWORD_VERIFY_FUNCTION 选 项设置为NULL。 Google 跟踪代码管理器集成安全性 - noscript iframe 沙盒《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段