九、安全(一)
9.1安全体系
Oracle的安全体系包括:
l 物理层安全性:数据库所在节点必须在物理上得到可靠的保护。
l 用户层安全性:那些用户可以使用数据库,使用数据库的那些对象,具有什么样的权限。
l 操作系统层安全性:操作系统安全。
l 网络层安全性:通过分发wallet、数字证书、SSL安全套接字和数据密钥来保证网络层安全。
当然我不可能在这里将整个oracle的安全体系全部阐述完。看看比较重要一些东西。
9.2 概要文件
概要文件是oracle安全的重要组成部分,利用概要文件可以对数据库用户进行基本的资源限制,并且可以对用户的口令进行管理。
上图列出了概要文件的基本语法。
当然我们也通过控制台来完成上述配置。
上图显示了通过OEM控制台来完成同样的SQL语句,还是图形的比较方便。
9.3用户
1.创建用户的语法:
CREATE USER user
IDENTIFIED {BY password | EXTERNALLY}
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {integer [K|M] | UNLIMITED} ON tablespace] ...
[PROFILE profile]
例如:
当然这个时候我们创建的coffee_liu这个用户还不能连接到数据库,因为没有给他授予权限。
下面我们给coffee_liu授予连接到数据库的权限。
Grant create session to coffee_liu;
或者直接将connect角色付给coffee_liu
Grant connect to coffee_liu;
2.修改用户
语法:
ALTER USER user
[IDENTIFIED {BY password | EXTERNALLY}]
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {integer [K|M] | UNLIMITED} ON tablespace] ...
[PROFILE profile]
[DEFAULT ROLE { role [, role] ...
| ALL [EXCEPT role [, role] ...]
| NONE}]
例如:
Alter user coffee_liu
Identified by coffee_liu ;//修改自己的密码
作为管理员来说,我们还可以锁定帐号、使帐号过期和删除帐号
Alter user coffee_liu account lock;//锁定
Alter user coffee_liu account unlock;//解锁
Alter user coffee_liu password expire;//使密码过期
Drop user coffee_liu cascade;//删除帐号
9.4权限/角色
Oracle通过系统权限和用户权限来限制用户可以干什么,不可以干什么。
角色是命名的权限合集,其可以用来简化权限管理工作。实际上我们可以将权限直接赋予用户,也可以将很多的特定的权限打包分配给角色,然后将角色再分配给用户。这个原理有点像,我们windows地下的:用户-用户组-权限的关系,角色相当于用户组。
对于权限来说又可分为:
l 系统权限:在数据库级别执行某种操作,或者针对某一类的模式或非模式对象执行某种操作的能力。
l 对象权限:针对某个特定的模式对象执行各种操作的权力
系统权限:这里只列出了一部分,打字实在很累。
权限 |
所能实现的操作 |
分析 |
|
ANALYZE ANY |
分析数据库中的任何表、簇或索引 |
审计 |
|
AUDIT ANY |
审计数据库中的任何模式对象 |
AUDIT SYSTEM |
启用与停用语句和特权的审计选项 |
簇 |
|
CREATE CLUSTER |
在自有的模式中创建一个簇 |
CREATE ANY CLUSTER |
在任何一个模式中创建一个簇;操作类似于 |
|
CREATE ANY TABLE |
ALTER ANY CLUSTER |
改变数据库中的任何一个簇 |
DROP ANY CLUSTER |
删除数据库中的任何一个簇 |
数据库 |
|
ALTER DATA BASE |
改变数据库;不管操作系统的特权,经由Oracle把文件添加到操作 |
|
系统中 |
数据库链接 |
|
CREATE DATABASE LINK |
在自有模式中创建专用数据库链接 |
索引 |
|
CREATE ANY INDEX |
在任何表的任何模式中创建一条索引 |
ALTER ANY INDEX |
改变数据库中的任何索引 |
DROP ANY INDEX |
删除数据库中的任何索引 |
库 |
|
CREATE LIBRARY |
在自有模式中创建调出库 |
CREATE ANY LIBRARY |
在任何模式中创建调出库 |
DROP LIBRARY |
删除自有模式中的调出库 |
DROP ANY LIBRARY |
删除任何模式中的调出库 |
特权 |
|
GRANT ANY PRIVILEGE |
授予任何系统特权(不包括对象特权) |
过程 |
|
CREATE PROCEDURE |
在自有模式中创建存储的过程、函数和包 |
CREATE ANY PROCEDURE |
在任何模式中创建存储的过程、函数和包(这要求用户还要有A LT E R |
|
ANY TABLE 、BACKUP ANY TA B LE 、DROP ANY TABLE 、SELECT ANY |
|
TABLE 、INSERT ANY TABLE 、UPDATE ANY TABLE 、DELETE ANY |
|
TABLE 或GRANT ANY TABLE 特权 |
ALTER ANY PROCEDURE |
编译任何模式中的任何存储的过程、函数或包 |
DROP ANY PROCEDURE |
删除任何模式中的任何存储的过程、函数或包 |
EXECUTE ANY PROCEDURE |
执行任何过程或函数(独立的或成组的),或在任何模式中引用任何 |
|
公共包变量 |
环境资源文件 |
|
CREATE PROFILE |
创建环境资源文件 |
ALTER PROFILE |
改变数据库中的任何环境资源文件 |
DROP PROFILE |
删除数据库中的任何环境资源文件 |
ALTER RESOURCE COST |
设置所有的用户会话中使用的资源开销 |
特权 |
所能实现的操作 |
公共数据库链接 |
|
CREATE PUBLIC DATABASE LINK |
创建公共数据库链接 |
DROP PUBLIC DATABASE LINK |
删除公共数据库链接 |
公共同义词 |
|
CREATE PUBLIC SYNONYM |
创建公共同义词 |
DROP PUBLIC SYNONYM |
删除公共同义词 |
角色 |
|
CREATE ROLE |
创建角色 |
ALTER ANY ROLE |
改变数据库中的任何一个角色 |
DROP ANY ROLE |
删除数据库中的任何一个角色 |
GRANT ANY ROLE |
授权数据库中的任何一个角色 |
回滚段 |
|
CREATE ROLLBACK SEGMENT |
创建回滚段 |
ALTER ROLLBACK SEGMENT |
改变回滚段 |
DROP ROLLBACK SEGMENT |
删除回滚段 |
会话 |
|
CREATE SESSION |
连接到数据库 |
ALTER SESSION |
发出A LTER SESSION 语句 |
RESTRICTED SESSION |
当数据库利用S TA RTUP RESTRICT 启动时进行连接(O S O P E R与 |
|
O S D B A角色包含此特权) |
序列 |
|
CREATE SEQUENCE |
在自有模式中创建序列 |
CREATE ANY SEQUENCE |
在任何模式中创建任何序列 |
ALTER ANY SEQUENCE |
在任何模式中改变任何序列 |
DROP ANY SEQUENCE |
在任何模式中删除任何序列 |
SELECT ANY SEQUENCE |
在任何模式中引用任何序列 |
快照 |
|
CREATE SNAPSHOT |
在自有模式中创建快照(用户还必须具有C R E ATE TA B L E 特权) |
CREATE ANY SNAPSHOT |
在任何模式中创建快照(用户还必须具有CREATE ANY TABLE特权) |
ALTER SNAPSHOT |
改变任何模式中的任何快照 |
DROP ANY SNAPSHOT |
删除任何模式中的任何快照 |
同义词 |
|
CREATE SYNONYM |
在自有模式中创建同义词 |
CREATE ANY SYNONYM |
在任何模式中创建任何同义词 |
DROP ANY SYNONYM |
在任何模式中删除任何同义词 |
系统 |
|
ALTER SYSTEM |
发出A LTER SYSTEM 语句 |
表 |
|
CREATE TABLE |
在自有模式中创建表。还使被授权者能在自有模式下的表中创建索 |
|
引,包括那些用于完整性约束的索引(被授权者必须有表空间的定额 |
|
或UNLIMITED TA B L E S PA C E 特权) |
CREATE ANY TABLE |
在任何模式中创建表(假如被授权者有C R E ATE ANY TA B L E 特权并 |
|
在另一个用户模式中创建了一张表,那么拥有者必须在那个表空间上 |
|
有空间定额。表的拥有者不必具有C R E AT [ANY] TA B L E 特权) |
ALTER ANY TABLE |
改变任何模式中的任何表并编译任何模式中的任何视图 |
BACKUP ANY TA B L E |
在任何模式中使用表的导出工具执行一个增量导出操作 |
DROP ANY TA B L E |
删除或截断任何模式中的任何表 |
LOCK ANY TA B L E |
锁定任何模式中的任何表或视图 |
特权 |
所能实现的操作 |
COMMENT ANY TA B L E |
对任何模式中的任何表、视图或列进行注释 |
SELECT ANY TA B L E |
对任何模式中的任何表、视图或快照进行查询 |
INSERT ANY TA B L E |
把行插入到任何模式中的任何表或视图中 |
UPDATE ANY TA B L E |
修改任何模式中的任何表或视图中的行 |
DELETE ANY TA B L E |
删除任何模式中的任何表或视图中的行 |
表空间 |
|
CREATE TABLESPACE |
创建表空间;不管用户有何操作系统特权,经由O r a c l e把文件添加 |
|
到操作系统中 |
ALTER TABLESPACE |
改变表空间;不管用户有何操作系统特权,经由O r a c l e把文件添加 |
|
到操作系统中 |
MANAGE TABLESPACE |
使任何表空间脱机,使任何表空间联机,开始和结束对任何表空间 |
|
的备份 |
DROP TABLESPACE |
删除表空间 |
UNLIMITED TABLESPACE |
使用任何没有数量限制的表空间。此特权忽略了所分配的任何具体 定额。假如被取消的话,被授权者的模式对象仍然保留,但是进一步 的表空间分配被拒绝,除非这一分配是具体的表空间定额允许的。此 系统特权仅可以授予用户,而不授予角色。一般而言,应分配具体的 表空间定额,而不授予此系统特权 |
事务 |
|
FORCE TRANSACTION |
强迫提交或回滚本地数据库中悬而未决的自有的分布式事务 |
FORCE ANY TRANSACTION |
强迫提交或回滚本地数据库中悬而未决的任何分布式事务 |
触发器 |
|
CREATE TRIGGER |
在自有模式中创建触发器 |
CREATE ANY TRIGGER |
在任何模式中创建与任何模式的任何表相关的任何触发器 |
ALTER ANY TRIGGER |
启用、停用或编译任何模式中的任何触发器 |
DROP ANY TRIGGER |
删除任何模式中的任何触发器 |
用户 |
|
CREATE ANY USER |
创建用户;分配任意表空间上的定额,设置缺省和临时表空间,指 |
|
定一个环境资源文件(在C R E ATE USER 语句中) |
BECOME ANY USER |
成为另一个用户(这是任何一个执行完全数据库导入的用户所需要的) |
ALTER USER |
改变其他用户:修改任意用户的口令或验证方法,分配表空间定额, |
|
设置缺省或临时表空间,在A LTER USER 语句中指定环境资源文件与 |
|
缺省角色(不必改变自有口令) |
DROP USER |
删除另一个用户 |
视图 |
|
CREATE VIEW |
在自有模式中创建视图 |
CREATE ANY VIEW |
在任意模式中创建视图。要在另一个用户模式中创建视图,你必须 |
|
具有C R E ATE ANY VIEW 特权,拥用者必须在该视图引用的对象上具 |
|
有所需的特权 |
DROP ANY VIEW |
删除任意模式中的任意视图 |
对象权限:
对象 |
适用对象 |
允许操作 |
SELECT |
表、视图、序列 |
查询 |
UPDATE |
表、视图、字段 |
更新 |
DELETE |
表、视图 |
删除 |
INSERT |
表、视图、字段 |
插入 |
EXECUTE |
存储过程、存储函数包 |
执行PL/SQL |
READ |
目录 |
读取目录 |
INDEX |
表 |
建立索引 |
REFERENCE |
表、字段 |
外码能引用其字段 |
ALTER |
表、序列 |
修改表、序列结构 |
如何授权,我们下次再说。