资源描述
安全管理 用户管理 权限管理 角色管理 概要文件管理 审计管理 本章主要内容包括 Oracle系统是一个多用户的数据库系统,每一个试图 使用 Oracle的用户都必须得到一个合法的用户名和口 令,这样才能进入数据库系统进行相应的操作。 用户管理是实现 Oracle系统安全性的重要手段, Oracle系统为不同的用户分配不同的权限或角色,每 个用户只能在自己的权限范围内进行操作,任何超越 权限范围的操作都被 Oracle系统视为非法。 用户管理主要包括创建用户、修改用户的设置和口令、 锁定和解锁用户、删除用户等。 用户管理 创建用户的 SQL命令是 CREATE USER CREATE USER 用户名 IDENTIFIED BY 密码 | EXTERNALLY | GLOBALLY AS 外部名 DEFAULT TABLESPACE 默认表空间名称 | TEMPORARY TABLESPACE 临时表空间名称 | QUOTA 数目 K | M UNLIMITED ON 表空间名称 | PROFILE 用户配置文件 | PASSWORD EXPIRE | ACCOUNT LOCK | UNLOCK 创建用户 用户的认证方式 方 式 说 明 BY 密码 密码认证,登录时要求输入口令 EXTERNALL Y 外部认证,指定由操作系统校验用户 GLOBALLY 全局认证,指定用户在多个数据库中全局标识 在 Oracle企业管理器里创建用户,展开导航树的 【 安全性 】 节点, 右击 【 用户 】 文件夹,在弹出的快捷菜单中选择 【 创建 】 选项 。 用 EM创建用户 创建用户相对应的 SQL语句 CREATE USER LOTUS PROFILE DEFAULT IDENTIFIED BY LOTUS DEFAULT TABLESPACE USERS QUOTA 10 K ON USERS ACCOUNT UNLOCK; GRANT ALTER ANY TABLE TO LOTUS; GRANT CREATE ANY TABLE TO LOTUS; GRANT DROP ANY TABLE TO LOTUS; GRANT SELECT ANY TABLE TO LOTUS; GRANT CONNECT TO LOTUS; ALTER USER LOTUS GRANT CONNECT THROUGH MDX; 例 8-1 更改 LOTUS用户的概要文件为 Profile1, Profile1 是已经建立好的概要文件名。 ALTER USER LOTUS PROFILE Profile1 例 8-2 更改 LOTUS用户的口令为 lotus123。 ALTER USER LOTUS IDENTIFIED BY lotus123 例 8-3 更改 LOTUS用户的默认表空间为 XXGCX表空间。 ALTER USER LOTUS DEFAULT TABLESPACE XXGCX 修改用户示例 另外,更改临时表空间的语句为: ALTER USER Username TEMPORARY TABLESPACE Tablespace_name 其中, Tablespace_name为临时表空间的名称。 例 8-4 锁定 LOTUS用户账号。 ALTER USER LOTUS ACCOUNT LOCK 另外,解锁用户账号用下面的语句: ALTER USER LOTUS ACCOUNT UNLOCK 例 8-5 更改 LOTUS用户在 USERS表空间的限额为无限。 ALTER USER LOTUS QUOTA UNLIMITED ON USERS 删除用户的命令: Drop User 用户名 在 EM中选中要删除的用户名,右键单击,选择 “ 移去 ” 。 实验 1: 创建用户 testa 在 testa下建一张表 此时可以直接 drop user testa? 删除用户 SQL drop user testa; drop user testa * ERROR 位于第 1 行 : ORA-01922: 必须指定 CASCADE 以 删除 TESTA (用户下有对象,就不能删掉这个用户) SQL drop user testa cascade; 用户已丢弃 实验 2: 查数据字典 DBA_USERS ALL_USERS USER_USERS DBA_TS_QUOTAS USER_TS_QUOTAS USER_PASSWORD_LIMITS USE_RESOUTCE_LIMITS DBA_PROFILES RESOURCECOST 权限管理 权限指用户对数据库进行操作的能力,如果 不对新建的用户赋予一定的权限,该用户是 不能对数据库进行操作。 Oracle权限分为系统权限和对象权限两种, 系统权限指在 Oracle数据库系统中执行某项 操作的能力,对象权限指在特定数据库对象 上执行某项操作的能力。 Oracle系统通过授予和撤销权限,实现对数 据库系统安全的访问控制。 Oracle提供的系统权限 , 每一种系统权限指明 用户进行某一种或某类特定的数据库操作 。 系 统权限中带有 ANY关键字的指明该权限的范围 为数据库中的所有方案 。 系统权限列表 权限 .doc 系统权限 对象权限指在特定数据库对象上执行某项操作的能力 。 与系统权限相比 , 对象权限主要指在 Oracle对象上所能 够执行的操作 , 如查询 、 插入 、 修改 、 删除 、 执行等 。 这里的 Oracle对象主要包括表 、 视图 、 聚簇 、 索引 、 序 列 、 快照 、 过程 、 函数 、 包等 。 不同的 Oracle对象具有不同的对象权限 , 如表具有插入 的对象权限 , 而序列却没有 , 而序列具有的执行对象权 限 , 而表却没有 。 对象权限列表: 对象权限 在 SQL命令中 , 授予权限使用 GRANT语句 , 撤销权限使用 REVOKE语句 。 授予系统权限的语法如下: GRANT 系统权限列表 |角色 TO 用户名 |角色 |PUBLICWITH ADMIN OPTION 其中, PUBLIC指授予数据库中的所有用户, “ WITH ADMIN OPTION”选项将使得该用户能将其权限授予其他用 户。 撤销系统权限的语法如下: REVOKE 系统权限列表 |角色 FROM 用户名 |角色 |PUBLIC 例 8.8-8.10。 授予和撤销系统权限 例 8-8 授予 LOTUS用户有建立表、建立视图、建立索引的权限。 GRANT CREATE TABLE ,CREATE VIEW,CREATE INDEX TO LOTUS 例 8-9 授予 LOTUS用户具有建立表的系统权限,同时允许 LOTUS用户管 理建立表的系统权限。 GRANT CREATE TABLE TO LOTUS WITH ADMIN OPTION 例 8-10 授予数据库中的所有用户使用无限表空间的权限。 GRANT UNLIMITED TABLESPACE TO PUBLIC 例 8-11 撤销 LOTUS用户的具有建立表、视图、索引的权限。 REVOKE CREATE TABLE ,CREATE VIEW,CREATE INDEX FROM LOTUS 例 8-12 撤销数据库中的所有用户使用无限表空间的权限。 REVOKE UNLIMITED TABLESPACE FROM PUBLIC 授予对象权限的语法如下: GRANT 对象权限列表 |ALL ON 模式名 .数据库对象 TO 用户名 | 角色 |PUBLIC WITH GRANT OPTION 撤销对象权限的语法如下: REVOKE 对象权限列表 |ALL ON 模式名 .数据库对象 FROM 用户 名 |角色 |PUBLIC CASCADE CONSTRAINTSFORCE 授予和撤销对象权限 例 8-13 授予 LOTUS用户具有查询、修改、删除 STUDENT表 的对象权限。 GRANT SELECT ,UPDATE,DELETE ON STUDENT TO LOTUS 例 8-14 授予 LOTUS用户具有对 STUDENT表所有的操作权限, 并且可以把获得的对象权限再授予其他用户。 GRANT ALL ON STUDENT TO LOTUS WITH GRANT OPTION 例 8-15 撤销 LOTUS用户在 STUDENT表上的查询、修改、删 除的对象权限。 REVOKE CREATE ,UPDATE,DELETE ON STUDENT FROM LOTUS 例 8-16 撤销 LOTUS用户对 STUDENT表所有操作权限。 REVOKE ALL ON STUDENT FROM LOTUS 实验 用户 A 赋给用户 B权限和赋权的权限, 用户 B给用户 C赋权 (分系统权限和对象 权限) 问: A可以把 C的权限收回吗? 问: A把 B的权和赋权的权限收回, C还 有权吗? 系统权限 不连带 对象权限 连带 角色管理 角色 是对权限的集中管理。每个角色都有一个名称,它是 一组系统权限和对象权限的集合,当把某角色授予某个用 户,该用户就会自动获得该角色包括的所有权限。 使用角色将使得授予和撤销权限都比较方便,通过对一个 角色添加或删除权限,从而可以改变被授予该角色的用户 组的权限。当需要修改用户的权限时,只需对角色进行修 改,不必对单个用户进行修改。 角色还可以授予另一个角色,则另一个角色将继承此角色 拥有的权限。 角色分为 系统预定义角色 和 用户自定义角色 。 预定义角色 列举 名 称 说 明 CONNECT 连接角色 DBA 管理员组的角色,包含所有系统权限 OEM_MONITOR ORACLE企业管理器监控的角色 RESOURCE 应用程序开发人员的角色 EXP_FULL_DATABASE 数据库导出的角色 IMP_FULL_DATABASE 数据库导入的角色 EXECUTE_CATALOG_ROLE 执行数据字典部分函数和过程的权限 SELECT_CATALOG_ROLE 查询数据字典的数据的权限 DELETE_CATALOG_ROLE 删除 SYS.AUD$表中的记录,SYS.AUD$表中记录着审计记录 创建自定义角色 创建角色的 SQL命令: CREATE ROLE CREATE ROLE 角色名 NOT IDENTIFIED | IDENTIFIED BY 密码 | EXTREMELY | GLOBALLY 在 Oracle企业管理器里创建角色,展开导航树中的 【 安全性 】 节点,右击 【 角色 】 文件夹,在弹出的快 捷菜单中选择 【 创建 】 选项 添加角色 例 8-19 为 LOTUS_ROLE角色添加 CREATE SESSION权限。 GRANT CREATE SESSION TO LOTUS_ROLE 例 8-20 为 LOTUS_ROLE角色添加在 STUDENT表的查询权限。 GRANT SELECT ON STUDENT TO LOTUS_ROLE 从角色中撤销权限使用 REVOKE语句,语法如下: REVOKE权限名 | 已有角色名 FROM 角色名 例 8-21 撤销 LOTUS角色的 CREATE SESSION权限。 REVOKE CREATE SESSION FROM LOTUS_ROLE 例 8-22 撤销 LOTUS角色的 CREATE SESSION权限。 REVOKE SELECT ON STUDENT FROM LOTUS_ROLE 将角色授予用户和其他角色 在角色创建好并为角色分配了适当的权限之后,就可以将角 色授予用户或其他角色,语法如下: GRANT 角色名 TO 用户名 |角色名 |PUBLIC WITH ADMIN OPTION 其中, PUBLIC指将角色授予数据库中的所有用户。 例 8-24 将 CONNECT角色授予数据库中的所有用户。 GRANT CONNECT TO PUBLIC 例 8-25 将 RESOURCE角色授予 LOTUS_ROLE角色。 GRANT RESOURCE TO LOTUS_ROLE; 例 8-26 将 LOTUS_ROLE角色授予 LOTUS用户,并允许 LOTUS用 户可以将 LOTUS_ROLE角色授予其他用户或角色。 GRANT LOTUS_ROLE TO LOTUS WITH ADMIN OPTION 删除角色 在 Oracle企业管理器中删除角色时, 右击要删除的角色,在弹出的快捷菜单 中选择 【 移去 】 选项。 删除角色使用 DROP ROLE语句,语法 如下: DROP ROLE 角色名 概要文件管理 概要文件是一个限制用户使用系统资源的文件,又称 配置文件。 将概要文件分配给某个用户后, Oracle系统在用户访 问数据库时 , 将按照概要文件的设置为该用户分配系 统资源。 一个用户不使用概要文件或概要文件参数设置不合理, 都会影响其他用户访问数据库的速度。 在创建用户时,默认分配给用户的概要文件是 DEFAULT 文件 ,该文件对系统资源没有任何限制。因此, DBA常 常根据实际情况建立自定义概要文件。 建立概要文件 建立概要文件的 SQL命令: CREATE PROFILE: CREATE PROFILE 概要文件名 LIMIT 资源参 数列表 |密码参数列表 概要文件的资源参数 概要文件的密码参数 建立概要文件的示例 CREATE PROFILE PROFILE1 LIMIT CPU_PER_SESSION UNLIMITED -cpu每秒会话数 CPU_PER_CALL 3000 -cpu每秒 调 用数 任意一个会 话 中的任意一个 单 独数据 库调 用所消耗的 CPU时间 量 (时间 量 为 1/100秒 ) CONNECT_TIME 45 -允 许连 接 时间 任意一个会 话连 接 时间 限定在指定的分 钟 数内 SESSIONS_PER_USER 10 -用 户 最大并行会 话 数 (指定用 户 的会 话 数量 ) LOGICAL_READS_PER_SESSION DEFAULT -读 取数 /会 话 (单 位 :块 ) LOGICAL_READS_PER_CALL 1000 -读 取数 /调 用 (单 位 :块 ) PRIVATE_SGA 256K -专 用 sga 查看概要文件的信息 select * from SYS.DBA_PROFILES; select * from SYS.USER_RESOURCE_LIMITS; 在 Oracle企业管理 器中建立概要文件 选择导航树中的 【 安全性 】 节点,右击 【 概要文件 】 文件夹,在弹出的快捷菜单中选择 【 创建 】 选项 将概要文件分配给用户 创建完成的概要文件可以分配给用户使用, SQL语法: ALTER USER 用户名 PROFILE 概要文件名 在 EM中将概要文件分配给用户,右击 【 概要文件 】 文件夹,在弹出 菜单中选择 【 为用户分配概要文件 】 。 Oracle 9i把用来监视和记录用户对 Oracle数 据库所施加的各种操作的机制称为 审计 。 审计但不记录数据的更新值、插入行和删除 行中的具体数值。 审计的结果存储在数据库的审计表 AUD$中。 AUD$表应定期清空过期的审计记录,用户 须具有 Delete_Catalog_Role角色方可执行 本操作。 什么是审计 激活审计 在默认情况下, Oracle系统的审计功能是关闭的。 激活的办法是在 init.ora参数文件中,将参数 audit_trail设置为正整数,重新启动数据库例程。 除了可以在 init.ora参数文件中,将 audit_trail 参数设置为正整数来激活审计功能外,还可以在 Oracle企业管理器中激活审计功能。 激活审计功能后,拥有表或视图的普通用户可以做: 通过 SQL语句选择审计项 审计对自身所拥有的表或视图的操作是否成功 审计各种类型的 SQL操作 控制审计的程度是以 SESSION还是 ACCESS为单位 拥有 DBA权限的用户还拥有如下审计功能: 对 LOGON、 LOGOFF、 GRANT、 REVOKE进行审计 允许或禁止向审计追踪表存储数据 为数据库表设定默认审计选择 审计的类型 名 称 说 明 语句审计( Statement Auditing) 按类型对 SQL语句进行审计,不指定具体对象。 语句审计可对数据库中指定用户或所有用户 进行 权限审计( Privilege Auditing) 对执行的系统权限相应的活动进行审计,是只对 特定的活动进行的审计,较语句审计更为专 一。权限审计可对数据库中指定用户或所有 用户进行 对象审计( Schema Object Auditing) 对特定的方案对象上的执行语句进行审计,是只 对特定语句进行的审计,对象审计只对数据 库中所有用户进行 细粒度审计( Fine- Grained Auditing) 基于数据内容的最为精细的对数据活动的审计, 可以使用布尔表达式对列级别上的内容进行 审计。细粒度审计是 Oracle 9i的新功能 审计的 SQL语法 AUDIT 语句选项 |对象选项 BY SESSION | ACCESS WHENEVER NOT SUCCESSFUL BY SESSION指在一个会话中对相同类型 SQL语句只向审计表记 录一次。 BY ACCESS 指对于每一个被审计的语句, Oracle系统会写入一 个审计记录。 WHENEVER SUCCESSFUL指定当 SQL语句成功执行时才被审计, 当有 NOT 关键字时,只对操作失败的 SQL语句进行审计,当省略此 选项时,则不管成功或失败都将被审计。 语句选项 指对 SQL语句进行的语句审计,审计记录包括用户完成的 操作、操作类型、操作对象和操作时间。 对象选项 指对 Oracle对象进行的审计, Oracle对象指表,视图, 序列,实体化视图,过程、函数、包和对象类型等。 举例说明审计的操作 例 8-34 对所有的 SQL命令进行审计。 AUDIT ALL 例 8-35 对创建、修改、删除和设置角色的语句进行审 计,不管其操作是否成功。 AUDIT ROLE 例 8-36 对操作成功的创建、修改、删除和设置角色的 语句进行审计。 AUDIT ROLE WHENEVER SUCCESSFUL 如果对操作失败的创建、修改、删除和设置角色的语句 进行审计,则用下面的语句: AUDIT ROLE WHENEVER NOT SUCCESSFUL 例 8-37 对成功登录的操作进行审计。 AUDIT SESSION WHENEVER SUCCESSFUL 例 8-38 对用户 MDX和 LOTUS查询和修改表的操作进行审计。 AUDIT SELECT TABLE, UPDATE TABLE BY MDX,LOTUS 例 8-39 对 DELETE ANY TABLE系统权限进行审计。 AUDIT DELETE ANY TABLE 例 8-40 对查询 MDX.STUDENT表的语句进行审计。 AUDIT SELECT ON MDX.STUDENT 例 8-41 对成功执行查询 MDX.STUDENT表的语句进行审计。 AUDIT SELECT ON MDX.STUDENT WHENEVER SUCCESSFUL 例 8-42 对插入和修改 MDX.STUDENT表的语句进行审计。 AUDIT INSERT, UPDATE ON MDX.STUDENT 例 8-43 对 MDX.SCORE_SEQ序列的所有操作进行审计。 AUDIT ALL ON MDX.SCORE_SEQ 例 8-44 对数据库中新建对象的 ALTER、 GRANT、 INSERT、 UPDATE和 DELETE操作,默认设置为审计。 AUDIT ALTER,GRANT,INSERT,UPDATE,DELETE ON DEFAULT 上面的语句执行成功后,新建的 Oracle对象会自动被审计。具体可以 分为以下几种情况: 如果新建对象是表,则会对表上的 ALTER、 GRANT、 INSERT、 UPDATE或 DELETE操作进行审计。 如果新建对象是视图,则会对视图上的 GRANT、 INSERT、 UPDATE 或 DELETE操作进行审计。 如果新建对象是序列,则会对序列上的 ALTER或 GRANT操作进行审计。 如果新建对象是过程、包或函数,则会对过程、包或函数上的 ALTER 或 GRANT操作进行审计。 停止审计 停止审计: NOAUDIT,其参数与 AUDIT基本相同。 例 8-47 停止所有系统中的审计。 NOAUDIT ALL 例 8-48 对创建、修改、删除和设置角色的语句停止审计,不管其操作是 否成功。 NOAUDIT ROLE 例 8-49 对登录失败的操作停止审计。 NOAUDIT SESSION WHENEVER NOT SUCCESSFUL 例 8-50 对用户 MDX和 LOTUS查询和修改表的操作停止审计。 NOAUDIT SELECT TABLE, UPDATE TABLE BY MDX, LOTUS 例 8-53 对数据库中新建对象的 ALTER、 GRANT、 INSERT、 UPDATE和 DELETE操作停止审计。 NOAUDIT ALTER, GRANT, INSERT, UPDATE, DELETE ON DEFAULT
展开阅读全文