Oracle 笔记(二)、安全管理
一、创建用户
二、用户授权
三、角色机制
四、配置模版及资源限制
附录
数据库安全的作用是控制用户是否能够对数据库及其中的对象执行操作。要连接到 Oracle 数据库,就需要创建一个用户帐户,该用户可以根据需要授予不同的操作权限。
一、创建用户 CREATE/ALTER/DROP USER xxxx [帮助文档]
CREATE USER prod4
IDENTIFIED BY ssss
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
删除一个用户时,会删除该用户所拥有的模式对象。DROP USER prod4 CASCADE;
二、用户授权 GRANT/REVOKE [帮助文档]
权限(privilege)即执行特定类型 SQL 语句的权利,若无任何权限,新创建用户将无法登陆 Oracle 数据库。
1、系统权限
系统权限(system privilege)允许用户执行某些数据库操作。
GRANT CONNECT,RESOURCE,DBA TO prod4
[WITH ADMIN OPTION];
CONNECT,RESOURCE,DBA 三个预定义的角色封装了大部分系统权限;
WITH ADMIN OPTION 选项使 被授权的用户 也可以把该权限赋予其他用户。(级联授权,A->B、B->C)
ps.更多的系统权限,请参考帮助文档 GRANT - Table 18-1 System Privileges。
2、模式对象权限
模式对象权限(schema object privilege)允许用户对某一特定对象执行特定操作。要授予对象权限,用户必须满足以下条件之一:
● 用户拥有指定对象;
● 或者用户已经拥有 GRANT OPTION (级联授权)的能力。
sys:
GRANT SELECT ON sys.test TO prod
[WITH GRANT OPTION];
prod:
SELECT * FROM sys.test;
ps.更多的模式对象权限,请参考帮助文档 GRANT - Table 18-3 Object Privileges Available for Particular Objects。
三、角色机制 CREATE/ALTER/DROP ROLE xxx [帮助文档]
角色(role)类似于操作系统中的用户组,它封装了多个权限。用户可以通过角色继承权限,从而简化权限的管理与控制。推荐使用基于角色授权,通过角色控制用户。
角色的使用注意:
● 角色不属于任何模式(schema)。因此,创建角色的用户可以被移除而不会对角色有所影响。
● 角色可以被授予其他角色。但是角色不能授予其自身,角色间也不能形成闭环。例如,当角色 B 已经被授予角色 A 时,角色 A 就不能再授予角色 B。
-- 创建角色 myrole 并赋予权限,然后将该角色赋予用户 prod(继承该角色) --
CREATE ROLE myrole;
GRANT SELECT ON sys.test TO myrole;
GRANT SELECT ON sys.test4 TO myrole;
GRANT myrole TO prod;
四、配置模版及资源限制 CREATE/ALTER/DROP PROFILE xxx
每个用户都对应一套配置模版(profile),其中描述了用户使用多种系统资源时的限制,具体包括:
● 用户能够建立的并发会话(concurrent session)数
● 用户会话及 SQL 语句对 Oracle 进行一次调用时可用的 CPU 处理时间
● 用户会话及 SQL 语句对 Oracle 进行一次调用时可用的逻辑 I/O(logical I/O)量
● 用户会话的最大空闲时间(idle time)
● 用户会话的最大连接时间(connect time)
● 密码限制规则:
多次尝试登录均失败时对帐户加锁
密码过期时间(expiration period)及宽限期(grace period)
密码重用(reuse)及复杂度(complexity)限制规则
附录
1、模式(schema):模式是指用户与其拥有对象的逻辑集合。
2、[转] Oracle 查看用户权限
ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
● USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
● ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
● DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES, INDEXES, OBJECTS, USERS等)
1.查看所有用户:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看用户系统权限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
6.查看当前用户的缺省表空间
select username,default_tablespace from user_users;
7.查看某个角色的具体权限,如grant connect,resource,create session,create view to TEST;
查看RESOURCE具有那些权限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
3、[转] 对象权限
模式对象/权限 | ALTER | DELETE | EXECUTE | INDEX | INSERT | READ | REFERENCE | SELECT | UPDATE |
Directory | √ | ||||||||
function | √ | ||||||||
procedure | √ | ||||||||
package | √ | ||||||||
DB Object | √ | ||||||||
Libary | √ | ||||||||
Operation | √ | ||||||||
Sequence | √ | ||||||||
Table | √ | √ | √ | √ | √ | √ | √ | ||
Type | √ | ||||||||
View | √ | √ | √ | √ |
对象由不止一个权限,特殊权限ALL可以被授予或撤销。如TABLE的ALL权限就包括:
SELECT,INSERT,UPDATE和DELETE,还有INDEX,ALTER,和REFERENCE。
4、[转] Oracle 9i预定义的角色
角色名称 | 说明 |
CONNECT |
数据库连接角色,用于连接数据库,具有创建簇、数据库链接、序列、同义词、表和视图,以及修改会话的权利 |
DBA |
数据库管理员角色,具有所有使用ADMIN选项创建的系统权限,可以将系统权限授予其他用户或角色 |
DELETE_CATALOG_ROLE |
删除目录角色,可以删除或重建数据字典 |
EXECUTE_CATALOG_ROLE |
执行目录角色,能够执行所有系统包 |
EXP_FULL_DATABASE |
能够使用导出程序执行数据库的完全和增量导出 |
IMP_FULL_DATABASE |
能够使用导入程序执行数据库的完全导入 |
RESOURCE |
可以创建簇、表、序列以及PL/SQL编程用方案对象,包括过程、程序包、触发器等 |
SELECT_CATALOG_ROLE |
查询数据字典表或视图 |
参考文章:
Oracle Concepts 中文版 (10g R2) -- 第 20 章,数据库安全