Oracle学习笔记9_管理用户,权限,角色以及审计

本文详细阐述了Oracle数据库中的用户管理,包括创建用户、权限分配、表空间配额、删除用户,以及系统权限和对象权限的区别。同时介绍了审计功能,如标准审计、细粒度审计和管理员审计,以及如何监控和管理审计信息。
摘要由CSDN通过智能技术生成

用户与安全

数据库模式

模式是一个命名的对象集合。

创建用户,并创建相应的模式。

一个用户只能与一个模式相关联。

用户名和模式通常可以互换使用。

创建用户检查表

  • 确定用户必须在其中存储对象的表空间。
  • 决定每个表空间的配额。
  • 分配默认表空间和临时表空间。
  • 创建用户。
  • 授予用户权限和角色。

数据库认证

设置初始密码:

CREATE USER aaron
IDENTIFIED BY 口令
DEFAULT TABLESPACE data
TEMPORARY TABLESPACE temp
QUOTA 15M ON data
QUOTA 10M ON users
PASSWORD EXPIRE;

操作系统认证

  • OS_AUTHENT_PREFIX初始化参数指定用户名的格式。
  • 默认为OPS$。
CREATE USER aaron
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE temp
QUOTA 15m ON data;

表空间用户配额

在以下情况下,可以修改用户的表空间配额:

  • 用户所拥有的表呈现出意想不到的增长。
  • 应用程序得到增强,需要额外的表或索引。
  • 对象被重新组织并放置在不同的表空间中。

修改用户的表空间配额,输入如下命令:

ALTER USER aaron
QUOTA O ON USERS;

删除用户

使用DROP命令删除用户。

SROP USER aaron;

类中的所有对象都使用CASCADE子句如果模式包含对象,则使用。

DROP USER aaron CASCADE;

不能删除当前连接到Oracle服务器的用户。

获取用户信息

用户信息可以通过以下视图查询:

  • BDA_USERS
  • DBA_TS_QUOTAS

管理权限

Oracle用户权限有两种类型:

  • System:允许用户在数据库中执行特定的操作
  • Object:允许用户访问和操作特定的对象

SYSTEM系统权限

  • 超过100个不同的系统特权
  • privileges中的ANY关键字表示用户在任何模式中都具有特权。
  • GRANT命令用来为一个用户或一组用户添加权限。
  • REVOKE命令用于删除权限。

例子

授予系统权限

使用GRANT命令授予系统权限。

被授予者可以通过ADMIN选项进一步授予系统特权。

GRANT CREATE SESSION TO emi;
授权传递性
GRANT CREATE SESSION TO emi WITH ADMIN OPTION;

谁可以授予或撤销?

只有两种类型的用户可以授予其他用户系统权限或撤销这些权限:

  • 被授予ADMIN OPTION特定系统权限的用户
  • 具有系统权限的用户GRANT ANY PRIVILEGE

因此,只将这些特权授予受信任的用户。

PUBLIC

PUBLIC是数据库中定义的用户组;它不是数据库用户,也不是角色。数据库中的每个用户都属于这个组。因此,如果将权限授予PUBLIC,则数据库的所有用户都可以使用这些权限。

SYSDBA和SYSOPER

系统权限举例

系统权限限制

参数07_DICTIONARY_ACCESSIBILITY:

  • 控制对SYSTEM权限的限制
  • 如果设置为TRUE,则允许访问sYs模式中的对象
  • 默认为FALSE:确保允许访问任何模式的系统特权不允许访问SYS模

撤销系统权限

使用REVOKE命令删除用户的系统权限。

拥有ADMIN OPTION系统权限的用户可以撤销系统权限。

只有通过GRANT命令授予的特权才能被撤销。

REVOKE CREATE TABLE FROM emi;

使用ADMIN OPTION撤销

Some Point

  • 要连接到数据库,您需要CREATE SESSION权限。
  • 要截断属于另一个模式的表,您需要DROP ANY TABLE特权。
  • CREATE ANY PROCEDURE(或EXECUTE ANY PROCEDURE)权限允许用户创建、替换或删除(或执行)过程、包和函数;这包括Java类。
  • CREATE TABLE权限使您能够在模式中创建、修改、删除和查询表。
  • SELECT、INSERT、UPDATE和DELETE是对象权限,但是SELECT ANY、INSERT ANY、UPDATE ANY和DELETE ANY是系统权限(换句话说,它们不适用于特定对象)。

OBJECT对象特权

授予对象权限

使用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;

带有授予选项的撤销

Some Point

  • 对象权限可以授予用户、角色或PUBLIC。
  • 如果一个视图引用了来自其他用户的表或视图,您必须对视图的基础表具有WITH GRANT OPTION权限,才能将视图上的任何权限授予其他用户。例如,JOHN拥有一个视图,该视图引用了JAMES的一个表。要将视图上的SELECT权限授予另一个用户,JOHN应该在表WITH grant OPTION上获得SELECT权限。
  • 在表上接收到的任何对象特权都为被授予者提供了锁定表的特权。
  • 不能在列上指定SELECT特权;要授予列级SELECT权限,请创建一个包含所需列的视图,并在视图上授予SELECT权限。
  • 您可以指定ALL或ALL PRIVILEGES来授予对象上所有可用的特权(例如,grant ALL on CUSTOMER to JAMES)。
  • 即使您拥有DBA权限,要对其他用户拥有的对象授予权限,您也必须对该对象授予具有grant OPTION的适当权限。
  • 在一条语句中可以向多个用户和/或角色授予多个权限。例如GRANT INSERT, UPDATE, SELECT ON CUSTOMER TO ADMIN_ROLE, JULIE, SCOTT;

管理角色

预定义的角色

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 SCOt DEFAULT ROLE ALL EXCEPT
    hr_clerk;
ALTER USER scott DEFAULT ROLE NONE;

启用和禁用角色

  • 禁用角色以暂时撤销用户的角色。
  • 允许角色临时授予权限。
  • 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_manager FROM PUBLIC;

删除角色

  • 从授予它的所有用户和角色中删除它
  • 从数据库中删除它

需要ADMIN选项或DROP ANY ROLE权限

DROP ROLE hr_manager;

应用程序角色

应用程序角色只能通过授权的PLISQL包启用。

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:用户当前已启用的角色

审计

audit_trail设置为db,extended或os时与不开启审计日志相比,开启审计日志将多消耗2-3%的cpu

审计是对选定的用户数据库操作的监视,用于:

  • 调查可疑的数据库活动
  • 收集有关特定数据库活动的信息

审计可以按会话或访问执行

审计的类型

Standard auditing. 对SQL语句、特权、模式、对象、网络和多层活动使用标准审计。标准审计记录被写入以下位置之一:

  • SYS.AUD$ system table. 您可以通过查询DBA_AUDIT_TRAIL数据字典视图或DBA_COMMON_AUDIT TRAIL视图来查看该表的内容,DBA_COMMON_AUDIT TRAIL视图结合了标准和细粒度的审计日志记录。
  • Operating system files. 除了用操作系统文件格式编写审计跟踪外,还可以用XML格式编写。

要控制如何编写标准审计跟踪记录,可以设置AUDIT_TRAIL初始化参数。

Fine-grained auditing. 使用细粒度审计来监视特定的活动,例如数据库表上的操作或活动发生的时间。细粒度的审计记录被写入SYS。FGA_LOG$ system表。要查看该表的内容,可以查询DBA_FGA_AUDIT_TRAIL数据字典视图或DBA_ COMMON_AUDIT_TRAIL视图。

要控制如何编写细粒度审计跟踪记录,可以在DBMS_FGA中设置audit_trail参数。ADD_POLICY过程。audit_trail参数将记录写入FGA_LOG$系统表或XML操作系统文件。

Administrator auditing. 在UNIX系统上,可以通过syslog审计跟踪来监视系统管理员(用户SYS,以及具有sYSDBA或SYSOPER权限的连接用户)的活动。Syslog是另一种目的审计跟踪,类似于操作系统文件、XML格式文件和数据库表。在Windows上,这些活动与其他类型的活动一起记录在Windows事件日志中。

对于UNIX和Windows,要控制管理员审计文件的写入方式,可以设置以下初始化参数:

  • AUDIT_SYS_OPERATIONS参数。启用或禁用管理员审计。将其设置为TRUE将系统管理员活动记录在包含审计跟踪的操作系统文件中。
  • AUDIT_SYSLOG_LEVEL参数。当AUDIT_TRAIL参数设置为oS时,通过syslog实用程序将SYS和标准操作系统审计记录写入系统审计日志。

审计准则

定义要审核的内容:

  • 用户、语句或对象
  • 语句执行
  • 语句执行成功或不成功

管理您的审计跟踪:

  • 监视审计跟踪的增长
  • 保护审计跟踪免受未经授权的访问

审计类别

默认审计:

  • 实例启动和实例关闭
  • 管理员权限

数据库审计:

  • 由DBA启用
  • 不能记录列值

基于值的或应用程序审计:

  • 通过代码实现
  • 可以记录列值
  • 用于跟踪对表的更改

数据库审计

审计选项

标准审计(Standard Auditing)

声明审计:

AUDIT TABLE;

特权审计:

AUDIT create any trigger;

模式对象审计:

AUDIT SELECT ON emi.orders;

Fine-grained auditing

  • 提供基于内容的数据访问监控
  • 是否使用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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值