Oracle 数据库基础教程2007
第 11章 安全管理
Oracle 数据库基础教程2007
主要内容
数据库的安全性
用户管理
权限管理
角色管理
概要文件管理
Oracle 数据库基础教程2007
本章要求
了解 Oracle数据库安全机制
掌握用户管理
掌握权限管理
掌握角色管理
了解概要文件的作用及其应用
Oracle 数据库基础教程2007
11.1 数据库安全性概述
数据库的安全性含义
防止非法用户对数据库的访问
防止用户的非法操作
Oracle数据安全控制机制
用户管理
权限管理
角色管理
表空间设置和配额
用户资源限制
数据库审计
Oracle 数据库基础教程2007
11.2 Oracle数据库安全性管理
用户管理
权限管理
角色管理
概要文件管理
Oracle 数据库基础教程2007
11.2.1用户管理
数据库初始用户
用户属性
用户的创建、修改、删除、查询
Oracle 数据库基础教程2007
数据库初始用户
SYS
数据库中具有最高权限的 DBA,可以启动、修改和关闭数据库,拥有数据字典
SYSTEM
一个辅助的 DBA,不能启动和关闭数据库,但可以进行其他一些管理工作
SCOTT
口令 tiger,用于测试网络的连接
PUBLIC用户组
为数据库中所有用户设定必需的对象权限和系统权限
Oracle 数据库基础教程2007
用户属性
认证方式
数据库身份认证
外部身份认证
全局身份认证
默认表空间
DEFAULT TABLESPACE
临时表空间
TEMPORARY TABLESPACE
Oracle 数据库基础教程2007
表空间配额
QUOTA … ON …
概要文件
限制用户对数据库系统资源的使用
设置用户的口令管理策略
账户状态
是否过期
是否锁定
Oracle 数据库基础教程2007
基本语法
CREATE USER user_name IDENTIFIED
[ BY password | EXTERNALLY | GLOBALLY AS
‘ external_name’ ]
[ DEFAULT TABLESPACE tablespace_name ]
[ TEMPORARY TABLESPACE temp_tablespace_name ]
[ QUOTA n K|M|UNLIMITED ON tablespace_name ]
[ PROFILE profile_name ]
[ PASSWORD EXPIRE ]
[ ACCOUNT LOCK | UNLOCK ]
11.2.2.创建用户
Oracle 数据库基础教程2007
注意
新创建的用户并不能直接连接到数据库中,因为它不具有 CREATE SESSION系统权限,因此,在新建数据库用 户后,通 常需 要使 用 GRANT语句 为用 户授 予 CREATE
SESSION权限
Oracle 数据库基础教程2007
用户表空间的设置
缺省表空间
DEFAULT TABLESPACE tablename
临时表空间
TEMPORARY TABLESPACE tempname
配额
限制用户所能使用的存储空间的大小。默认情况下,新建用户在任何表空间都不具任何配额
QUOTA…… ON tablename
用户在临时表空间中不需要配额,在临时表空间中创建的所有临时段都属于 SYS模式
Oracle 数据库基础教程2007
CREATE USER test IDENTIFIED BY pwd
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 5M ON USERS;
创建用户示例
Oracle 数据库基础教程2007
基本语法
ALTER USER user_name [ IDENTIFIED ]
[ BY password | EXTERNALLY | GLOBALLY AS
‘ external_name’ ]
[ DEFAULT TABLESPACE tablespace_name ]
[ TEMPORARY TABLESPACE
temp_tablespace_name ]
[ QUOTA n K | M | UNLIMITED ON
tablespace_name ]
[ PROFILE profile_name ]
[ DEFAULT ROLE role_list | ALL [ EXCEPT role_list |
NONE ] ]
[ PASSWORD EXPIRE ]
[ ACCOUNT LOCK | UNLOCK ]
11.2.3修改用户
Oracle 数据库基础教程2007
ALTER USER test
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 10M ON USERS;
修改用户示例
Oracle 数据库基础教程2007
用户的锁定与解锁
锁定用户
某个用户暂时离开工作
某个用户永久离开工作
DBA创建的特殊用户帐户
ALTER USER test ACCOUNT LOCK;
解锁用户
ALTER USER test ACCOUNT UNLOCK;
Oracle 数据库基础教程2007
11.2.4删除用户
基本语法
DROP USER user_name [ CASCADE ];
步骤
先删除用户所拥有的对象
再删除用户
将参照该用户对象的其他数据库对象标志为 INVALID
Oracle 数据库基础教程2007
ALL_USERS
DBA_USERS
USER_USERS
DBA_TS_QUOTAS
USER_TA_QUOTAS
V$SESSION
V$OPEN_CURSOR
11.2.5查询用户
Oracle 数据库基础教程2007
11.3 权限管理
权限管理概述
系统权限的授予与回收
对象权限的授予与回收
查询权限信息
Oracle 数据库基础教程2007
11.3.1权限管理概述
所谓权限就是执行特定类型 SQL命令或访问其他用户的对象的权利。
Oracle中用户权限的分类
系统权限
在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。
对象权限
对某个特定的数据库对象执行某种操作的权限
获取途径的权限
直接授权
间接授权
Oracle 数据库基础教程2007
11.3.2系统权限管理
系统权限分类
对数据库某一类对象的操作能力,通常带有 ANY关键字
数据库级别的某种操作能力
系统权限的授予
语法结构:
GRANT sys_list | role_list | PUBLIC [ WITH
ADMIN OPTION ];
示例:为 PUBLIC用户组授予 CREATE SESSION系统权限
GRANT CREATE SESSION TO PUBLIC;
Oracle 数据库基础教程2007
系统权限授予时需要注意的几点:
只有 DBA才应当拥有 ALTER DATABASE 系统权限。
应用程序开发者一般需要拥有 CREATE TABLE、
CREATE VIEW和 CREATE INDEX等系统权限。
普通用户一般只具有 CREATE SESSION系统权限。
只有授权时带有 WITH ADMIN OPTION子句时,
用户才可以将获得的系统权限再授予其他用户,即系统权限的传递性。
Oracle 数据库基础教程2007
系统权限的回收
语法结构
REVOKE sys_priv_list FROM user_list| role_list;
注意事项
多个管理员者授予用户同一个系统权限后,其中一个管理员回收其授予该用户的系统权限时,该用户不再拥有该系统权限。
为了回收用户系统权限的传递性(授权时使用了 WITH ADMIN
OPTION子句),必须先回收其系统权限,然后再授予其相应的系统权限。
如果一个用户获得的系统权限具有传递性(授权时使用了 WITH
ADMIN OPTION子句),并且给其他用户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响。
Oracle 数据库基础教程2007
对象权限分类
对象权限的授权
语法结构
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;
11.3对象权限管理
Oracle 数据库基础教程2007
对象权限的回收
语法结构
REVOKE obj_priv_list | ALL ON [schema.]object
FROM user_list|role_list;
需要注意的几点
多个管理员者授予用户同一个对对象权限后,其中一个管理员回收其授予该用户的对象权限时,不影响该用户从其他管理员处获得的对象权限。
为了回收用户对象权限的传递性(授权时使用了 WITH
GRANT OPTION子句),必须先回收其对象权限,然后再授予其相应的对象权限。
如果一个用户获得的对象权限具有传递性(授权时使用了
WITH GRANT OPTION子句),并且给其他用户授权,
那么该用户的对象权限被回收后,其他用户的对象权限也被回收。
Oracle 数据库基础教程2007
WITH ADMIN OPTION选项
当甲用户授权给乙用户,且激活该选项,则被授权的乙用户具有管理该权限的能力:或者能把得到的权限再授给其他用户丙,或者能回收授出去的权限。
当甲用户收回乙用户的权限后,乙用户曾经授给丙用户的权限仍然存在
Oracle 数据库基础教程2007
WITH ADMIN OPTION
DBA
GRANT
REVOKE
Jeff Emi
Jeff EmiDBA
Oracle 数据库基础教程2007
WITH GRANT OPTION选项
当甲用户授权给乙用户,且激活该选项,则被授权的乙用户具有管理该权限的能力:或者能把得到的权限再授给其他用户丙,或者能回收授出去的权限。
当甲用户收回乙用户的权限后,乙用户曾经授给丙用户的权限也被回收。
Oracle 数据库基础教程2007
GRANT
REVOKE
WITH GRANT OPTION
Bob Jeff Emi
EmiJeffBob
Oracle 数据库基础教程2007
11.3.4查询权限信息
DBA_TAB_PRIVS,包含数据库所有对象的授权信息
ALL_TAB_PRIVS,包含数据库所有用户和 PUBLIC用户组的对象授权信息
USER_TAB_PRIVS,包含当前用户对象的授权信息
DBA_COL_PRIVS,包含所有字段已授予的对象权限
ALL_COL_PRIVS,包含所有字段已授予的对象权限信息
USER_COL_PRIVS,包含当前用户所有字段已授予的对象权限信息。
DBA_SYS_PRIVS:包含授予用户或角色的系统权限信息
USER_SYS_PRIVS:包含授予当前用户的系统权限信。
Oracle 数据库基础教程2007
11.4角色管理
角色概述
角色的分类
数据库系统预定义角色
用户自定义角色
角色的管理
定义、授权、修改、生效与失效、删除、查询
利用角色对用户间接授权
Oracle 数据库基础教程2007
11.4.1 Oracle角色概术
角色的概念
所谓角色就是一系列相关权限的集合
MA N A G E R 1 用户
MA N A G E R 2 E MP L O Y E E 1 E MP L O Y E E 2
角色权限
H R_ M G R H R_ E MP
CRE A T E
SE SS I O N
CRE A T E
T A BL E
SE L E CT
O N J O BS
I N SE R T
O N J O BS
U PD A T E
O N J O BS
Oracle 数据库基础教程2007
11.4.2Oracle角色类型
系统预定义角色
用户自定义角色
Oracle 数据库基础教程2007
11.4.3 自定义角色
创建角色
语法结构
CREATE ROLE role_name
[NOT IDENTIFIED ][ IDENTIFIED BY password ]
示例
CREATE ROLE high_manager_role
CREATE ROLE middle_manager_role
IDENTIFIED BY middlerole;
CREATE ROLE low_manager_role
IDENTIFIED BY lowrole;
Oracle 数据库基础教程2007
角色权限的授予与回收
给角色授予适当的系统权限、对象权限或已有角色。
在数据库运行过程中,可以为角色增加权限,也可以回收其权限。
示例:
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 SELECT,UPDATE,INSERT,DELETE ON
scott.emp TO high_manager_role;
Oracle 数据库基础教程2007
修改角色
语法结构
ALTER ROLE role_name [ NOT
IDENTIFIED ][ IDENTIFIED BY password ] ;
角色的生效与失效
所谓角色的失效是指角色暂时不可用。
当一个角色生效或失效时,用户从角色中获得的权限也生效或失效。
语法结构
SET ROLE [role_name [ IDENTIFIED BY password ] ] |
[ ALL [ EXCEPT role_name ] ] | [ NONE ];
Oracle 数据库基础教程2007
删除角色
语法结构
DROP ROLE role_name;
Oracle 数据库基础教程2007
给用户或角色授予角色
语法结构:
GRANT role_list TO user_list|role_list;
从用户或角色回收角色
语法结构:
REVOKE role_list FROM user_list|role_list;
用户角色的激活或屏蔽
激活或屏蔽用户默认角色的语法:
ALTER USER user_name DEFAULT ROLE
[ role_name ] | [ ALL [ EXCEPT role_name ] ]
| [ NONE ];
11.4利用角色进行权限管理
Oracle 数据库基础教程2007
用户角色的激活或屏蔽示例
屏蔽用户的所有角色
ALTER USER user1 DEFAULT ROLE NONE;
激活用户的某些角色
ALTER USER user1 DEFAULT ROLE CONNECT,DBA;
激活用户的所有角色
ALTER USER user1 DEFAULT ROLE ALL;
激活除了某个角色外的其他所有角色
ALTER USER user1 DEFAULT ROLE ALL EXCEPT DBA;
Oracle 数据库基础教程2007
11.4.5查询角色信息
DBA_ROLES:包含数据库中所有角色及其描述。
DBA_ROLE_PRIVS:包含为数据库中所有用户和角色授予的角色信息。
USER_ROLE_PRIVS:包含为当前用户授予的角色信息。
ROLE_ROLE_PRIVS:为角色授予的角色信息。
ROLE_SYS_PRIVS:为角色授予的系统权限信息。
ROLE_TAB_PRIVS:为角色授予的对象权限信息。
SESSION_PRIVS:当前会话所具有的系统权限信息。
SESSION_ROLES:当前会话所具有的角色信息 。
Oracle 数据库基础教程2007
概要文件的作用
限制用户对数据库和系统资源的使用以及进行用户口令管理
资源限制级别
会话级限制
调用级限制
资源限制类型
CPU使用时间
逻辑读
每个用户的并发会话数
用户连接数据库的空闲时间
用户连接数据库的时间
私有 SQL区和 PL/SQL区的使用
11.5概要文件管理
Oracle 数据库基础教程2007
启用或停用资源限制
在数据库启动前启用或停用资源限制
将数据库初始化参数文件中的参数 RESOURCE_LIMIT的值设置为 TRUE或 FALSE
在数据库启动后启用或停用资源限制
使用 ALTER SYSTEM语句修改 RESOURCE_LIMIT参数值为
TRUE或 FALSE
Oracle 数据库基础教程2007
11.5.2概要文件中参数
资源限制参数
CPU_PER_SESSION
CPU_PER_CALL
CONNECT_TIME
IDLE_TIME
SESSIONS_PER_USER
LOGICAL_READS_PER_SESSION
LOGICAL_READS_PER_CALL
PRIVATE_SGA
COMPOSITE_LIMIT
Oracle 数据库基础教程2007
口令管理参数
FAILED_LOGIN_ATTEMPTS
PASSWORD_LOCK_TIME
PASSWORD_GRACE_TIME
PASSWORD_LIFE_TIME
PASSWORD_REUSE_MAX
PASSWORD_REUSE_TIME
PASSWORD_VERIFY_FUNCTION
Oracle 数据库基础教程2007
11.5.3概要文件管理
创建概要文件
语法结构
CREATE PROFILE profile_name LIMIT
resource_parameters |
password_parameters ;
示例
CREATE PROFILE res_profile LIMIT
SESSIONS_PER_USER 4 CONNECT_TIME 60
IDLE_TIME 20 PRIVATE_SGA 100K
CPU_PER_CALL 1000;
Oracle 数据库基础教程2007
将概要文件分配给用户
CREATE USER user5 IDENTIFIED 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;
Oracle 数据库基础教程2007
删除概要文件
语法结构:
DROP PROFILE profile_name CASCADE ;
示例:
DROP PROFILE pwd_profile CASCADE ;
查询概要文件
USER_PASSWORD_LIMITS
USER_RESOURCE_LIMITS
DBA_PROFILES
Oracle 数据库基础教程2007
11.6利用 OEM进行安全管理
利用 OEM创建一个用户,并给用户授权
利用 OEM创建一个角色,并给角色授权
利用 OEM创建一个概要文件,并将概要文件指定给用户
利用角色为用户授权
Oracle 数据库基础教程2007
11.7小结
数据库的安全性
用户管理
权限管理
角色管理
概要文件管理
利用 OEM进行安全管理