「Oracle Database10g アクティビティの監査」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
− | ==Oracle Database10g アクティビティの監査== | + | ==[[Oracle Database10g アクティビティの監査]]== |
− | [[Oracle]][[Oracle Database10g]] | + | [[Oracle]] | [[Oracle Database10g]] | |
===提供される監査=== | ===提供される監査=== | ||
14行目: | 14行目: | ||
*http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/auditing.htm#115334 | *http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/auditing.htm#115334 | ||
− | + | AUDIT_T[[R]]AIL = { none | os | db | db,extended | xml | xml,extended } | |
{|class="wikitable" | {|class="wikitable" | ||
30行目: | 30行目: | ||
|- | |- | ||
|db,extended | |db,extended | ||
− | |データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み、さらに、SYS.AUD$ | + | |データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み、さらに、SYS.AUD$表の[[SQL]]BINDおよび[[SQL]]TEXT CLOB列にデータを移入。 |
|- | |- | ||
|xml | |xml | ||
− | | | + | |データベースの監査を使用可能にし、すべての監査レコードを[[XML]]形式のOSファイルに書き込みます。 |
|- | |- | ||
|xml,extended | |xml,extended | ||
42行目: | 42行目: | ||
*オプション指定(os, xml, xml,extendedにより、ファイルに書き出される場合、[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/initparams.htm#70855 AUDIT_FILE_DEST]に書き出される。 | *オプション指定(os, xml, xml,extendedにより、ファイルに書き出される場合、[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/initparams.htm#70855 AUDIT_FILE_DEST]に書き出される。 | ||
− | <blockquote> | + | <blockquote>[[SQL]]BINDおよび[[SQL]]TEXTには、データベース初期化ファイルinit.oraでAUDIT_TRAIL=DB_EXTENDEDを指定しないかぎりデータは移入されません。 これは、CLOBデータの移入が比較的高コストであるためです。 </blockquote> |
− | ===== | + | =====AUDIT_T[[R]]AILを変更===== |
− | SQL> alter system set audit_trail = db scope=spfile; | + | [[SQL]]> alter system set audit_trail = db scope=spfile; |
System altered. | System altered. | ||
=====データベースを再起動し、確認===== | =====データベースを再起動し、確認===== | ||
− | SQL> show parameters audit_ | + | [[SQL]]> show parameters audit_ |
NAME TYPE VALUE | NAME TYPE VALUE | ||
60行目: | 60行目: | ||
audit_trail string DB | audit_trail string DB | ||
====[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/statements_4.html#21139 AUDIT]で監査を開始する==== | ====[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/statements_4.html#21139 AUDIT]で監査を開始する==== | ||
− | * | + | *後続のユーザー・セッションでの[[SQL]]文の実行の監査。特定の[[SQL]]文、または特定のシステム権限によって許可されたすべての[[SQL]]文の実行を監査できます。[[SQL]]文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。 |
*特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。 | *特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。 | ||
− | SQL> audit all by access; | + | [[SQL]]> audit all by access; |
Audit succeeded. | Audit succeeded. | ||
78行目: | 78行目: | ||
=====監査対象のテーブル===== | =====監査対象のテーブル===== | ||
− | SQL> desc exam.test | + | [[SQL]]> desc exam.test |
Name Null? Type | Name Null? Type | ||
----------------------------------------- -------- ---------------------------- | ----------------------------------------- -------- ---------------------------- | ||
− | ID | + | ID NUMBE[[R]] |
− | NAME | + | NAME CHA[[R]](10) |
=====監査情報格納テーブルの作成===== | =====監査情報格納テーブルの作成===== | ||
− | SQL> create table system.test_audit ( test_id number, up_date date, | + | [[SQL]]> create table system.test_audit ( test_id number, up_date date, |
2 new_name char(10), old_name char(10) ); | 2 new_name char(10), old_name char(10) ); | ||
91行目: | 91行目: | ||
=====トリガーの作成===== | =====トリガーの作成===== | ||
− | SQL> create or replace trigger system.audit_test | + | [[SQL]]> create or replace trigger system.audit_test |
2 before update of name on exam.test for each row | 2 before update of name on exam.test for each row | ||
3 declare | 3 declare | ||
103行目: | 103行目: | ||
=====1行更新===== | =====1行更新===== | ||
− | SQL> update test set name = 'AAAAA' where id = 4; | + | [[SQL]]> update test set name = 'AAAAA' where id = 4; |
1行が更新されました。 | 1行が更新されました。 | ||
=====監査テーブルが更新された===== | =====監査テーブルが更新された===== | ||
− | SQL> select * from system.test_audit; | + | [[SQL]]> select * from system.test_audit; |
− | + | [[TEST]]_ID UP_DATE NEW_NAME OLD_NAME | |
---------- -------- ---------- ---------- | ---------- -------- ---------- ---------- | ||
4 09-07-09 AAAAA jkl | 4 09-07-09 AAAAA jkl | ||
===[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/cfgaudit.htm#140653 ファイングレイン監査](FGA)=== | ===[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19269-04/cfgaudit.htm#140653 ファイングレイン監査](FGA)=== | ||
− | * | + | *[[SQL]]分を監査するには、ファイングレイン監査を利用する |
− | * | + | *データベース監査を拡張し、発生したアクションだけでなく、発行された[[SQL]]も取得 |
*DBMS_FGAパッケージを使用して、対象となる表やビューに監査ポリシー(FGAポリシー)を作成 | *DBMS_FGAパッケージを使用して、対象となる表やビューに監査ポリシー(FGAポリシー)を作成 | ||
*詳細な監査条件を指定することによって、標準監査よりも詳細な監査を実施でき、不適切な監査または不要な監査を最小限に抑えることができる | *詳細な監査条件を指定することによって、標準監査よりも詳細な監査を実施でき、不適切な監査または不要な監査を最小限に抑えることができる | ||
− | * | + | *監査を使用可能にするときに、AUDIT_T[[R]]AILを設定する必要はなく、適切と思われるFGA方針を追加および削除して、監視する特定の操作またはオブジェクトに適用する |
*FGAポリシーの作成には、DBMS_FGA.ADD_POLICYプロシージャを使用 | *FGAポリシーの作成には、DBMS_FGA.ADD_POLICYプロシージャを使用 | ||
− | *監査レコードは、SYS.FGA_LOG$ | + | *監査レコードは、SYS.FGA_LOG$表に格納され、DBA_FGA_AUDIT_T[[R]]AILビューを介してアクセスできる |
====FGA_POLICYの作成==== | ====FGA_POLICYの作成==== | ||
− | SQL> execute dbms_fga.add_policy ( - | + | [[SQL]]> execute dbms_fga.add_policy ( - |
> object_schema => 'exam', - | > object_schema => 'exam', - | ||
> object_name => 'test', - | > object_name => 'test', - | ||
132行目: | 132行目: | ||
> statement_types => 'insert,update,delete,select'); | > statement_types => 'insert,update,delete,select'); | ||
− | PL/SQL procedure successfully completed. | + | PL/[[SQL]] procedure successfully completed. |
=====NULL監査条件===== | =====NULL監査条件===== | ||
− | * | + | *audit_conditionにNULLを指定(または指定を省略)すると、この指定はT[[R]]UEとして解釈され、指定列(audit_column)に影響を与える指定アクション(statement_types)の監査が保証されます。 |
====監査対象のテーブルを操作==== | ====監査対象のテーブルを操作==== | ||
− | SQL> conn exam/north123@oradb1; | + | [[SQL]]> conn exam/north123@oradb1; |
接続されました。 | 接続されました。 | ||
− | SQL> select * from test | + | [[SQL]]> select * from test |
2 ; | 2 ; | ||
150行目: | 150行目: | ||
3 ghi | 3 ghi | ||
− | SQL> insert into test values (5, 'mno'); | + | [[SQL]]> insert into test values (5, 'mno'); |
1行が作成されました。 | 1行が作成されました。 | ||
− | SQL> delete from test where id = 3; | + | [[SQL]]> delete from test where id = 3; |
1行が削除されました。 | 1行が削除されました。 | ||
166行目: | 166行目: | ||
!内容 | !内容 | ||
|- | |- | ||
− | | | + | |DBA_FGA_AUDIT_T[[R]]AIL |
|すべてのFGAイベントを確認 | |すべてのFGAイベントを確認 | ||
|- | |- | ||
− | | | + | |ALL_AUDIT_POLIC[[IE]]S |
|現行ユーザーがアクセス可能なオブジェクトのすべてのFGAポリシーを確認 | |現行ユーザーがアクセス可能なオブジェクトのすべてのFGAポリシーを確認 | ||
|- | |- | ||
− | | | + | |DBA_AUDIT_POLIC[[IE]]S |
|データベース内のすべてのFGAポリシーを確認 | |データベース内のすべてのFGAポリシーを確認 | ||
|- | |- | ||
− | | | + | |USER_AUDIT_POLIC[[IE]]S |
|現行ユーザースキーマのFGAポリシーを確認 | |現行ユーザースキーマのFGAポリシーを確認 | ||
|- | |- | ||
|} | |} | ||
− | ===== | + | =====ALL_AUDIT_POLIC[[IE]]S===== |
[[File:0877_ora_aud03.jpg]] | [[File:0877_ora_aud03.jpg]] | ||
− | ===== | + | =====DBA_AUDIT_POLIC[[IE]]S===== |
[[File:0878_ora_aud04.jpg]] | [[File:0878_ora_aud04.jpg]] |
2020年2月16日 (日) 04:29時点における最新版
Oracle Database10g アクティビティの監査
提供される監査
以下の3つの監査が提供されている
- データベース監査
- 値ベース監査
- ファイングレイン監査(FGA)
データベース監査
- 監査対象のイベントに関して、発生したイベント、時間、発生させたユーザー、クライアントマシンなどの情報を取得できる
AUDIT_TRAILで監査を使用可能にする
AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }
オプション | 内容 |
---|---|
none | データベースの監査を使用禁止にします。 |
os | データベースの監査を使用可能にし、すべての監査レコードをオペレーティング・システムの監査証跡に書き込み。 |
db | データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み。 |
db,extended | データベースの監査を使用可能にし、すべての監査レコードをデータベースの監査証跡(SYS.AUD$表)に書き込み、さらに、SYS.AUD$表のSQLBINDおよびSQLTEXT CLOB列にデータを移入。 |
xml | データベースの監査を使用可能にし、すべての監査レコードをXML形式のOSファイルに書き込みます。 |
xml,extended | データベースの監査を使用可能にし、SqlTextおよびSqlBind値を含め、監査証跡のすべての列を出力します。 |
- オプション指定(os, xml, xml,extendedにより、ファイルに書き出される場合、AUDIT_FILE_DESTに書き出される。
<blockquote>SQLBINDおよびSQLTEXTには、データベース初期化ファイルinit.oraでAUDIT_TRAIL=DB_EXTENDEDを指定しないかぎりデータは移入されません。 これは、CLOBデータの移入が比較的高コストであるためです。 </blockquote>
AUDIT_TRAILを変更
SQL> alter system set audit_trail = db scope=spfile; System altered.
データベースを再起動し、確認
SQL> show parameters audit_ NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ audit_file_dest string /opt/oracle/app/admin/oradb1/a dump audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string DB
AUDITで監査を開始する
- 後続のユーザー・セッションでのSQL文の実行の監査。特定のSQL文、または特定のシステム権限によって許可されたすべてのSQL文の実行を監査できます。SQL文操作の監査は、後続セッションにのみ適用され、現行のセッションには適用されません。
- 特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。
SQL> audit all by access; Audit succeeded.
確認
値ベース監査
- 値ベース監査は、データベースの監査を拡張したもので、監査対象のイベントだけでなく、実際の値も取得する。
- データベーストリガーを使用して実装
- 値の変更のたびに監査トリガーが実行されるため、データベースへの負荷が高くなることによるパフォーマンスの劣化に注意する
監査対象のテーブル
SQL> desc exam.test Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER NAME CHAR(10)
監査情報格納テーブルの作成
SQL> create table system.test_audit ( test_id number, up_date date, 2 new_name char(10), old_name char(10) ); Table created.
トリガーの作成
SQL> create or replace trigger system.audit_test 2 before update of name on exam.test for each row 3 declare 4 pragma autonomous_transaction; 5 begin 6 insert into system.test_audit values( :old.id, sysdate, 7 :new.name, :old.name ); 8 commit; 9 end; 10 /
1行更新
SQL> update test set name = 'AAAAA' where id = 4; 1行が更新されました。
監査テーブルが更新された
SQL> select * from system.test_audit; TEST_ID UP_DATE NEW_NAME OLD_NAME ---------- -------- ---------- ---------- 4 09-07-09 AAAAA jkl
ファイングレイン監査(FGA)
- SQL分を監査するには、ファイングレイン監査を利用する
- データベース監査を拡張し、発生したアクションだけでなく、発行されたSQLも取得
- DBMS_FGAパッケージを使用して、対象となる表やビューに監査ポリシー(FGAポリシー)を作成
- 詳細な監査条件を指定することによって、標準監査よりも詳細な監査を実施でき、不適切な監査または不要な監査を最小限に抑えることができる
- 監査を使用可能にするときに、AUDIT_TRAILを設定する必要はなく、適切と思われるFGA方針を追加および削除して、監視する特定の操作またはオブジェクトに適用する
- FGAポリシーの作成には、DBMS_FGA.ADD_POLICYプロシージャを使用
- 監査レコードは、SYS.FGA_LOG$表に格納され、DBA_FGA_AUDIT_TRAILビューを介してアクセスできる
FGA_POLICYの作成
SQL> execute dbms_fga.add_policy ( - > object_schema => 'exam', - > object_name => 'test', - > policy_name => 'chk_exam_test', - > audit_condition => 'id > 0', - > audit_column => 'name', - > statement_types => 'insert,update,delete,select'); PL/SQL procedure successfully completed.
NULL監査条件
- audit_conditionにNULLを指定(または指定を省略)すると、この指定はTRUEとして解釈され、指定列(audit_column)に影響を与える指定アクション(statement_types)の監査が保証されます。
監査対象のテーブルを操作
SQL> conn exam/north123@oradb1; 接続されました。 SQL> select * from test 2 ; ID NAME ---------- -------------------- 4 jkl 3 ghi SQL> insert into test values (5, 'mno'); 1行が作成されました。 SQL> delete from test where id = 3; 1行が削除されました。
監査ログを確認
監査エントリを確認するデータディクショナリ
データディクショナリ | 内容 |
---|---|
DBA_FGA_AUDIT_TRAIL | すべてのFGAイベントを確認 |
ALL_AUDIT_POLICIES | 現行ユーザーがアクセス可能なオブジェクトのすべてのFGAポリシーを確認 |
DBA_AUDIT_POLICIES | データベース内のすべてのFGAポリシーを確認 |
USER_AUDIT_POLICIES | 現行ユーザースキーマのFGAポリシーを確認 |
ALL_AUDIT_POLICIES
DBA_AUDIT_POLICIES
© 2006 矢木浩人