<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幸せのちから

    平凡的世界
    看似平常實崎嶇
    成如容易卻艱辛

    oracle審計(轉)

    oracle審計(轉)

       轉自http://blog.163.com/ameizhu111@126/blog/static/365271882009041481299/

    1、什么是審計

    審計(Audit)用于監(jiān)視用戶所執(zhí)行的數(shù)據庫操作,并且Oracle會將審計跟蹤結果存放 到OS文件(默認位置為$ORACLE_BASE/admin/$ORACLE_SID/adump/)或數(shù)據庫(存儲在system表空間中的 SYS.AUD$表中,可通過視圖dba_audit_trail查看)中。默認情況下審計是沒有開啟的。

    不管你是否打開數(shù)據庫的審計功能,以下這些操作系統(tǒng)會強制記錄:用管理員權限連接Instance;啟動數(shù)據庫;關閉數(shù)據庫。

    2、和審計相關的兩個主要參數(shù)

    Audit_sys_operations:

    默認為false,當設置為true時,所有sys用戶(包括以sysdba, sysoper身份登錄的用戶)的操作都會被記錄,audit trail不會寫在aud$表中,這個很好理解,如果數(shù)據庫還未啟動aud$不可用,那么像conn /as sysdba這樣的連接信息,只能記錄在其它地方。如果是windows平臺,audti trail會記錄在windows的事件管理中,如果是linux/unix平臺則會記錄在audit_file_dest參數(shù)指定的文件中。

    Audit_trail:

    None:是默認值,不做審計;

    DB:將audit trail 記錄在數(shù)據庫的審計相關表中,如aud$,審計的結果只有連接信息;

    DB,Extended:這樣審計結果里面除了連接信息還包含了當時執(zhí)行的具體語句;

    OS:將audit trail 記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定;

    XML:10g里新增的。

    注:這兩個參數(shù)是static參數(shù),需要重新啟動數(shù)據庫才能生效。

    3、審計級別

    當開啟審計功能后,可在三個級別對數(shù)據庫進行審計:Statement(語句)、Privilege(權限)、object(對象)。

    Statement:

    按語句來審計,比如audit table 會審計數(shù)據庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy用戶所有的數(shù)據庫連接。

    Privilege:

    按權限來審計,當用戶使用了該權限則被審計,如執(zhí)行grant select any table to a,當執(zhí)行了audit select any table語句后,當用戶a 訪問了用戶b的表時(如select * from b.t)會用到select any table權限,故會被審計。注意用戶是自己表的所有者,所以用戶訪問自己的表不會被審計。

    Object:

    按對象審計,只審計on關鍵字指定對象的相關操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這里會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對scott用戶發(fā)起的操作進行審計。注意Oracle沒有提供對schema中所有 對象的審計功能,只能一個一個對象審計,對于后面創(chuàng)建的對象,Oracle則提供on default子句來實現(xiàn)自動審計,比如執(zhí)行audit drop on default by access;后, 對于隨后創(chuàng)建的對象的drop操作都會審計。但這個default會對之后創(chuàng)建的所有數(shù)據庫對象有效,似乎沒辦法指定只對某個用戶創(chuàng)建的對象有效,想比 trigger可以對schema的DDL進行“審計”,這個功能稍顯不足。

    4、審計的一些其他選項

    by access / by session:

    by access 每一個被審計的操作都會生成一條audit trail。

    by session 一個會話里面同類型的操作只會生成一條audit trail,默認為by session。

    whenever [not] successful:

    whenever successful 操作成功(dba_audit_trail中returncode字段為0) 才審計,

    whenever not successful 反之。省略該子句的話,不管操作成功與否都會審計。

    5、和審計相關的視圖

    dba_audit_trail:保存所有的audit trail,實際上它只是一個基于aud$的視圖。其它的視圖dba_audit_session,dba_audit_object, dba_audit_statement都只是dba_audit_trail的一個子集。

    dba_stmt_audit_opts:可以用來查看statement審計級別的audit options,即數(shù)據庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似

    all_def_audit_opts:用來查看數(shù)據庫用on default子句設置了哪些默認對象審計。

    6、取消審計

    將對應審計語句的audit改為noaudit即可,如audit session whenever successful對應的取消審計語句為noaudit session whenever successful;

    7、10g中的審計告知一切

    Oracle 數(shù)據庫 10g 審計以一種非常詳細的級別捕獲用戶行為,它可以消除手動的、基于觸發(fā)器的審計。

    假定用戶 Joe 具有更新那張表的權限,并按如下所示的方式更新了表中的一行數(shù)據:

    update SCOTT.EMP set salary = 12000 where empno = 123456;

    您如何在數(shù)據庫中跟蹤這種行為呢?在 Oracle 9i 數(shù)據庫及其較低版本中,審計只能捕獲“誰”執(zhí)行此操作,而不能捕獲執(zhí)行了“什么”內容。例如,它讓您知道 Joe 更新了 SCOTT 所有的表EMP,但它不會顯示他更新了該表中員工號為 123456 的薪水列。它不會顯示更改前的薪水列的值 — 要捕獲如此詳細的更改,您將不得不編寫您自己的觸發(fā)器來捕獲更改前的值,或使用 LogMiner 將它們從存檔日志中檢索出來。

    細粒度審計(FGA) ,是在 Oracle 9i 中引入的,能夠記錄 SCN 號和行級的更改以重建舊的數(shù)據,但是它們只能用于 select 語句,而不能用于 DML ,如 update 、insert 和delete 語句。因此,對于 Oracle 數(shù)據庫 10g 之前的版本,使用觸發(fā)器雖然對于以行級跟蹤用戶初始的更改是沒有吸引力的選擇,但它也是唯一可靠的方法。

    8、實例講解

    8.1、激活審計

    SQL> conn /as sysdba

    SQL> show parameter audit

    NAME TYPE VALUE

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

    audit_file_dest string /u01/app/oracle/admin/ORCL/adump

    audit_sys_operations boolean FALSE

    audit_syslog_level string

    audit_trail string NONE

    SQL> alter system set audit_sys_operations=TRUE scope=spfile; --審計管理用戶(以sysdba/sysoper角色登陸)

    SQL> alter system set audit_trail=db,extended scope=spfile;

    SQL> startup force;

    SQL> show parameter audit

    NAME TYPE VALUE

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

    audit_file_dest string /u01/app/oracle/admin/ORCL/adump

    audit_sys_operations boolean TRUE

    audit_syslog_level string

    audit_trail string DB, EXTENDED

    8.2、開始審計

    SQL> conn /as sysdba

    SQL> audit all on t_test;

    SQL> conn u_test

    SQL> select * from t_test;

    SQL> insert into u_test.t_test (c2,c5) values ('test1','2');

    SQL> commit;

    SQL> delete from u_test.t_test;

    SQL> commit;

    SQL> conn /as sysdba

    SQL> col DEST_NAME format a30

    col OS_USERNAME format a15

    col USERNAME format a15

    col USERHOST format a15

    col TERMINAL format a15

    col OBJ_NAME format a30

    col SQL_TEXT format a60

    SQL> select OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,sessionid,os_process,sql_text from dba_audit_trail;

    sql> audit select table by u_test by access;

    如果在命令后面添加by user則只對user的操作進行審計,如果省去by用戶,則對系統(tǒng)中所有的用戶進行審計(不包含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操作

    8.3、撤銷審計

    SQL> noaudit all on t_test;

    9、精細審計

    9.1、創(chuàng)建審計標記

    SQL> exec dbms_fga.add_policy(object_schema=>'ryan',object_name=>'test',policy_name=>'chk_test',statement_types=>'select');

    9.2、開啟審計

    SQL> exec DBMS_FGA.ENABLE_POLICY(object_schema=>'ryan' ,object_name=>'test' ,policy_name=>'chk_test');

    9.3、查看審計記錄

    SQL> conn system/811226@ryan123

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

    Connected as system

    SQL> SELECT session_id,TIMESTAMP,db_user,os_user,userhost,sql_text FROM Dba_Fga_Audit_Trail;

    SESSION_ID TIMESTAMP DB_USER OS_USER USERHOST SQL_TEXT

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

    201 2008-11-4 2 RYAN Ryan WORKGROUP\LENOVO-C30DA497 select * from test

    9.4、關閉審計

    SQL> exec DBMS_FGA.DISABLE_POLICY(object_schema=>'ryan' ,object_name=>'TEST' ,policy_name=>'chk_test');

    9.5、刪除審計標記

    SQL> exec DBMS_FGA.DROP_POLICY(object_schema=>'ryan' ,object_name=>'TEST' ,policy_name=>'chk_test');

    posted on 2009-03-25 10:08 Lucky 閱讀(801) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    隨筆分類(125)

    文章分類(5)

    日本語

    搜索

    積分與排名

    最新隨筆

    最新評論

    主站蜘蛛池模板: 亚洲av最新在线网址| 最近中文字幕mv免费高清视频7| 99免费在线视频| 全部免费毛片免费播放| 亚洲制服丝袜精品久久| a毛片免费在线观看| 中文字幕亚洲综合久久菠萝蜜| 亚洲av成人一区二区三区在线播放| xxxxx免费视频| 亚洲AV永久无码精品水牛影视| 婷婷亚洲综合五月天小说在线| 精品一区二区三区免费毛片爱| 日韩免费高清一级毛片在线| 亚洲国产精品综合久久20| 国拍在线精品视频免费观看| 亚洲成A人片在线观看无码3D| 亚洲色大成网站www永久男同| 日韩版码免费福利视频| 亚洲成a人片毛片在线| 91福利免费视频| 亚洲美女在线观看播放| 亚州免费一级毛片| 亚洲精品视频在线观看视频| 亚洲黄色免费网站| 亚洲男人的天堂网站| 亚洲国产精品自产在线播放| 任你躁在线精品免费| 亚洲成a人片在线观看中文app | 99在线热播精品免费99热| 亚洲av日韩av不卡在线观看| 中文字幕免费在线看线人 | 亚洲AV成人无码天堂| 国产精品无码免费视频二三区| 一本久久免费视频| 亚洲婷婷天堂在线综合| 国产无遮挡色视频免费视频| 三上悠亚电影全集免费| 久久亚洲精品国产亚洲老地址| 国内精品久久久久久久亚洲| 成年人视频免费在线观看| 免费一级毛片在线播放放视频|