ファイングレイン監査
ファイングレイン監査(FGA 監査:Fine-Grained Auditing) Oracle 9i Enterprise からの行レベルの監査機能
監査(操作履歴)の単位を行の条件レベルの精度で行うことができる。
DML( INSERT / UPDATE / DELETE ) はもちろん SELECT も監視対象にでき、SQL_TEXT も記録されている。
イベントハンドラ関数の登録も行うことが可能であるが、そのハンドラ内でエラーが発生すると DML 本体が無効になるので 設置には注意を要する。
AUDIT_TRAIL 初期化パラメータを設定しないで利用できる。
AUDIT_TRAIL = { DB| DB_EXTEND } の監査同様、システムテーブルの増加に注意し、適宜バックアップ後に削除する。
(※ バックアップデータも実データと同じ機密性で管理しなければ意味がないので取り扱い注意)
Oracle 10g の FGA 監査の設置例
監査用のオブジェクトの作成とテスト用 DML の投入
CREATE TABLE SAMPLE_TABLE
(
ID NUMBER(10,0) NOT NULL,
NAME VARCHAR2(250)
)
/
BEGIN
DBMS_FGA.ADD_POLICY(
OBJECT_NAME => 'SAMPLE_TABLE',
POLICY_NAME => 'CHECK_DANGER',
AUDIT_COLUMN => 'NAME',
AUDIT_CONDITION => 'NAME = ''ADMIN'' ', -- ADMIN を監査
STATEMENT_TYPES => 'INSERT,UPDATE,DELETE'
);
END;
/
TRUNCATE TABLE SAMPLE_TABLE;
INSERT INTO SAMPLE_TABLE (ID, NAME) VALUES (1,'SCOTT');
INSERT INTO SAMPLE_TABLE (ID, NAME) VALUES (2,'TIGER');
-- Check
INSERT INTO SAMPLE_TABLE (ID, NAME) VALUES (3,'ADMIN');
INSERT INTO SAMPLE_TABLE (ID, NAME) VALUES (4,'ADMINISTRATOR');
UPDATE SAMPLE_TABLE SET ID=10 WHERE NAME='ADMINISTRATOR';
-- ↓ ※※※ Not Check ※※※ ↓
UPDATE SAMPLE_TABLE SET ID=11 WHERE ID=3;
-- Check
UPDATE SAMPLE_TABLE SET NAME='GUEST' WHERE NAME='ADMIN';
-- Check
UPDATE SAMPLE_TABLE SET NAME='ADMIN' WHERE NAME='SCOTT';
UPDATE SAMPLE_TABLE SET NAME='SCOTT' WHERE NAME='GUEST';
-- Check
DELETE FROM SAMPLE_TABLE WHERE NAME='ADMIN';
FGA 監査結果の確認
監査テーブル DBA_FGA_AUDIT_TRAIL の結果の確認
UPDATE SAMPLE_TABLE SET ID=11 WHERE ID=3; が 監査にかかっていない点に注意が必要。
適切な監査ポリシを生成しなければ、情報のセキュリティホールが発生する。
SELECT DB_USER || ':' || SQL_TEXT FGA_LOG FROM DBA_FGA_AUDIT_TRAIL
WHERE TIMESTAMP >= SYSDATE - INTERVAL '1' MINUTE;
/* 結果 */
FGA_LOG
--------------------------------------------------------------------------------
TEST:INSERT INTO SAMPLE_TABLE (ID, NAME) VALUES (3,'ADMIN')
TEST:UPDATE SAMPLE_TABLE SET NAME='GUEST' WHERE NAME='ADMIN'
TEST:UPDATE SAMPLE_TABLE SET NAME='ADMIN' WHERE NAME='SCOTT'
TEST:DELETE FROM SAMPLE_TABLE WHERE NAME='ADMIN'
不要な監査ポリシは削除
/* ポリシの削除 */
BEGIN
DBMS_FGA.DROP_POLICY(
OBJECT_NAME => 'SAMPLE_TABLE',
POLICY_NAME => 'CHECK_DANGER'
);
END;
ライセンス
ファイングレイン監査には、Enterprise Edition が必要
サイト統合にともない代替情報の URL は不明