1、第5章 Oracle 10G 安全机制第5章 Oracle 10G 安全机制 数据库中的数据的安全性主要涉及到以下几个方面: 身份验证:保证只有合法的用户才能登录并使用数据库。 访问控制:即使是合法用户,也要控制用户对数据库对象的访问,拒绝非授权访问,防止信息泄密。 可审计性:哪怕是非法用户的入侵行为和破坏行为也能跟踪,恢复数据。 语义保密性:数据库中的数据以某种加密的形式存储,这样非法用户即使得到数据文件也无法利用。用户帐号管理创建用户帐号创建用户的语法格式如下所示:CREATE USER 用户名 IDENTIFIED BY 口令DEFAULT TABLESPACE 默认表空间TEMPORA
2、RY TABLESPACE 临时表空间QUOTA数值K| M | UMLIMITED ON 表空间名PROFILE 概要文件名ACCOUNT LOCK | ACCOUNT UNLOCK 缺省表空间 DEFAULT TABLESPACE tablename 临时表空间 TEMPORARY TABLESPACE tempname 配额 限制用户所能使用的存储空间的大小。默认情况下,新建用户在任何表空间都不具任何配额 QUOTA ON tablename 用户在临时表空间中不需要配额,在临时表空间中创建的所有临时段都属于SYS模式用户的帐号有两种状态,DBA可以通过设置状态的方法使账户可用或不可用。
3、 一帐号锁定 锁定帐号可以使某个帐号不可用。ALTER USER username ACCOUNT LOCK; 二账户解锁 该状态下,帐号可以正常登陆。ALTER USER username ACCOUNTUNLOCK;创建用户示例 CREATE USER test IDENTIFIED BY pwd DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 5M ON USERS; 注意 新创建的用户并不能直接连接到数据库中,因为它不具有CREATE SESSION系统权限,因此,在新建数据库用户后,通常需要使用GRANT语句为用户授予
4、CREATE SESSION权限修改用户账号修改用户账号的语法格式如下所示:ALTER USER 用户名 IDENTIFIED BY口令DEFAULT TABLESPACE 默认表空间TEMPORARY TABLESPACE 临时表空间QUOTA数值K| M | UMLIMITED ON 表空间名PROFILE 概要文件名ACCOUNT LOCK | ACCOUNT UNLOCK删除用户账号删除用户账号的语法格式如下所示: DROP USER username CASCADE; 其中CASCADE表示级联,即删除用户之前,先删除它所拥有的实体。 权限管理 权限是执行某一种操作的能力,在Orac
5、le数据库中是利用权限来进行安全管理的,Oracle系统通过授予和撤销权限来实现对数据库安全的访问控制,这些权限可以分为两类: 系统权限:指在系统级控制数据库的存取和使用的机制。如是否能启动、停止数据库。是否能修改数据库参数等。Oracle提供了众多的系统权限,每一种系统权限指明用户进行某一种或某一类特定的数据库操作。系统权限中带有ANY关键字指明该权限的范围为数据库中的所有方案。 对象权限:对象权限指在特定数据库对象上执行某项操作的能力。与系统权限相比,对象权限主要是在Oracle对象上能够执行的操作,如查询、插入、修改、删除、执行等。这里的Oracle对象主要包括表、视图、聚簇、索引、序列
6、、快照、函数、包等。不同的Oracle对象具有不同的对象权限,如表具有插入的对象权限,而序列却没有,而序列具有的执行对象权限表也没有。授予系统特权的语法如下: GRANT system_privilege | role TO user | role | PUBLIC WITH ADMIN OPTION ; WITH ADMIN OPTION:允许得到权限的用户将权限转授其他用户 PUBLIC:表示系统中所有用户(用于简化授权) 系统权限授予时需要注意的几点: 只有DBA才应当拥有ALTER DATABASE 系统权限。 应用程序开发者一般需要拥有CREATE TABLE、CREATE VIEW
7、和CREATE INDEX等系统权限。 普通用户一般只具有CREATE SESSION系统权限。回收系统特权的语法如下: REVOKE system_privilege | role FROM user | role | PUBLIC ; 注意事项 多个管理员者授予用户同一个系统权限后,其中一个管理员回收其授予该用户的系统权限时,该用户不再拥有该系统权限。 为了回收用户系统权限的传递性(授权时使用了WITH ADMIN OPTION子句),必须先回收其系统权限,然后再授予其相应的系统权限。 如果一个用户获得的系统权限具有传递性(授权时使用了WITH ADMIN OPTION子句),并且给其他用
8、户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响。 对象权限的授权 语法结构 GRANT obj_priv_list | ALL ON schema.object TO user_list | role_list WITH GRANT OPTION 示例:将scott模式下的emp表的SELECT、UPDATE、 INSERT权限授予user1用户。 GRANT SELECT,INSERT,UPDATE ON scott.emp TO user1; 对象权限的回收 语法结构 REVOKE obj_priv_list | ALL ON schema.object FROM use
9、r_list|role_list; 需要注意的几点 多个管理员者授予用户同一个对对象权限后,其中一个管理员回收其授予该用户的对象权限时,不影响该用户从其他管理员处获得的对象权限。 为了回收用户对象权限的传递性(授权时使用了WITH GRANT OPTION子句),必须先回收其对象权限,然后再授予其相应的对象权限。 如果一个用户获得的对象权限具有传递性(授权时使用了WITH GRANT OPTION子句),并且给其他用户授权,那么该用户的对象权限被回收后,其他用户的对象权限也被回收。角色概述 权限是Oracle数据库定义好的执行某些操作的能力。角色是权限管理的一种工具,即有名称的权限的集合。权限
10、和角色是密不可分的。DBA可以利用角色来简化权限的管理。 Oracle数据库就借用了角色这种概念来实现这种权限管理的方法,达到简化权限管理的目的。角色是对权限进行集中管理(授予、回收)的一种方法,它是一组相关权限的组合,即将不同的权限组合到一起就形成了角色。 角色的概念 所谓角色就是一系列相关权限的集合创建角色语法格式如下所示: CREATE ROLE 角色名 IDENTIFIED BY 口令;进行角色授权格式如下所示 GRANT 权限 | , TO 角色 | PUBLIC | , WITH ADMIN OPTION ; 例题:1创建角色 CREATE ROLE high_manager_ro
11、le CREATE ROLE middle_manager_role IDENTIFIED BY middlerole; CREATE ROLE low_manager_role IDENTIFIED BY lowrole; 2.给角色授予权限。GRANT CONNECT,CREATE TABLE,CREATE VIEW TO low_manager_role; GRANT CONNECT,CREATE TABLE,CREATE VIEW TO middle_manager_role;GRANT CONNECT,RESOURCE,DBA TO high_manager_role;GRANT S
12、ELECT,UPDATE,INSERT,DELETE ON scott.emp TO high_manager_role;3.把角色赋予用户:(特别说明,授予角色不是实时的。如下:)grant low_manager_role to testdb;4.起用角色:给用户赋予角色,角色并不会立即起作用。(1)必须下次断开此次连接,下次连接才能起作用。(2).或者执行命令set role testrole查询角色信息 DBA_ROLES:包含数据库中所有角色及其描述。 DBA_ROLE_PRIVS:包含为数据库中所有用户和角色授予的角色信息。 USER_ROLE_PRIVS:包含为当前用户授予的角色
13、信息。 ROLE_ROLE_PRIVS:为角色授予的角色信息。 ROLE_SYS_PRIVS:为角色授予的系统权限信息。 ROLE_TAB_PRIVS:为角色授予的对象权限信息。 SESSION_PRIVS:当前会话所具有的系统权限信息。 SESSION_ROLES:当前会话所具有的角色信息。角色类型 系统预定义角色 用户自定义角色概要文件概述 概要文件(profile)是一个命名的资源限定的的集合,它是Oracle安全策略的重要组成部分。利用概要文件,可以限制用户对数据库或者资源的使用,更多的是为用户设置口令策略。通常情况下,可以按角色建立不同的概要文件,依据每个用户所属的角色为它分配不同的
14、概要文件,而不用为每个用户创建单独的概要文件。创建和分配概要文件创建概要文件格式如下所示CREATE PROFILE 概要文件名 LIMITCONNECT_TIME 数值IDLE_TIME数值CPU_PER_CALL数值CPU_PER_SESSION数值LOGICAL_READS_PER_CALL数值LOGICAL_READS_PER_ SESSION数值SESSIONS_PER_USER数值COMPOSITE_LIMIT数值PRIVATE_SGA数值FAILED_LOGON_ATTEMPTS数值PASSWORD_LIFE_TIME数值PASSWORD_GRACE_TIME数值PASSWORD
15、_LOCK_TIME数值PASSWORD_REUSE_TIME数值PASSWORD_REUSE_MAX数值PASSWORD_VERIFY_FUNCTION数值;概要文件中参数 资源限制参数 CPU_PER_SESSION 用于指定每个用户的最大并发会话个数. (单位:百分之一秒) ) CPU_PER_CALL限制每次调用(解析,执行或提取数据)可占用的最大CPU时间(单位:百分之一秒) ) CONNECT_TIME -允许连接时间任意一个会话连接时间限定在指定的分钟数内 IDLE_TIME允许空闲时间 SESSIONS_PER_USER用户最大并行会话数(指定用户的会话数量 LOGICAL_R
16、EADS_PER_SESSION 读取数/会话(单位:块) LOGICAL_READS_PER_CALL限制每次调用的最大逻辑I/O次数. PRIVATE_SGA 专用sga COMPOSITE_LIMIT 组合限制(单位:单元) 口令管理参数 FAILED_LOGIN_ATTEMPTS用于指定联系登陆的最大失败次数. PASSWORD_LOCK_TIME用于指定帐户被锁定的天数 为了控制帐户锁定,必须首先执行CREATE PROFILE命令建立PROFILE,然后使用ALTER USER命令将profile分配给用户.CREATE PROFILE lock_accout LIMITFAILE
17、D_LOGIN_ATTEMPTS 3PASSWORD_LOCK_TIME 10;ALTER USER devep PROFILE lock_account如果建立PROFILE时没有提供PASSWORD_LOCK_TIME选项,将自动使用默认值(UNLIMITED),在这种情况下,需要DBA手工解锁.ALTER USER devep UNLOCK;PASSWORD_LIFE_TIME 口令有效期( 单位: 天)PASSWORD_GRACE_TIME 用于指定口令宽限期为了强制用户定期改变口令, 二者必须同时设置.CREATE PROFILE password_life_ime LIMITPAS
18、SWORD_LIFE_TIME 10PASSWORD_GRACE_TIME 2; PASSWORD_REUSE_MAX 用于指定在重用口令之前口令需要改变的次数. ( 单位: 次) PASSWORD_REUSE_TIME 用于指定口令可重用时间( 单位: 天) PASSWORD_VERIFY_FUNCTION 启用口令复杂 函数 口令复杂性校验是指使用PL/SQL函数确保用户口令的有效性,从而加强用户使用复杂口令. 安装oracle数据库时,oracle提供了sql脚本UTLPWDMG.SQL,该脚本用于建立系统口令校验函数VERIFY_FUNCTION,此口令校验函数实现了以下口令规则.口令
19、不能少于4个字符,口令不能与用户名相同,口令至少包含一个字符,一个数字和一个特殊字符($,_,#,!等) 需要注意,当建立系统口令校验函数VERIFY_FUNCTION时,必须以SYS用户运行SQL脚本utlpwdmg.sql. 建立系统口令校验函数VERIFY_FUNCTION,还会修改DEFAULT的其他口令管理选项.建立了VERIFY_FUNCTION函数后,如果在修改用户口令时口令不能满足改函数的规则,将显示错误信息. 如果要禁用口令校验函数,可以将PASSWORD_VERIFY_FUNCTION选项设置为NULL 将概要文件分配给用户 CREATE USER user5 IDENTI
20、FIED BY user4 PROFILE res_profile; ALTER USER user5 PROFILE pwd_profile ; 修改概要文件 语法结构 ALTER PROFILE profile_name LIMIT resource_parameters| password_parameters ; 示例 ALTER PROFILE pwd_profile LIMIT PASSWORD_LIFE_TIME 10; 删除概要文件 语法结构: DROP PROFILE profile_name CASCADE ; 示例: DROP PROFILE pwd_profile CA
21、SCADE ; 查询概要文件 USER_PASSWORD_LIMITS USER_RESOURCE_LIMITS DBA_PROFILES 审计准备审计 show parameter audit(1)AUDIT_FILE_DEST 指示出审计的文件存放的路径信息 (2)audit_sys_operations默认值是FALSE,如果开启审计功能,这个参数需要修改为TRUE (3)AUDIT_TRAIL = NONE|DB|OS DB-审计信息记录到数据库中 OS-审计信息记录到操作系统文件中 NONE-关闭审计(默认值)alter system setaudit_sys_operations=TRUE scope=spfile;修改参数audit_sys_operations为“TRUE”,开启审计的功能alter system set audit_trail=db scope=spfile; 修改参数audit_trail为“db”,审计信息记录到数据库中登录审计 操作审计对象审计 对象审计
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1