oracle审计功能讲述.docx

上传人:b****1 文档编号:2136321 上传时间:2023-05-02 格式:DOCX 页数:18 大小:25.24KB
下载 相关 举报
oracle审计功能讲述.docx_第1页
第1页 / 共18页
oracle审计功能讲述.docx_第2页
第2页 / 共18页
oracle审计功能讲述.docx_第3页
第3页 / 共18页
oracle审计功能讲述.docx_第4页
第4页 / 共18页
oracle审计功能讲述.docx_第5页
第5页 / 共18页
oracle审计功能讲述.docx_第6页
第6页 / 共18页
oracle审计功能讲述.docx_第7页
第7页 / 共18页
oracle审计功能讲述.docx_第8页
第8页 / 共18页
oracle审计功能讲述.docx_第9页
第9页 / 共18页
oracle审计功能讲述.docx_第10页
第10页 / 共18页
oracle审计功能讲述.docx_第11页
第11页 / 共18页
oracle审计功能讲述.docx_第12页
第12页 / 共18页
oracle审计功能讲述.docx_第13页
第13页 / 共18页
oracle审计功能讲述.docx_第14页
第14页 / 共18页
oracle审计功能讲述.docx_第15页
第15页 / 共18页
oracle审计功能讲述.docx_第16页
第16页 / 共18页
oracle审计功能讲述.docx_第17页
第17页 / 共18页
oracle审计功能讲述.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

oracle审计功能讲述.docx

《oracle审计功能讲述.docx》由会员分享,可在线阅读,更多相关《oracle审计功能讲述.docx(18页珍藏版)》请在冰点文库上搜索。

oracle审计功能讲述.docx

oracle审计功能讲述

Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象。

审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用。

下表中总结了Oracle数据库中不同类型的审计。

审计类型

说   明

语句审计

按照语句类型审计SQL语句,而不论访问何种特定的模式对象。

也可以在数据库中指定一个或多个用户,针对特定的语句审计这些用户

权限审计

审计系统权限,例如CREATETABLE或ALTERINDEX。

和语句审计一样,权限审计可以指定一个或多个特定的用户作为审计的目标

模式对象审计

审计特定模式对象上运行的特定语句(例如,DEPARTMENTS表上的UPDATE语句)。

模式对象审计总是应用于数据库中的所有用户

细粒度的审计

根据访问对象的内容来审计表访问和权限。

使用程序包DBMS_FGA来建立特定表上的策略

下面几节介绍DBA如何管理系统和对象权限使用的审计。

当需要一定的粒度时,DBA可以使用细粒度的审计来监控对表中某些行或列的访问,而不仅仅是是否访问表。

和审计相关的主要参数

SQL>showparameteraudit

audit_file_dest

audit_sys_operations

audit_trail

audit_sys_operations:

默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audittrail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn/assysdba这样的连接信息,只能记录在其它地方。

如果是windows平台,audtitrail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

audit_trail:

None:

是默认值,不做审计;

DB:

将audittrail记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;

DB,Extended:

这样审计结果里面除了连接信息还包含了当时执行的具体语句;

OS:

将audittrail记录在操作系统文件中,文件名由audit_file_dest参数指定;

XML:

10g里新增的。

10gValues:

∙none

Disablesdatabaseauditing.

∙os

Enablesdatabaseauditinganddirectsallauditrecordstotheoperatingsystem'saudittrail.

∙db

Enablesdatabaseauditinganddirectsallauditrecordstothedatabaseaudittrail(the SYS.AUD$ table).

∙db,extended

Enablesdatabaseauditinganddirectsallauditrecordstothedatabaseaudittrail(the SYS.AUD$ table).Inaddition,populatesthe SQLBIND and SQLTEXT CLOBcolumnsofthe SYS.AUD$ table.

∙xml

EnablesdatabaseauditingandwritesallauditrecordstoXMLformatOSfiles.

∙xml,extended

Enablesdatabaseauditingandprintsallcolumnsoftheaudittrail,includingSqlTextandSqlBindvalues.

注:

参数AUDIT_TRAIL不是动态的,为了使AUDIT_TRAIL参数中的改动生效,必须关闭数据库并重新启动。

在对SYS.AUD$表进行审计时,应该注意监控该表的大小,以避免影响SYS表空间中其他对象的空间需求。

推荐周期性归档SYS.AUD$中的行,并且截取该表。

Oracle提供了角色DELETE_CATALOG_ROLE,和批处理作业中的特殊账户一起使用,用于归档和截取审计表。

audit_file_dest:

Audit_trail=OS时文件位置

1.语句审计

所有类型的审计都使用audit命令来打开审计,使用noaudit命令来关闭审计。

对于语句审计,audit命令的格式看起来如下所示:

AUDITsql_statement_clauseBY{SESSION|ACCESS}

WHENEVER[NOT]SUCCESSFUL;

sql_statement_clause包含很多条不同的信息,例如希望审计的SQL语句类型以及审计什么人。

此外,希望在每次动作发生时都对其进行审计(byaccess)或者只审计一次(bysession)。

默认是bysession。

有时希望审计成功的动作:

没有生成错误消息的语句。

对于这些语句,添加wheneversuccessful。

而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。

对于这些情况,使用whenevernotsuccessful。

对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all而不是单个的语句类型或对象。

表1列出了可以审计的语句类型,并且在每个类别中包含了相关语句的简要描述。

如果指定all,则审计该列表中的任何语句。

然而,表2中的语句类型在启用审计时不属于all类别;必须在audit命令中显式地指定它们。

表1包括在ALL类别中的可审计语句

语句选项

SQL操作

ALTERSYSTEM

所有ALTERSYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话

CLUSTER

CREATE、ALTER、DROP或TRUNCATE集群

CONTEXT

CREATECONTEXT或DROPCONTEXT

DATABASELINK

CREATE或DROP数据库链接

DIMENSION

CREATE、ALTER或DROP维数

DIRECTORY

CREATE或DROP目录

INDEX

CREATE、ALTER或DROP索引

MATERIALIZEDVIEW

CREATE、ALTER或DROP物化视图

NOTEXISTS

由于不存在的引用对象而造成的SQL语句的失败

PROCEDURE

CREATE或DROPFUNCTION、LIBRARY、PACKAGE、PACKAGEBODY或PROCEDURE

PROFILE

CREATE、ALTER或DROP配置文件

PUBLICDATABASELINK

CREATE或DROP公有数据库链接

PUBLICSYNONYM

CREATE或DROP公有同义词

ROLE

CREATE、ALTER、DROP或SET角色

ROLLBACKSEGMENT

CREATE、ALTER或DROP回滚段

SEQUENCE

CREATE或DROP序列

SESSION

登录和退出

SYNONYM

CREATE或DROP同义词

SYSTEMAUDIT

系统权限的AUDIT或NOAUDIT

SYSTEMGRANT

GRANT或REVOKE系统权限和角色

TABLE

CREATE、DROP或TRUNCATE表

TABLESPACE

CREATE、ALTER或DROP表空间

TRIGGER

CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLEALLTRIGGERS或DISABLEALLTRIGGERS的ALTERTABLE

TYPE

CREATE、ALTER和DROP类型以及类型主体

USER

CREATE、ALTER或DROP用户

VIEW

CREATE或DROP视图

表2显式指定的语句类型

语句选项

SQL操作

ALTERSEQUENCE

任何ALTERSEQUENCE命令

ALTERTABLE

任何ALTERTABLE命令

COMMENTTABLE

添加注释到表、视图、物化视图或它们中的任何列

DELETETABLE

删除表或视图中的行

EXECUTEPROCEDURE

执行程序包中的过程、函数或任何变量或游标

GRANTDIRECTORY

GRANT或REVOKEDIRECTORY对象上的权限

GRANTPROCEDURE

GRANT或REVOKE过程、函数或程序包上的权限

GRANTSEQUENCE

GRANT或REVOKE序列上的权限

GRANTTABLE

GRANT或REVOKE表、视图或物化视图上的权限

GRANTTYPE

GRANT或REVOKETYPE上的权限

INSERTTABLE

INSERTINTO表或视图

LOCKTABLE

表或视图上的LOCKTABLE命令

SELECTSEQUENCE

引用序列的CURRVAL或NEXTVAL的任何命令

SELECTTABLE

SELECTFROM表、视图或物化视图

UPDATETABLE

在表或视图上执行UPDATE

一些示例可以帮助读者更清楚地了解所有这些选项。

在示例数据库中,用户KSHELTON具有HR模式和其他模式中所有表上的权限。

允许KSHELTON创建其中一些表上的索引,但如果有一些与执行计划改动相关的性能问题,则需要知道何时创建这些索引。

可以使用如下命令审计KSHELTON创建的索引:

SQL>auditindexbykshelton;

Auditsucceeded.

后面的某一天,KSHELTON在HR.JOBS表上创建了一个索引:

SQL>createindexjob_title_idxonhr.jobs(job_title);

Indexcreated.

检查数据字典视图DBA_AUDIT_TRAIL中的审计跟踪,可以看到KSHELTON实际上在8月12日的5:

15P.M.创建了索引:

SQL>selectusername,to_char(timestamp,'MM/DD/YYHH24:

MI')Timestamp,

2obj_name,action_name,sql_textfromdba_audit_trail

3whereusername='KSHELTON';

USERNAMETIMESTAMPOBJ_NAMEACTION_NAMESQL_TEXT

-------------------------------------------------------------------

KSHELTON08/12/0717:

15JOB_TITLE_IDXCREATEINDEXcreateindexhr.

job_title_idxon

hr.jobs(job_title)

1rowselected.

注意:

从OracleDatabase11g开始,只有在初始参数AUDIT_TRAIL被设置为DB_EXTENDED时,才填充DBA_AUDIT_TRAIL中的列SQL_TEXT和SQL_BIND。

默认情况下,AUDIT_TRAIL的值是DB。

为了关闭HR.JOBS表上KSHELTON的审计,可以使用noaudit命令,如下所示:

SQL>noauditindexbykshelton;

Noauditsucceeded.

也可能希望按常规方式审计成功的和不成功的登录,这需要两个audit命令:

SQL>auditsessionwheneversuccessful;

Auditsucceeded.

SQL>auditsessionwhenevernotsuccessful;

Auditsucceeded.

2.权限审计

审计系统权限具有与语句审计相同的基本语法,但审计系统权限是在sql_statement_clause中,而不是在语句中,指定系统权限。

例如,可能希望将ALTERTABLESPACE权限授予所有的DBA,但希望在发生这种情况时生成审计记录。

启用对这种权限的审计的命令看起来类似于语句审计:

SQL>auditaltertablespacebyaccesswheneversuccessful;

Auditsucceeded.

每次成功使用ALTERTABLESPACE权限时,都会将一行内容添加到SYS.AUD$。

使用SYSDBA和SYSOPER权限或者以SYS用户连接到数据库的系统管理员可以利用特殊的审计。

为了启用这种额外的审计级别,可以设置初始参数AUDIT_SYS_OPERATIONS为TRUE。

这种审计记录发送到与操作系统审计记录相同的位置。

因此,这个位置是和操作系统相关的。

当使用其中一种权限时执行的所有SQL语句,以及作为用户SYS执行的任何SQL语句,都会发送到操作系统审计位置。

模式对象审计

审计对各种模式对象的访问看起来类似于语句审计和权限审计:

AUDITschema_object_clauseBY{SESSION|ACCESS}

WHENEVER[NOT]SUCCESSFUL;

schema_object_clause指定对象访问的类型以及访问的对象。

可以审计特定对象上14种不同的操作类型,下表中列出了这些操作。

对象选项

说   明

ALTER

改变表、序列或物化视图

AUDIT

审计任何对象上的命令

COMMENT

添加注释到表、视图或物化视图

DELETE

从表、视图或物化视图中删除行

EXECUTE

执行过程、函数或程序包

FLASHBACK

执行表或视图上的闪回操作

GRANT

授予任何类型对象上的权限

INDEX

创建表或物化视图上的索引

INSERT

将行插入表、视图或物化视图中

LOCK

锁定表、视图或物化视图

READ

对DIRECTORY对象的内容执行读操作

RENAME

重命名表、视图或过程

SELECT

从表、视图、序列或物化视图中选择行

UPDATE

更新表、视图或物化视图

如果希望审计HR.JOBS表上的所有insert和update命令,而不管谁正在进行更新,则每次该动作发生时,都可以使用如下所示的audit命令:

SQL>auditinsert,updateonhr.jobsbyaccesswheneversuccessful;

Auditsuccessful.

用户KSHELTON决定向HR.JOBS表添加两个新行:

SQL>insertintohr.jobs(job_id,job_title,min_salary,max_salary)

2 values('IN_CFO','InternetChiefFunOfficer',7500,50000);

1rowcreated.

SQL>insertintohr.jobs(job_id,job_title,min_salary,max_salary)

2 values('OE_VLD','OrderEntryCCValidation',5500,20000);

1rowcreated.

查看DBA_AUDIT_TRAIL视图,可以看到KSHELTON会话中的两个insert命令:

USERNAME  TIMESTAMP     OWNER   OBJ_NAME  ACTION_NAME

SQL_TEXT

---------------------------------------------------------

---------------------------------------------------------------

KSHELTON  08/12/0722:

54HR      JOBS      INSERT

insertintohr.jobs(job_id,job_title,min_salary,max_salary)

values('IN_CFO','InternetChiefFunOfficer',7500,50000);

KSHELTON  08/12/0722:

53HR      JOBS      INSERT

insertintohr.jobs(job_id,job_title,min_salary,max_salary)

values('OE_VLD','OrderEntryCCValidation',5500,20000);

KSHELTON  08/12/0722:

51                    LOGON

3rowsselected.

 

4.细粒度的审计

从Oracle9i开始,通过引入细粒度的对象审计,或称为FGA,审计变得更为关注某个方面,并且更为精确。

由称为DBMS_FGA的PL/SQL程序包实现FGA。

使用标准的审计,可以轻松发现访问了哪些对象以及由谁访问,但无法知道访问了哪些行或列。

细粒度的审计可解决这个问题,它不仅为需要访问的行指定谓词(或where子句),还指定了表中访问的列。

通过只在访问某些行和列时审计对表的访问,可以极大地减少审计表条目的数量。

程序包DBMS_FGA具有4个过程:

ADD_POLICY

添加使用谓词和审计列的审计策略

DROP_POLICY

删除审计策略

DISABLE_POLICY

禁用审计策略,但保留与表或视图关联的策略

ENABLE_POLICY

启用策略

用户TAMARA通常每天访问HR.EMPLOYEES表,查找雇员的电子邮件地址。

系统管理员怀疑TAMARA正在查看经理们的薪水信息,因此他们建立一个FGA策略,用于审计任何经理对SALARY列的任何访问:

begin

dbms_fga.add_policy(

object_schema=>  'HR',

object_name=>    'EMPLOYEES',

policy_name=>    'SAL_SELECT_AUDIT',

audit_condition=>'instr(job_id,''_MAN'')>0',

audit_column=>   'SALARY'

);

end;

可以使用数据字典视图DBA_FGA_AUDIT_TRAIL访问细粒度审计的审计记录。

如果一般需要查看标准的审计行和细粒度的审计行,则数据字典视图DBA_COMMON_AUDIT_TRAIL结合了这两种审计类型中的行。

继续看示例,用户TAMARA运行了如下两个SQL查询:

SQL>selectemployee_id,first_name,last_name,emailfromhr.employees

2    whereemployee_id=114;

EMPLOYEE_IDFIRST_NAME          LAST_NAME                EMAIL

--------------------------------------------------  --------------

114   Den                  Raphaely                 DRAPHEAL

1rowselected.

SQL>selectemployee_id,first_name,last_name,salaryfromhr.employees

2    whereemployee_id=114;

EMPLOYEE_IDFIRST_NAME          LAST_NAME                    SALARY

----------------------------------------------------  ----------

114   Den                  Raphaely                      11000

1rowselected.

第一个查询访问经理信息,但没有访问SALARY列。

第二个查询与第一个查询相同,但是访问了SALARY列,因此触发了FGA策略,从而在审计跟踪中生成了一行:

SQL>selectto_char(timestamp,'mm/dd/yyhh24:

mi')timestamp,

2     object_schema,object_name,policy_name,statement_type

3 fromdba_fga_audit_trail

4 wheredb_user='TAMARA';

TIMESTAMP       OBJECT_SCHEMA OBJECT_NAME    POLICY_NAME      STATEMENT_TYPE

-------------- ------------- ------------- ---------------- --------------

08/12/0718:

07 HR              EMPLOYEES      SAL_SELECT_AUDIT SELECT

1rowselected.

因为在本章前面的VPD示例中建立了细粒度的访问控制来阻止对SALARY列的未授权访问,因此需要加倍检查策略函数,确保仍然正确限制了SALARY信息。

细粒度的审计以及标准审计是确保首先正确建立授权策略的好方法。

5.与审计相关的数据字典视图

下表包含了与审计相关的数据字典视图。

数据字典视图

说   明

AUDIT_ACTIONS

包含审计跟踪动作类型代码的描述,例如INSERT、DROPVIEW、DELETE、LOGON和LOCK

DBA_AUDIT_OBJECT

与数据库中对象相关的审计跟踪记录

DBA_AUDIT_POLICIES

数据库中的细粒度审计策略

DBA_AUDIT_SESSION

与CONNECT和DISCONNECT相关的所有审计跟踪记录

DBA_AUDIT_STATEMENT

与GRANT、REVOKE、AUDIT、NOAUDIT和ALTERSYSTEM命令相关的审计跟踪条目

DBA_AUDIT_TRAIL

包含标准审计跟踪条目。

USER_AUDIT_TRAILUSER_TRAIL_AUDIT只包含已连接用户的审计行

DBA_FGA_AUDIT_TRAIL

细粒度审计策略的审计跟踪条目

 

              

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2