16管理权限
管理权限
Oracle用户权限有两种类型:
System:允许用户在数据库中执行特定的操作
Object:允许用户访问和操作特定的对象
系统权限
超过100个不同的系统特权
privileges中的ANY关键字表示用户在任何模式中都具有特权。
GRANT命令用来为一个用户或一组用户添加权限。
REVOKE命令用于删除权限。
授予系统权限
使用GRANT命令授予系统权限。
被授予者可以通过ADMIN选项进一步授予系统特权。
GRANTCREATE SESSION TO emi;
GRANT CREATE SESSION TO emi WITH ADMIN OPTION;
谁可以授予或撤销?
只有两种类型的用户可以授予其他用户系统权限或撤销这些权限:
使用ADMIN选项被授予特定系统特权的用户。
具有系统权限的用户授予任何特权
因此,只将这些特权授予受信任的用户。
PUBLIC是数据库中定义的用户组;它不是数据库用户或角色。数据库中的每个用户都属于这个组。因此,如果将特权授予PUBLIC,则数据库的所有用户都可以使用这些特权。
系统权限限制
参数07_DICTIONARY_ACCESSIBILITY:
控制对SYSTEM特权的限制
如果设置为TRUE,则允许访问sYs模式中的对象默认为FALSE:
确保允许访问任何模式的系统特权不允许访问sYs模式
撤销系统权限
使用REVOKE命令删除用户的系统权限。
拥有ADMIN OPTION系统权限的用户可以撤销系统权限。
只有通过GRANT命令授予的特权才能被撤销。
REVOKE CREATE TABLE FROM em1;
使用ADMIN选项撤销
一些注意点
要连接到数据库,您需要CREATE SESSION权限。
要截断属于另一个模式的表,您需要DROP ANY table特权。
CREATE ANYPROCEDURE(或EXECUTE ANYPROCEDURE)权限允许用户创建、替换或删除(或执行)过程、包和函数;这包括Java类。
CREATE TABLE特权使您能够在模式中创建、修改、删除和查询表。
SELECT、INSERT、UPDATE和DELETE是对象权限,而SELECT ANY、INSERT ANY、UPDATE ANY和DELETE ANY是系统权限(换句话说,它们不适用于特定对象)。
授予系统权限(续)
WITH ADMIN OPTION:允许被授权者进一步将权限或角色
授予其他用户或角色授予任何对象特权:该系统特权允许用户代表对象所有者授予和撤销任何对象特权。这为数据库和应用程序管理员提供了一种方便的方法,可以在不需要连接到模式的情况下授予对任何模式中的对象的访问权。这样就不需要为模式所有者维护登录凭据,以便他们可以授予对对象的访问权限。它还减少了配置过程中所需的连接数量。此系统特权是DBA角色的一部分,因此可以(通过ADMIN OPTION)授予作为SYSDBA连接的任何用户。与其他系统特权一样,GRANT ANY OBJECT PRIVILEGE系统特权只能由拥有ADMIN OPTION的用户授予。当您使用GRANT ANY OBJECT PRIVILEGE系统特权向用户授予对象特权时,如果您已经通过GRANT OPTION拥有了对象特权,那么将按照通常的方式执行授予。在这种情况下,您成为授权的授予人。如果您不拥有对象特权。那么对象所有者将显示为授予者,即使具有GRANT ANY OBJECTPRIVILEGE系统权限的您实际执行了授予。
对象特权
授予对象权限
使用GRANT命令授予对象权限。
授予必须在授予者的模式中,或者授予者必须具有Grant OPTION。
GRANT EXECUTE ON dbms_output To jeff;
GRANT UPDATE ON emi.customers TO jeff WITH
GRANT OPTION;
撤销对象权限
使用REVOKE命令撤销对象权限。
撤销特权的用户必须是被撤销对象特权的原始授予者。
REVOKE SELECT ON emi.orders FROM jeff;
一些特点
对象权限可以授予用户、角色或PUBLIC。
如果一个视图引用了来自其他用户的表或视图,您必须对视图的基础表具有WITH GRANT OPTION权限,才能将视图上的任何权限授予其他用户。例如,JOHN拥有一个视图,该视图引用了JAMES的一个表。要将视图上的SELECT特权授予另一个用户,JOHN应该已经获得了表WITH grant OPTION上的SELECT特权。
在表上接收到的任何对象特权都为被授予者提供了锁定表的特权。
不能在列上指定SELECT特权;要授予columnlevel SELECT权限,请创建一个包含所需列的视图,并在该视图上授予SELECT权限。
您可以指定ALL或ALL PRIVILEGES来授予对象上所有可用的特权(例如,grant ALL on CUSTOMER to JAMES)。
即使您拥有DBA权限,要对其他用户拥有的对象授予权限,您也必须对该对象授予具有grant OPTION的适当权限。
在一条语句中可以向多个用户和/或角色授予多个权限。例如,将客户上的INSERT、UPDATE、SELECT权限授予ADMIN_ROLE、JULIE、SCOTT;
Predefined Roles
CONNECT连接数据库、创建集群、数据库链接、序列、同义词、表和视图以及修改会话的特权。
RESOURCE特权,用于创建集群、表和序列,以及创建可编程对象,如过程、函数、包、索引类型、类型、触发器和操作符。
DBA带有ADMIN选项的所有系统特权,因此可以将系统特权授予数据库的其他用户或角色。SELECT_CATALOG_ROLE查询字典视图和表的能力。
EXECUTE_CATALOG_ROLE执行字典包(sys拥有的包)的权限。
DELETE_CATALOG_ROLE删除或重新创建字典包的能力。
同样,当您运行catproc。SQL脚本作为数据库创建的一部分,脚本执行catexp。Sql,它创建了两个角色:
EXP_FULL_DATABASE使用Export实用程序对数据库进行完整和增量导出的能力。
IMP_FULL_DATABASE使用Import实用程序执行完整数据库导入的能力。这是一个非
常重要的角色。
建立默认角色
一个用户可以被分配多个角色。
用户可以被分配一个默认角色。
限制用户的默认角色数。
ALTER USER scott DEFAULT ROLE hr_clerk, oe_clerk; ALTER USER SCOtt DEFAULT ROLE ALL: ALTER USER SCOtt DEFAULT ROLE ALL EXCEPT hr_clerk; ALTER USER SCott DEFAULT ROLE NONE:
17
启用和禁用角色
禁用角色以暂时撤销用户的角色。
允许角色临时授予权限。
SET ROLE命令用来启用和禁用角色。
在登录时为用户启用默认角色。启用角色可能需要密码。
SET ROLE hr_clerk; SET ROLE oe_clerk IDENTIFIED BY order; SET ROLE ALL EXCEPT oe_clerk;
从用户撤销角色
从用户中撤销角色需要ADMIN选项或GRANT ANY ROLE权限。
取消一个角色:
REVOKE oe_clerk EROM scott; REVOKE hr_managerEROM PUBLIC
删除角色
删除角色:
从授予它的所有用户和角色中删除它
从数据库中删除
需要ADMIN选项或DROP ANY ROLE权限
删除角色命令:
DROP ROLE hr_manager;
应用程序角色
应用程序角色只能通过授权的PL/SQL包启用。
USING包子句创建一个应用程序角色。
CREATE ROLE admin_role IDENTIFIED USING hr.employee;
角色创建指南
默认角色指南
获取角色信息
角色信息可以通过以下视图查询:
DBA_ROLES:数据库中存在的所有角色
DBA_ROLE_PRIVS:已授予用户和角色的角色。
ROLE_ROL_PRIVS:已授予角色的角色
DBA_SYS_PRIVS:授予用户和角色的系统权限
ROLE_SYS_PRIVS:赋予角色的系统权限
ROLE_TAB_PRIVS:赋予角色的对象权限
SESSION_ROLES:用户当前已启用的角色
18审计
审计
审计是对选定的用户数据库操作的监视,用于:
调查可疑的数据库活动
收集关于特定数据库活动的信息
审计可以按会话或访问执行
审计类型
标准的审计。对SQL语句、特权、模式、对象、网络和多层活动使用标准审计。标准审核记录被写入以下位置之一:
SYS.AUDS系统表。可以通过查询DBA_AUDIT_TRAIL数据字典视图或DBA_COMMON_AUDIT TRAIL视图来查看该表的内容,DBA_COMMON_AUDIT TRAIL视图结合了标准和细粒度的审计日志记录。
操作系统文件。除了用操作系统文件格式编写审计跟踪之外,还可以用XML格式编写审计跟踪。请参见第6-20页的“管理操作系统审计跟踪”。
要控制如何编写标准审计跟踪记录,可以设置AUDIT_TRAIL初始化参数。AUDIT_TRAIL参数设置如表6-3所示。
细粒度的审计。使用细粒度审计来监视特定的活动,例如数据库表上的操作或活动发生的时间。细粒度审计记录写入SYS。FGA_LOG$系统表要查看该表的内容,请在DBA_FGA_AUDIT_TRAIL数据字典视图或DBA_ COMMON_AUDIT_TRAIL视图下查看。
要控制如何编写细粒度审计跟踪记录,可以在DBMS_FGA中设置audit_trail参数。ADD_POLICY过程。audit_trail参数将记录写入FGA_LOG$系统表或XML操作系统文件。
管理员审核。在UNIX系统上,您可以使用syslog审计跟踪监视系统管理员(用户SYS,以及具有sYSDBA或SYSOPER权限的用户)的活动。Syslog是另一种目标审计跟踪,类似于操作系统文件、XML格式文件和数据库表。在Windows上,这些活动与其他类型的活动一起记录在Windows事件日志中。
对于UNIX和Windows,要控制管理员审计文件的写入方式,可以设置以下初始化参数:
AUDIT_SYS_OPERATIONS参数。启用或禁用管理员审计。将其设置为TRUE将在包含审计跟踪的操作系统文件中记录系统管理员活动。
AUDIT_SYSLOG_LEVEL参数。当AUDIT_TRAIL参数设置为os时,使用syslog实用程序将SYS和标准操作系统审计记录写入系统审计日志。
审计准则
定义要审核的内容:
用户、语句或对象
语句执行执行
成功的语句、执行不成功的语句或两者都执行
管理您的审计跟踪:
监视审计跟踪的增长
保护审计跟踪免受未经授权的访问
审计类别
默认审计:
实例启动和实例关闭
管理员权限
数据库审计:
由DBA开启
无法记录列值
基于值的或应用程序审计:
通过代码实现
可以记录列值
用于跟踪对表的更改
审计选项
声明审计:
AUDIT TABLE;
特权审计:
AUDIT create any tirgger;
模式对象审计:
AUDIT SELECT ON emi.orders;
细粒度的审计:
提供基于内容的数据访问监控是否使用DBMS_FGA包实现
审计用户SYS
审计用户SYs提供:
额外的安全级别
AUDIT_SYS_OPERATIONS设置为True
不审计用户SYS:
将AUDIT_SYS_OPERATIONS设置为False
这是默认值。
获取审计信息
可以通过查询以下视图获取审计信息:
ALL_DEF_AUDIT_OPTS
DBA_STMT_AUDIT_OPTS
DBA_PRIV_AUDIT_OPTS
DBA_OBJ_AUDIT_OPTS
获取审计记录通知
审计记录信息可以通过以下视图获取:
DBA_AUDIT_TRAIL
DBA_AUDIT_EXISTS
DBA_AUDIT_OBJECT
DBA_AUDIT_SESSION
DBA_AUDIT_STATEMENT