目的 创建和管理数据库用户帐户 -验证用户 -分配默认存储区(表空间) 授予和撤销权限 创建和管理角色 创建和管理概要文件 -实施标准口令安全功能 -控制用户的资源使用量 相关术语 数据库用户帐号:是一种组织数据库对象的所有权和访问权限的方法 口令:是Oracle DB使用的一种验证方法 角色:是一个有相关权限组成的指定组,可授予给用户或其他角色 概要文件:是用于限制数据库使用和实例资源的一组指定资源限制条件,并管理账户状态和口令管理规则 限额:是允许给定表空间具有的空间。通过这种方法,可以控制用户的资料使用量。 数据库用户帐户 每个数据库用户帐户都包括以下项: -唯一的用户名 用户名不能超过30个字节,不能包含特殊字符,而且必须以字母开头。 -验证方法 最常见的验证方法是口令,但是Oracle Database 11g支持口令/全局和外部验证方法(例如生物统计学验证/证书验证和标记验证)。 -默认表空间 如果用户未指定其它表空间,则可在这个位置创建对象。请注意,具有默认表空间并且不意味着用户在该表空间具有创建对象的权限,也不意味着用户在该表空间中具有用于创建对象的空间限额。这两项需要另外授权。 -临时表空间 这是实例代表用户创建临时对象(如排序和临时表)的位置。临时表空间没有限额。 -用户概要文件 分配给用户的一组资源与口令限制。 -初始使用者组 由资源管理器使用 -帐户状态 打开(Open)/锁定(Lock)/过期(Expired) 方案: 是数据库用户拥有的数据库对象的集合 与用户帐户具有相同的名称 方案对象包括表/视图/序列/存储过程/同义词/索引/集群和数据库链接等结构. 注:数据库用户不一定是人员。常见的作法是创建一个拥有特定应用程序的数据库对象的用户。数据库用户可以是设备/应用程序或只是一种出于安全目的而对数据库对象进行分组的方法。数据库用户不需要具有个人身份信息。 预定义管理账户 SYS账户: -被授予DBA角色以及几个其它角色 -具有带ADMIN OPTION的所有权限 -执行启动/关闭和某些维护命令时需要使用该账户 -拥有数据字典和自动工作量资料档案库(AWR) -连接数据库必须使用AS SYSDBA子句。连接ASM实例,必须使用AS SYSASM子句 SYSTEM账户被授予DBA/MGMT_USER和AQ_ADMINISTRATOR_ROLE角色 DBSNMP账户被授予OEM_MONITOR角色 SYSMAN账户被授予MGMT_USER/RESOURCE和SELECT_CATALOG_ROLE角色 常规操作不使用这两个账户 创建用户 验证用户,创建用户时,必须确定要使用的验证方法,以后可修改此方法。 -口令验证(Oracle DB验证) 创建的每一个用户都有一个关联口令,用户尝试建立连接时,必须提供这个口令。 Oracle Database 11g中创建的所有口令都区分大小写。 口令可以包含多个字节字符,但长度被限制为30字节。 升级到Oracle Database 11g的数据库中创建的每个口令仍然不区分大小写,直到更改该口令。 通过高级加密标准(AES)算法以自动且透明的方式对口令进行加密,然后再通过网络发送这些口令。 -外部验证 使用数据库外部(操作系统/Kerberos或Radius)的方法进行验证。 Kerberos或Radius需要使用高级安全选件。用户可以在不指定用户名或口令的情况下连接到Oracle DB。 系统可以通过使用生物统计学/x509证书和标记设备来识别用户。 数据库依赖于基础操作系统/网络验证服务或外部验证服务来限制对数据库账户的访问。 操作系统验证 OS_AUTHENT_PREFIX初始化参数(默认值OPS$),并在Oracle用户名中使用该前缀。 -全局验证 使用Oracle高级安全选件时,可使用Oracle Internet Directory通过全局验证来识别用户。 管理员验证 操作系统安全性 DBA必须具有创建或删除文件的操作系统权限 普通数据库用户不应具有创建或删除数据库文件的操作系统权限 管理员安全性 对于SYSDBA/SYSOPER和SYSASM连接 -对于口令文件和严格验证方法,按名称审计DBA用户 -对于操作系统验证,审计操作系统账户名 -对授权用户,操作系统验证优先于口令文件验证 -口令文件使用区分大小写的口令 权限 用户权限有两类 系统权限:允许用户在数据库中执行特定的操作。有170多种不同的系统权限。 对象权限:允许用户访问和操作特定的对象(如表/视图/序列/过程/函数或程序包) 没有特定授权的情况下,用户只能访问自己用户的对象。 对象权限可以由对象的所有者或管理员授予,也可以由被显示授予了权限,可以为其他人员分配对某个对象的权限的人员授予。 系统权限:出于安全的考虑,某些系统权限通常只能授予给管理员 语法:GRANT <system_privilege> TO <grant clause> [WITH ADMIN OPTION] RESTRICTED SESSION:数据库在受限模式下也能访问。 SYSDAB和SYSOPER:这两个权限可以在数据库中执行关闭/启动/恢复及其它管理任务。SYSOPER可执行基本操作任务,但不能查询用户数据它包含系统权限 -STARTUP和SHUTDOWN -CREATE SPFILE -ALTER DATABASE OPEN/MOUNT/BACKUP -ALTER DATABASE ARCHIVELOG -ALTER DATABASE RECOVER (仅限完全恢复。任何形式的不完全恢复,如UNTIL TIME|CHANG|CANCEL|CONTROLFILE,都需要SYSDAB身份连接)。 -RESTRICTED SESSION SYSASM:使用此权限可以启动/关闭和管理ASM实例 DROP ANY object:用户使用DROP ANY权限可以删除其他用户拥有的对象。 CREATE /MANAGE/DROP和ALTER TABLESPACE:这些权限运行进行表空间管理/包括创建/删除和更改表空间的属性。 CREATE LIBRARY:Oracle DB允许开发人员在PL\SQL内创建和调用外部代码(如C库)。此库必须由数据库中的LIBRARY对象指定。 CREATE ANY DIRECTORY:作为一种安全措施,代码所在的操作系统目录必须链接到一个虚拟Oracle目录对象。使用CREATE ANY DIRECTORY权限时,有可能会调用不安全的代码对象。用户使用CREATE ANY DIRECTORY权限可以在Oracle软件所有者能够访问的任何目录中创建目录对象(具有读写访问权限)。 GRANT ANY OBJECT PRIVILEGE:使用此权限可以对其他人拥有的对象授予对象权限。 ALTER DATABASE和ALTER SYSTEM:这些权限的功能很强,可用于修改数据库和Oracle实例,例如,重命令数据文件或刷新缓冲区高速缓存。 对象权限:将对象权限授予给用户的对象的类型 语法:GRANT <object_privilege> ON <object> TO <grantee clause> [WITH GRANT OPTION] 撤销带ADMIN OPTION 的系统权限,如果有权限者将此权限授予其他用户,REVOKE则不会级联撤销权限。 REVOKE <system_privilege> FROM <grantee clause>; 撤销带GRANT OPTION的对象权限 撤销与数据操纵语言(DML)操作相关的系统权限时可能会产生级联影响。 REVOKE <object_privilege> FROM <grantee clause>;会级联移除对象权限 角色 角色的优点 -简化权限管理,使用角色可简化权限管理,可以将一组权限授予给某个角色,然后将该角色授予给每个用户,而不是将同一组权限授予给多个用户。 -进行动态权限管理,如果修改了与某个角色关联的权限,则所有被授予该角色的用户都会立即自动获得修改后的权限。 -有选择地提供权限,通过启用或禁用角色可以暂时打开或关闭权限。这样便可以在指定情形下控制用户的权限。 角色特性 角色就像用户,可以授予角色权限或撤销角色权限。 角色就像系统权限一样,可以将其授予给用户或其它角色,也可以从用户或其它角色撤销。 角色可以由系统权限和对象权限组成。 可以对授予了某一角色的每个用户启用或禁用该角色。 可能需要口令才能启用角色。 角色不归任何用户拥有,也不属于任何方案。 创建角色 CREATE ROLE <role_name>; 保护角色 -角色可以是非默认的,并在需要时启用。 SET ROLE vacationdba; -可以通过验证保护角色。 None/Password/External/Global -还可以通过编辑保护角色 CREATE ROLE secure_application_role IDENTIFIED USING <security_procedure_name>; 概要文件和用户 概要文件时用于限制数据库使用和实例资源的一组指定资源限制条件。通过概要文件还可管理账户状态并对用户的口令进行限制(长度,到期时间等)。每个用户都分配有一个概要文件,而且该用户在指定时间只属于一个概要文件。如果在更改用户概要文件时用户已登录,则所做更改在用户下一次登录时才生效。 DEFAULT概要文件是其它所有概要文件的基础。 概要文件控制的系统资源: -CPU:可按会话或调用限制CPU资源。 -网络/内存:每个数据库会话都会占用系统内存资源和网络资源(如果会话不是来自服务器的本地用户) -连接时间,指示用户在自动注销前可以保持连接的分钟数 -空闲时间,指示用户会话在自动注销前可以保持空闲的分钟。只会计算服务器进程的空闲时间。 -并行会话,用户可以创建多少并行会话。 -专用SGA,限制在系统全局区SGA中执行排序/合并位图等操作所占用的空间量。此限制仅在会话使用了共享服务器才有效。 -磁盘I/O,限制用户在每个会话级或每个调用级可读取的数据量。“读取/会话”和“读取/调用”可限制内存和磁盘的总读取次数。这样做可确保执行大量I/O操作的语句不会过度使用内存和磁盘。 实施口令安全功能 账户锁定 -FAILED_LOGIN_ATTEMPTS: 指定在锁定账户前尝试登录的失败次数 -PASSWORD_LOCK_TIME:指定尝试登录失败达到了指定的次数后锁定账户的天数 口令失效和到期 -PASSWORD_LIFE_TIME:确定口令生存期(天),之后该口令就会到期 -PASSWORD_GRACE_TIME :指定首次成功登录后更改口令的宽限期(天),之后该口令就会到期 注:使用SYS/SYSMAN和DBSNMP账户口令到期和锁定这些账户,会导致Oracle Enterprise Manager无法正常运行。 口令历史记录 -PASSWORD_REUSE_TIME:指定用户不能在指定天数内重复使用口令 -PASSWORD_REUSE_MAX:指定可以重复使用当前口令之前口令更改需达到的次数。 口令复杂性验证 -PASSWORD_VERIFY_FUNCTION:参数指定一个PL\SQL函数,以便在分配口令之前执行口令复杂性检查。口令验证函数必须有SYS用户拥有,而且必须返回布尔值(TRUE或FALASE)。utlpwdmg.sql脚本提供了模型口令验证函数。 口令验证函数:VERIFY_FUNCTION_11G -至少包含八个字符 -与用户名,带有一个数字的用户名以及逆序的用户名不同 -与数据库以及带有一个数字的数据库名不同 -至少含有一个字母和一个数字的字符串 -与之前的口令至少有三个字母不相同 使用此函数可以创建自己的定制口令验证
create profile profile_test_0312 limit password_life_time 180 failed_login_attempts 7 password_lock_time 1 password_grace_time 7 password_reuse_time unlimited password_reuse_max unlimited password_verify_function verify_function_11g ;
将限额分配给用户 限额,是允许给定表空间具有的空间。默认情况下,对于任何表空间用户都没有限额。 -无限制,unlimited 允许用户最大限度的使用表空间中的可用空间。 -值:用户可以使用的空间 -UNLIMITED TABLESPACE系统权限:覆盖所有单独的表空间限额,对于所有表空间(包括SYSTEM和SYSAUX),为用户提供无限制的限额。RESOURCE角色包括此系统权限。 当用户创建或扩展段时,Oracle实例会检查限额 对于分配给用户方案的活动,只有那些使用表空间中的空间的活动才会计入限额。(如视图和临时表空间)不会影响限额。 使用purge子句删除了用户拥有的对象或回收站中自动清除了用户所拥有的对象时,会补充限额。 应用最少权限原则 -保护数据字典 07_DICTIONARY_ACCESSIBILITY=FALSE -撤销不必要的PUBLIC 权限 -使用访问控制列表(ACL)来控制网络访问 UTL_SMTP,允许将数据库使用简单传输协议SMTP邮件服务器来发送任意电子邮件 UTL_TCP,允许数据库服务器与任何正在接收或等待的网络服务建立外出网络连接。 UTL_HTTP,允许数据库服务器通过HTTP请求并检索数据。 UTL_FILE,允许对主机操作系统上的文件进行访问。 -限制用户可访问的目录 -限制具有管理权限的用户 -限制远程数据库验证 REMOTE_OS_AUTHENT=FALSE 远程验证过程 数据库用户通过外部方式来进行验证 远程系统验证用户 用户登录数据库,不必接受另外的验证 保护授权账户 使用口令区分大小写的口令文件 对管理员角色启用严格的验证方法 orapwd file=orapw+<sid> entries=5 ignorecase=N 小结 创建和管理数据库用户帐户 验证用户 分配默认表空间 授予和撤销权限 创建和管理角色 创建和管理概要文件 实施标准口令安全功能 控制用户的资源使用量