数据库审计全

来源:二年级 发布时间:2020-07-23 点击:

 数据库审计 查瞧数据库审计就是否打开 SQL> show parameter audit; NAME

  TYPE

 VALUE —-—--———-------—-—--——-—--——-------- ———--———--- ———----———---——--—---—--—--——- audit_

 string

 /oracle/app/oracle/admin/PTBCS/adump audit_sys_operations

  boolean

  FALSE audit_syslog_level

  string

  audit_trail

 string

 DB_EXTENDED audit_sys_operations:默认为 false,当设置为 true 时,所有 sys(包括以 sysdba,sysopr身份登录得用户)操作都会被记录,但记录不会被写在 aud$表中。如果为 windows 平台,会记录在windows 事件管理当中。

 audit_trail:

 none为默认值,11G之后默认值为‘db’,如果默认值为 none,那么不做审计 DB:将 audit trail 记录在数据库审计相关得表中,审计只有连接信息 DB_EXTENDED:这样审计还包含当时得执行得具体语句 OS:将 audit trail 记录在系统文件中,文件名有 audit_参数指定 修改语句为 SQL> alter system set audit_trail=’db_extended" scope=spfile; 注:参数 audit_trail 不就是动态,为了使此参数中得改动生效,必须关闭数据库并重新启动。在对 sys、aud$进行审计时,还需要监控该表得大小,以免影响system 表空间中其她对象得空间需求。

 推荐周期性归档 sys、aud$中得行,并截取该表。

 目前采用计划任务,每日删除上月数据,只保留当月数据。

 Audit_时,文件位置. 语句审计 SQL> audit on table by access; 每次动作发生时都对其进行审计 SQL〉 audit on table by session; 只审计一次,默认为 by session

 有时希望审计成功得动作:没有生成错误消息得语句。对于这些语句,添加whenever successful。而有时只关心使用审计语句得命令就是否失败,失败原因就是权限违犯、用完表空间中得空间还就是语法错误.对于这些情况,使用 whenever not successful. 对于大多数类别得审计方法,如果确实希望审计所有类型得表访问或某个用户得任何权限,则可以指定 all 而不就是单个得语句类型或对象. SQL> audit alter system ; 所有 ALTER SYSTEM 选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话

 SQL〉 audit cluster; CREATE、ALTER、DROP 或 TRUNCATE 集群 SQL〉 audit context; CREATE CONTEXT或 DROP CONTEXT ; SQL> audit database link; CREATE或 DROP 数据库链接 ; SQL> audit dimension; CREATE、ALTER 或 DROP 维数 SQL> audit directory; CREATE 或 DROP 目录 ; SQL〉 audit index; CREATE、ALTER 或 DROP索引 SQL〉 audit materialized view; CREATE、ALTER 或 DROP物化视图 SQL> audit not exists; 由于不存在得引用对象而造成得 SQL 语句得失败 ; SQL> audit procedure; CREATE 或 DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或 PROCEDURE

 SQL〉 audit profile; CREATE、ALTER 或DROP 配置文件 SQL〉 audit public database link; CREATE 或 DROP 公有数据库链接

 SQL〉 audit public synonym; CREATE或 DROP 公有同义词 SQL> audit role; CREATE、ALTER、DROP 或 SET 角色 SQL〉 audit rollback segment; CREATE、ALTER 或 DROP回滚段 SQL> audit sequence; CREATE 或 DROP 序列 SQL> audit session; 登录与退出 SQL〉 audit system audit; 系统权限得 AUDIT 或 NOAUDIT SQL> audit system grant; GRANT 或 REVOKE 系统权限与角色 SQL> audit table; CREATE、DROP 或 TRUNCATE表 SQL〉 audit tablespace; CREATE、ALTER 或DROP 表空间 SQL> audit trigger; CREATE、ALTER(启用/禁用)、DROP 触发器;具有 ENABLE ALL TRIGGERS 或 DISABLE ALL TRIGGERS得 ALTER TABLE SQL> audit type; CREATE、ALTER 与DROP 类型以及类型主体 SQL〉 audit user; CREATE、ALTER或DROP 用户 SQL〉 audit view; CREATE或 DROP 视图 显式指定得语句类型 SQL> audit alter sequence; 任何 ALTER SEQUENCE 命令 SQL> audit alter table;

 任何ALTER TABLE 命令 SQL> audit ment table; 添加注释到表、视图、物化视图或它们中得任何列 SQL〉 audit delete table; 删除表或视图中得行 SQL〉 audit execute procedure; 执行程序包中得过程、函数或任何变量或游标 SQL> audit grant directory; GRANT 或 REVOKE DIRECTORY对象上得权限 SQL〉 audit grant procedure; GRANT 或REVOKE过程、函数或程序包上得权限 SQL> audit grant sequence; GRANT 或REVOKE 序列上得权限 SQL〉 audit grant table; GRANT或REVOKE 表、视图或物化视图上得权限 SQL〉 audit grant type; GRANT或 REVOKE TYPE 上得权限 SQL> audit insert table; INSERT INTO 表或视图 SQL> audit lock table; 表或视图上得 LOCK TABLE 命令 SQL> audit select sequence; 引用序列得CURRVAL 或NEXTVAL 得任何命令 SQL> audit select table; SELECT FROM 表、视图或物化视图 SQL> audit update table; 在表或视图上执行 UPDATE

 SQL〉 select username,to_char(timestamp,"MM/DD/YY HH24:MI") timestamp

  2

 OBJ_NAME,ACTION_NAME,SQL_TEXT FROM DBA_AUDIT_TRAIL

  3

 WHERE USERNAME = "SCOTT’; 我用得基本查询审计信息,显示结果如下

 scott

 08/12/07 17:15

 JOB_TITLE_IDX

  CREATE INDEX

  create index hr、boj、rhﻫno xdi_eltit_bojﻫs(job_title)

 1 row selected、 权限审计 审计系统权限具有与语句审计相同得基本语法,但审计系统权限就是在 sql_statement_clause 中,而不就是在语句中,指定系统权限。

 SQL〉 audit alter tablespace by access whenever successful; 使用 SYSDBA 与SYSOPER 权限或者以SYS用户连接到数据库得系统管理员可以利用特殊得审计。为了启用这种额外得审计级别,可以设置初始参数 AUDIT_SYS_OPERATIONS 为 TRUE.这种审计记录发送到与操作系统审计记录相同得位置.因此,这个位置就是与操作系统相关得.当使用其中一种权限时执行得所有 SQL 语句,以及作为用户 SYS 执行得任何SQL 语句,都会发送到操作系统审计位置。

 模式对象审计 SQL〉 audit alter on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 改变表、序列或物化视图 SQL> audit AUDIT

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 审计任何对象上得命令

 SQL〉 audit MENT

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 添加注释到表、视图或物化视图

 SQL> audit DELETE

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 从表、视图或物化视图中删除行

 SQL> audit EXECUTE

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 执行过程、函数或程序包

 SQL〉 audit FLASHBACK

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 执行表或视图上得闪回操作

 SQL> audit GRANT

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL;

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

 SQL〉 audit INDEX

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 创建表或物化视图上得索引

 SQL> audit INSERT

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 将行插入表、视图或物化视图中

 SQL〉 audit LOCK

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 锁定表、视图或物化视图

 SQL> audit READ

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 对DIRECTORY对象得内容执行读操作

 SQL> audit RENAME

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 重命名表、视图或过程

 SQL〉 audit SELECT

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 从表、视图、序列或物化视图中选择行

 SQL> audit UPDATE

 on TEST_DR、TEST BY ACCESS WHENEVER SUCCESSFUL; 更新表、视图或物化视图

 细粒度审计 称为 FGA,审计变得更为关注某个方面,并且更为精确。由称为 DBMS_FGA 得PL/SQL程序包实现 FGA。

 使用标准得审计,可以轻松发现访问了哪些对象以及由谁访问,但无法知道访问了哪些行或列。细粒度得审计可解决这个问题,它不仅为需要访问得行指定谓词(或where 子句),还指定了表中访问得列。通过只在访问某些行与列时审计对表得访问,可以极大地减少审计表条目得数量。

 例如: 用户TAMARA 通常每天访问 HR、EMPLOYEES表,查找雇员得电子邮件地址。系统管理员怀疑 TAMARA 正在查瞧经理们得薪水信息,因此她们建立一个FGA 策略,用于审计任何经理对 SALARY 列得任何访问: begin dbms_fga、add_policy( ,’RH"

  〉= amehcs_tcejboﻫobject_name =>

  ’EMPLOYEES’,AS"

  〉= eman_ycilopﻫL_SELECT_AUDIT",i_boj(rtsni’ 〉= noitidnoc_tiduaﻫd,"’_MAN’’) > 0’,ﻫ’YRALAS’

 >= nmuloc_tiduaﻫ;)

 ;dneﻫ

 ADD_POLICY ﻩ 略策计审得列计审与词谓用使加添ﻩﻩ

 DROP_POLICY

 略策计审除删ﻩDISABLE_POLICYﻩ

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

  略策用启ﻩ与审计相关得数据字典视图 数据字典视图

 说

 明

 AUDIT_ACTIONS

 包含审计跟踪动作类型代码得描述,例如 INSERT、DROP VIEW、DELETE、LOGON与 LOCK

 DBA_AUDIT_OBJECT

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

 DBA_AUDIT_POLICIES

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

 DBA_AUDIT_SESSION

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

 DBA_AUDIT_STATEMENT

 与 GRANT、REVOKE、AUDIT、NOAUDIT与 ALTER SYSTEM 命令相关得审计跟踪条目

 DBA_AUDIT_TRAIL

 包含标准审计跟踪条目。USER_AUDIT_TRAILUSER_TRAIL_AUDIT只包含已连接用户得审计行

 DBA_FGA_AUDIT_TRAIL

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

 数据字典视图 说

 明 DBA_MON_AUDIT_TRAIL 将标准得审计行与细粒度得审计行结合在一个视图中 DBA_OBJ_AUDIT_OPTS 对数据库对象生效得审计选项 DBA_PRIV_AUDIT_OPTS 对系统权限生效得审计选项

 DBA_STMT_AUDIT_OPTS 对语句生效得审计选项 保护审计跟踪 审计跟踪自身需要受到保护,特别就是在非系统用户必须访问表 SYS、AUD$时。内置得角色DELETE_ANY_CATALOG就是非 SYS 用户可以访问审计跟踪得一种方法(例如,归档与截取审计跟踪,以确保它不会影响到 SYS 表空间中其她对象得空间需求)。

 为了建立对审计跟踪自身得审计,以 SYSDBA 身份连接到数据库,并运行下面得命令:

 SQL> audit all on sys、aud$ by access; 现在,所有针对表SYS、AUD$得动作,包括select、insert、update 与 delete,都记录在 SYS、AUD$自身中。但就是,您可能会问,如果某个人删除了标识对表 SYS、AUD$访问得审计记录,这时会发生什么?此时将删除表中得行,但接着插入另一行,记录行得删除。因此,总就是存在一些针对 SYS、AUD$表得(有意得或偶然得)活动得证据。此外,如果将 AUDIT_SYS _OPERATIONS设置为True,使用 as sysdba、as sysoper或以 SYS自身连接得任何会话将记录到操作系统审计位置中,甚至Oracle DBA 可能都无法访问该位置。因此,有许多合适得安全措施,用于确保记录数据库中所有权限得活动,以及隐藏该活动得任何尝试. 将审计相关得表更换表空间

  由于 AUD$表等审计相关得表存放在 SYSTEM 表空间,因此为了不影响系统得性能,保护SYSTEM表空间,最好把 AUD$移动到其她得表空间上。可以使用下面得语句来进行移动:

  sql〉connect / as sysdba; sql〉alter table aud$ move tablespace 〈new tablespace〉; sql>alter index I_aud1 rebuild online tablespace <new tablespace>; SQL〉 alter table audit$ move tablespace <new tablespace>; SQL〉 alter index i_audit rebuild online tablespace 〈new tablespace〉; SQL> alter table audit_actions move tablespace <new tablespace>;

 SQL> alter index i_audit_actions rebuild online tablespace <new tablespace>; ﻫSQL〉 conn /as sysdba SQL> show parameter audit NAME

  TYPE

 VALUE --—-----—-—-—--——----——--—-—-———--—- ————-———--— --—-———----——-—-—----———————-- audit_

 string

 /u01/app/oracle/admin/ORCL/adump audit_sys_operations

  boolean

  FALSE audit_syslog_level

  string

 SQL> alter system set audit_sys_operations=TRUE scope=spfile;

 ——审计管理用户(以 sysdba/sysoper角色登陆)dua tes metsys retla 〉LQSﻫit_trail=db,extended scope=spfile; ;ecrof putrats >LQSﻫSQL〉 show parameter audit EULAV

 EPYT

  EMANﻫ-——--—----——---——--—---—--——--———-—— —--——-————— ————--——-—--—--—-————---—-—--- audit_

 string

 /u01/app/oracle/admin/ORCL/adump audit_sys_operations

  boolean

  TRUE audit_syslog_level

  string audit_trail

 string

 DB, EXTENDED

  如果在命令后面添加by user 则只对 user 得操作进行审计,如果省去by 用户,则对系统中所有得用户进行审计(不包含 sys 用户)、

 :例ﻫAUDIT DELETE ANY TABLE;

 --审计删除表得操作 AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;

 ——只审计删除失败得情况 AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;

 -—只审计删除成功得情况 AUDIT DELETE,UPDATE,INSERT ON user、table by test;

 —-审计 test 用户对表 user、table 得 delete,update,insert 操作

 撤销审计 SQL> noaudit all on t_test;

 将审计结果表从sy st em 表空间里移动到别得表空间上 实际上 sys、aud$表上包含了两个lob字段,并不就是简单得 move table 就可以。面下ﻫ就是具体得过程: alter table sys、aud$ move tablespace users; alter table sys、aud$ move lob(sqlbind)

 store as( tablespace USERS); alter table sys、aud$ move lob(SQLTEXT) store as( tablespace USERS); ;sresu ecapselbat dliuber 1DUA_I、sys xedni retlaﻫ

 应用 语句审计 多层环境下得审计:appserve—应用服务器,jackson-clientB ELBAT TCELES TIDUAﻫY appserve ON BEHALF OF jackson;

 审计连接或断开连接:rol ,ffej YB NOISSES TIDUAﻫ;NOISSES TIDUAﻫi;

 —- 指定用户 :)作操得行执能才限权该用使(限权计审ﻫﻫAUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL; AUDIT DELETE ANY TABLE; AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL; ED ,TRESNI ,TCELES TIDUAﻫ;pme、ffej NO ETELED TIDUAﻫ:计审象对ﻫLETE ON jward、dept BY ACCESS WHENEVER SUCCESSFUL; ﻫ取消审计:

 ;noisses TIDUAONﻫNOAUDIT session BY jeff, lori; NOAUDIT DELETE ANY TABLE; NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EXECUTE PROCEDURE; 计审 tnemetats有所消取 --

 ;LLA TIDUAONﻫNOAUDIT ALL PRIVILEGES;

 —- 取消所有权限审计 NOAUDIT ALL ON DEFAULT;

 —- 取消所有对象审计

 清除审计信息 DELETE FROM SYS、AUD$; DELETE FROM SYS、AUD$ WHERE obj$name="EMP'; 审计相关视图 STMT_AUDIT_OPTION_MAP

 -— 审计选项类型代码 AUDIT_ACTIONS

 -- action 代码 ALL_DEF_AUDIT_OPTS

 —— 对象创建时默认得对象审计选项 DBA_STMT_AUDIT_OPTS

 —- 当前数据库系统审计选项 DBA_PRIV_AUDIT_OPTS

 —— 权限审计选项 DBA_OBJ_AUDIT_OPTS

  USER_OBJ_AUDIT_OPTS

 —- 对象审计选项 DBA_AUDIT_TRAIL

  USER_AUDIT_TRAIL

 -- 审计记录 DBA_AUDIT_OBJECT

 _ABDﻫ表列象对计审 ——

 TCEJBO_TIDUA_RESUﻫAUDIT_SESSION

 USER_AUDIT_SESSION

 —- session 审计 DBA_AUDIT_STATEMENT

 BDﻫ计审句语 ——

 TNEMETATS_TIDUA_RESUﻫA_AUDIT_EXISTS

 —— 使用BY AUDIT NOT EXISTS 选项得审计 DBA_AUDIT_POLICIES

 —- 审计 POLICIES DBA_MON_AUDIT_TRAIL

 -— 标准审计+精细审计

推荐访问:审计 数据库
上一篇:霍州各基层工会工资协商指导员名单1
下一篇:《珍爱生命,远离烟草》主题班会

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有