Oracle_Audit_Audit

1.監査とは

監査 ( Audit)は、ユーザーが実行するデータベース操作を監視するために使用され、Oracleは監査証跡の結果をOSファイル (デフォルトの場所は$ORACLE_BASE/admin/$ORACLE_SID/adump/ ) またはデータベース (システム表スペースSYS.AUD$に格納され、ビューdba_audit_trailを介して表示できますデフォルトでは、監査は有効になっていません。
データベースの監査機能を有効にするかどうかに関係なく、次のオペレーティング システムは記録を強制します:管理者権限でインスタンスに接続し、データベースを開始し、データベースを閉じます。

2. Audit_sys_operations , 監査に関連する 2 つの主なパラメーター:デフォルトはfalse . trueに設定すると、すべてのsysユーザー ( sysdba および sysoperとしてログインするユーザーを含む)の操作が記録され、監査証跡は書き込まれません。の


aud$テーブルでは、これは簡単に理解できます. データベースが起動されておらず、aud$が使用できない場合、conn /as sysdbaなどの接続情報は他の場所にしか記録できません。Windowsプラットフォームの場合audti トレイルはwindowsのイベント管理に記録され、 linux/unixプラットフォームの場合は、 audit_file_destパラメーターで指定されたファイルに記録されます。Audit_trail : None : デフォルト値であり、監査なし; DB : aud$などのデータベースの監査関連テーブルに監査証跡を記録し、監査結果には接続情報のみが含まれます; DB, Extended : 監査が結果には接続情報だけでなく、接続情報も含まれます その時点で実行された特定のステートメント; OS :監査証跡をオペレーティング システム ファイルに記録し、ファイル名はaudit_file_destパラメータで指定されます; XML : 10gで新たに追加されました。注: これらの 2 つのパラメーターは、








staticパラメータを有効にするには、データベースを再起動する必要があります。

3.監査レベル

監査機能をオンにすると、データベースをStatement(ステートメント) Privilege (パーミッション)、Object (オブジェクト)の3つのレベルで監査できます。

ステートメント:
ステートメントごとに監査します。たとえば、監査テーブルは、データベース内のすべてのcreate table、drop table、truncate tableステートメントを監査し、 cmy によるセッションの変更は、 cmyユーザーのすべてのデータベース接続を監査します権限:権限による監査、ユーザーが権限を使用した場合、ユーザーaがユーザーbのテーブルにアクセスした場合 ( selectなど)、 audit select any tableステートメントを実行した後、a に対して grant select any table を実行するなどの監査が行われます。 * from bt ) select any tableを使用します


当局、それは監査されます。ユーザーは自分のテーブルの所有者であるため、自分のテーブルにアクセスするユーザーは監査されないことに注意してください。

オブジェクト:
オブジェクトごとに監査します。aduitの変更、削除、削除、削除、挿入など、on キーワードで指定されたオブジェクトの関連する操作のみを監査します。scott による cmy.tでは、 cmyユーザーtテーブルが監査されますが、同時にbyサブセンテンスであるため、scottユーザーによって開始された操作のみが監査されます。Oracleでは、スキーマ内のすべてのオブジェクトに対して監査機能が提供されているわけではなく、一度に 1 つのオブジェクトしか監査できないことに注意してください。後で作成されたオブジェクトに対して、 Oracle はon default句を提供して、自動監査を実現します。たとえば、audit dropを実行した後後で作成されたオブジェクトのドロップが監査されます。ただし、このデフォルトは、後で作成されるすべてのデータベース オブジェクトに対して有効になります.特定のユーザーによって作成されたオブジェクトに対してのみ有効であると指定する方法はないようです.トリガーと比較すると、スキーマDDLに使用できます。 監査」 、この機能は少し不十分です

4.アクセス別/セッション別のその他の監査オプション:アクセス別の監査対象操作はすべて、監査証跡を生成しますセッションごとセッション内の同じタイプの操作は、監査証跡のみを生成します。これはデフォルトでセッションごとです常に [not] 成功:操作が成功した場合( dba_audit_trailreturncodeフィールドが0)のみ監査し成功しなかった場合はその逆ですこの句を省略すると、操作が成功したかどうかが監査されます。5.監査に関連するdba_audit_trailを表示します。すべての監査証跡を保存します。実際には、aud$に基づく単なるビューです。











意見。他のビューdba_audit_session、dba_audit_object、dba_audit_statement は、dba_audit_trailの単なるサブセットです。dba_stmt_audit_opts :ステートメント監査レベルの監査オプション、つまりデータベースによって設定されたステートメントレベル監査を表示するために使用できます。dba_obj_audit_opts、dba_priv_audit_optsビュー関数はall_def_audit_optsに似ています。on default句を使用して、データベースによって設定されているデフォルト オブジェクトの監査を表示するために使用されます。6.監査を取り消すには、監査ステートメントに対応する監査ステートメントをnoauditに変更します。たとえば、成功するたびに監査セッションに対応する監査ステートメントは、成功するたびに noaudit セッションになります。7および10g監査は、すべてのOracleデータベースに通知します。









10g の監査は、ユーザーの行動を非常に具体的なレベルでキャプチャするため、手動のトリガーベースの監査を排除できます。
ユーザーJoe がそのテーブルに対する更新権限を持っており、テーブル内の行を次のように更新するとします:
update SCOTT.EMP set sale = 12000 where empno = 123456;
データベースでこの動作をどのように追跡しますか? Oracle 9iデータベースおよびそれ以前のバージョンでは、監査は」が実行されたかではなく、 誰が」操作を実行したかのみを記録していましたたとえば、 Joe がSCOTTが所有するテーブルEMPを更新したことはわかりますが、そのテーブルの従業員番号123456の給与列を更新したことはわかりません。変更前の給与列の値は表示されませんこのような特定の変更をキャッチするには、独自のトリガーを作成して変更前の値をキャッチするか、LogMinerを使用してアーカイブ ログから値を取得する必要があります。Oracle 9iで導入されたファイングレイン監査(FGA)は、 SCNを記録できます。
古いデータを再構築するための No. および行レベルの変更ですが、 update insert deleteステートメントなどのDMLではなく、 selectステートメントでのみ使用できますしたがって、トリガーを使用することは、行レベルでユーザーが開始した変更を追跡するための魅力的なオプションではありませんが、 Oracle Database 10gより前のバージョンでは唯一の信頼できる方法でした。8.例の説明8.1 . 監査を有効にするSQL> conn /as sysdba SQL> show parameter audit NAME TYPE VALUE -------------------------------- -------- ----------------------- ------------------------------ audit_file_dest文字列 /u01/app/oracle/admin/ORCL/adump audit_sys_operations boolean FALSE audit_syslog_level 文字列












audit_trail 文字列 NONE

SQL> alter system set audit_sys_operations=TRUE scope=spfile; --
审计管理用户(sysdba/sysoper角色登陆)
SQL> alter system set audit_trail=db,extended scope=spfile;
SQL>起動力;
SQL> show パラメータ監査
NAME TYPE VALUE
------------------------------------ ------ ----- ------------------------------
audit_file_dest string /u01/app/oracle/admin/ORCL/adump
audit_sys_operations boolean TRUE
audit_syslog_level 文字列
audit_trail string DB、EXTENDED        

8.2
、開始审计

SQL> conn /as sysdba
SQL> t_test ですべてを監査します。
SQL> conn u_test
SQL> select * from t_test;
SQL> u_test.t_test (c2,c5) 値 ('test1','2') に挿入します。
SQL>コミット;
SQL> u_test.t_test から削除します。
SQL>コミット;
SQL> conn /as sysdba
SQL> col DEST_NAME 形式 a30
col OS_USERNAME 形式 a15
col USERNAME 形式 a15
col USERHOST 形式 a15
col TERMINAL 形式a15
col OBJ_NAME 形式 a30
col SQL_TEXT 形式 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;

コマンドの後にユーザーで追加した場合のみ動作しますon user Auditby user が省略されている場合システム内のすべてのユーザーを監査します( 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; --テストユーザーペア テーブルを監査





user.tableの削除、更新、挿入操作8.3

監査を取り消す
SQL> noaudit all on t_test;

9 、
多層環境での監査ステートメントの監査: appserve- application server、jackson-client AUDIT SELECT TABLE BY appserve ON BEHALF OF jackson;接続または切断の監査: AUDIT SESSION; AUDIT SESSION BY jeff, loli; -- ユーザーの監査権限を指定します(この権限でのみ実行できる操作) : 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; object audit: AUDIT DELETE ON jeff.emp;















AUDIT SELECT, INSERT, DELETE ON jward.dept ON ACCESS WHENEVER SUCCESSFUL;


監査をキャンセル:
NOAUDIT セッション;
NOAUDIT セッション BY jeff, loli;
NOAUDIT DELETE ANY TABLE;
NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EX ECUTE PROCEDURE;
NOAUDIT ALL; - -Cancel
all statement audit
NOAUDIT ALL PRIVILEGES; --Cancel all permission audit
NOAUDIT ALL ON DEFAULT; --Cancel all object audit

10 , clear audit information

DELETE FROM SYS.AUD$;
DELETE FROM SYS.AUD$ WHERE obj$name= ' EMP';

11.
監査ビュー

STMT_AUDIT_OPTION_MAP --監査オプション タイプコード
AUDIT_ACTIONS -- アクションコード
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  
USER_AUDIT_OBJEC T --
監査オブジェクト リスト
DBA_AUDIT_SESSION  
USER_AUDIT_SESSION -- セッション
監査
DBA_AUDIT_STATEMENT  
USER_AUDIT_STATEMENT --statement
audit
DBA_AUDIT_EXISTS --audit DBA_AUDIT_POLICIES with BY AUDIT NOT EXISTSオプション--audit POLICIES DBA_COMMON_AUDIT_TRAIL --standard audit +

細かい監査

12.監査結果テーブルをシステムテーブル スペースから別のテーブル スペースに移動する

実際、sys.aud$テーブルには 2 つのLOBフィールドが含まれており、単純な移動テーブルではありません具体的なプロセスは次のとおりです: 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 );インデックス sys.I_AUD1 を変更し、テーブルスペース ユーザーを再構築します。





 

Guess you like

Origin blog.csdn.net/2301_76957510/article/details/130401427