3.8.1 CREATE AUDITの形式と規則
(1) 機能
監査証跡として記録する監査対象イベント,及びその対象を定義します。
(2) 使用権限
- 監査権限を持つユーザ
-
監査権限を持つユーザが,CREATE AUDITの各定義文を実行できます。
(3) 形式
CREATE AUDIT 〔AUDITTYPE {PRIVILEGE|EVENT|ANY}〕 FOR 操作種別 〔選択オプション〕 〔WHENEVER {SUCCESSFUL|UNSUCCESSFUL|ANY}〕
- ≪各項目の詳細≫
操作種別::={ ANY |SESSION 〔{セッション種別|ANY}〕 |PRIVILEGE 〔{権限操作種別|ANY}〕 |DEFINITION 〔{オブジェクト定義イベント種別|ANY}〕 |ACCESS 〔{オブジェクト操作イベント種別|ANY}〕 |UTILITY 〔{ユティリティイベント種別|ANY}〕} 選択オプション::={ON オブジェクト名|BY AUTHORIZATION 認可識別子} オブジェクト名::= {FUNCTION 認可識別子.ルーチン識別子 |INDEX 認可識別子.インデクス識別子 |LIST 認可識別子.表識別子 |PROCEDURE 認可識別子.ルーチン識別子 |RDAREA RDエリア名 |SCHEMA 認可識別子 |TABLE 〔認可識別子. 〕表識別子 |TRIGGER 認可識別子.トリガ識別子 |TYPE 認可識別子.データ型識別子 |VIEW 認可識別子.表識別子 |SEQUENCE 認可識別子.順序数生成子識別子} セッション種別::= {CONNECT|DISCONNECT|AUTHORIZATION} 権限操作種別::= {GRANT|REVOKE} オブジェクト定義イベント種別::= {CREATE|DROP|ALTER} オブジェクト操作イベント種別::= {SELECT|INSERT|UPDATE|DELETE|PURGE|ASSIGN|CALL|LOCK |NEXT VALUE} ユティリティイベント種別::= {PDLOAD|PDRORG|PDEXP|PDCONSTCK}
(4) オペランド
(a) 〔AUDITTYPE {PRIVILEGE|EVENT|ANY}〕
権限チェック時の監査証跡を取得するか,イベントの最終結果の監査証跡を取得するかを指定します。
- PRIVILEGE
-
権限チェック時の監査証跡を取得します。
- EVENT
-
イベントの最終結果の監査証跡を取得します。
- ANY
-
上記のすべての種別についての監査証跡を取得します。
PRIVILEGE,EVENT,及びANYは,個別で定義,及び削除をします。例えば,同じ監査イベントに対して,PRIVILEGE,EVENT,及びANYをすべて定義した状態で,ANYだけをDROP AUDITで削除しても,PRIVILEGE,及びEVENTの定義は残ります(監査対象のままとなります)。
(b) 操作種別
::={ANY |SESSION 〔{セッション種別|ANY}〕 |PRIVILEGE 〔{権限操作種別|ANY}〕 |DEFINITION 〔{オブジェクト定義イベント種別|ANY}〕 |ACCESS 〔{オブジェクト操作イベント種別|ANY}〕 |UTILITY 〔{ユティリティイベント種別|ANY}〕}
監査対象とする操作種別を指定します。個々の操作種別とANYは,個別に定義,及び削除をします。例えば,SESSION,PRIVILEGE,及びANYを定義した状態で,ANYだけをDROP AUDITで削除しても,SESSION,及びPRIVILEGEの定義は残ります(監査対象のままとなります)。
- ANY
-
すべての操作種別を監査対象とします。
- SESSION 〔{セッション種別|ANY}〕
-
セッションセキュリティイベントを監査対象にする場合に指定します。
ANYはすべてのセッションセキュリティイベントを監査対象とします。個々のセッション種別とANYは,個別に定義,及び削除をします。例えば,CONNECT,AUTHORIZATION,及びANYを定義した状態で,ANYだけをDROP AUDITで削除しても,CONNECT,及びAUTHORIZATIONの定義は残ります(監査対象のままとなります)。
- PRIVILEGE 〔{権限操作種別|ANY}〕
-
権限管理イベントを監査対象にする場合に指定します。ANYはすべての権限管理イベントを監査対象とします。個々の権限操作種別とANYは,個別で定義,及び削除をします。例えば,GRANT,REVOKE,及びANYを定義した状態で,ANYだけをDROP AUDITで削除しても,GRANT,及びREVOKEの定義は残ります(監査対象のままとなります)。
- DEFINITION 〔{オブジェクト定義イベント種別|ANY}〕
-
定義系SQLイベントを監査対象にする場合に指定します。ANYはすべての定義系SQLイベントを監査対象とします。個々のオブジェクト定義イベント種別とANYは,個別で定義,及び削除をします。例えば,CREATE,DROP,及びANYを定義した状態で,ANYだけをDROP AUDITで削除しても,CREATE,及びDROPの定義は残ります(監査対象のままとなります)。
- ACCESS 〔{オブジェクト操作イベント種別|ANY}〕
-
操作系SQLイベントを監査対象にする場合に指定します。ANYはすべての操作系SQLイベントを監査対象とします。個々のオブジェクト操作種別とANYは,個別で定義,及び削除をします。例えば,SELECT,INSERT,及びANYを定義した状態で,ANYだけをDROP AUDITで削除しても,SELECT,及びINSERTの定義は残ります(監査対象のままとなります)。
- UTILITY 〔{ユティリティイベント種別|ANY}〕
-
ユティリティイベントを監査対象に定義する場合に指定します。ANYはすべてのユティリティイベントを監査対象とします。個々のユティリティイベント種別とANYは,個別で定義,及び削除をします。例えば,PDLOAD,PDRORG,及びANYを定義した状態で,ANYだけをDROP AUDITで削除しても,PDLOAD,及びPDRORGの定義は残ります(監査対象のままとなります)。
(c) 〔WHENEVER {SUCCESSFUL|UNSUCCESSFUL|ANY}〕
監査イベントの最終結果の成否又は権限チェックの成否によって,その監査イベントを監査対象とするかどうかを指定します。WHENEVERの指定に対して取得する監査証跡を次の表に示します。
WHENEVER の指定 |
AUDITTYPEにPRIVILEGE又は ANYを指定した場合 |
AUDITTYPEにEVENT又は ANYを指定した場合 |
---|---|---|
SUCCESSFUL |
権限チェックが成功した場合だけ,権限チェック時の監査証跡を取得します。 |
監査イベントが成功した場合だけ,監査イベントの最終結果の監査証跡を取得します。 |
UNSUCCESSFUL |
権限チェックが失敗した場合だけ,権限チェック時の監査証跡を取得します。 |
監査イベントが失敗した場合だけ,監査イベントの最終結果の監査証跡を取得します。 |
ANY |
権限チェックの成否に関係なく権限チェック時の監査証跡を取得します。 |
監査イベントの成否に関係なく監査イベントの最終結果の監査証跡を取得します。 |
イベントの最終結果によっては一部失敗という結果があります。一部失敗時の監査証跡はSUCCESSFUL,UNSUCCESSFUL,ANYのどれを指定しても出力します。
SUCCESSFUL,UNSUCCESSFUL,及びANYは,個別で定義,及び削除をします。例えば,同じ監査イベントに対して,SUCCESSFUL,UNSUCCESSFUL,及びANYをすべて定義した状態で,ANYだけをDROP AUDITで削除しても,SUCCESSFUL,及びUNSUCCESSFULの定義は残ります(監査対象のままとなります)。
(d) セッション種別::={CONNECT|DISCONNECT|AUTHORIZATION}
監査対象とするHiRDBに対する接続,接続中のユーザ変更,又は切断操作を指定します。セッション種別とその監査イベントが発生する操作を次の表に示します。
セッション種別 |
権限チェックの監査イベントが 発生する操作(AUDITTYPEにPRIVILEGEを指定した場合) |
イベントの最終結果の監査証跡を取得する監査イベントが発生する操作(AUDITTYPEにEVENTを指定した場合) |
---|---|---|
CONNECT |
HiRDBへの接続 |
同左 |
DISCONNECT |
なし |
HiRDBからの切断 |
AUTHORIZATION |
SET SESSION AUTHORIZATION文の実行 |
同左 |
(e) 権限操作種別::={GRANT|REVOKE}
権限に関する操作を監査対象とする場合に指定します。権限操作種別とその監査イベントが発生する操作を次の表に示します。
権限操作種別 |
権限チェックの監査イベントが 発生する操作(AUDITTYPEにPRIVILEGEを指定した場合) |
イベントの最終結果の監査証跡を取得する監査イベントが発生する操作(AUDITTYPEにEVENTを指定した場合) |
---|---|---|
GRANT |
GRANTの実行 |
同左 |
REVOKE |
REVOKEの実行 |
同左 |
(f) オブジェクト定義イベント種別::={CREATE|DROP|ALTER}
監査対象とするオブジェクトの作成,削除,又は定義変更の操作を指定します。オブジェクト定義イベント種別とその監査イベントが発生する操作を次の表に示します。
オブジェクト定義イベント種別 |
権限チェックの監査イベントが 発生する操作(AUDITTYPEにPRIVILEGEを指定した場合) |
イベントの最終結果の監査証跡を取得する監査イベントが発生する操作(AUDITTYPEにEVENTを指定した場合 |
---|---|---|
CREATE |
次のSQLの実行
|
同左 |
DROP |
次のSQLの実行
|
同左 |
ALTER |
次のSQLの実行
|
同左 |
- 注※1
-
内部的にCREATE PROCEDUREが実行されます。
- 注※2
-
呼び出し対象となるプロシジャのインデクス情報が無効な場合,呼び出しごとに内部的にCREATE PROCEDUREが実行されます。このような場合,ALTER PROCEDURE又はALTER ROUTINEで呼び出し対象となるプロシジャのSQLオブジェクトを再作成することで,呼び出しごとに内部的に実行されるCREATE PROCEDUREが実行されなくなります。
- 注※3
-
ビューの基表からのSELECT権限が削除された場合,ビュー表を削除するために内部的にDROP VIEWが実行されます。
オブジェクト定義イベントで行われる権限チェックには,以下のようなものがあります。
-
監査イベントでのスキーマ定義権限チェック
-
ストアドプロシジャ定義時,又はストアドプロシジャのSQLオブジェクト再作成時での,SQL手続き文中の操作系SQL及び制御系SQLのアクセス権限チェック
-
メンバに手続きを含むユーザ定義型の定義時,又はユーザ定義型のメンバのSQLオブジェクト再作成時での,SQL手続き文中の操作系SQL及び制御系SQLのアクセス権限チェック
-
トリガ定義時,又はトリガのSQLオブジェクト再作成時での,トリガSQL文中の操作系SQL及び制御系SQLのアクセス権限チェック
-
ビュー定義時の基表へのアクセス権限チェック
-
(g) オブジェクト操作イベント種別::={SELECT|INSERT|UPDATE|DELETE|PURGE|ASSIGN |CALL|LOCK|NEXT VALUE}
監査対象とするオブジェクトに対する操作を指定します。オブジェクト操作イベントの監査対象定義を指定した場合,手続き及びトリガSQL文中のオブジェクト操作も監査対象となります。オブジェクト操作イベント種別とその監査イベントが発生する操作を次の表に示します。
オブジェクト操作イベント種別 |
権限チェックの監査イベントが 発生する操作(AUDITTYPEにPRIVILEGEを指定した場合) |
イベントの最終結果の監査証跡を取得する監査イベントが発生する操作(AUDITTYPEにEVENTを指定した場合) |
---|---|---|
SELECT |
|
|
INSERT |
|
|
UPDATE |
|
|
DELETE |
|
|
PURGE |
|
|
CALL |
|
|
LOCK |
|
|
ASSIGN |
|
|
NEXT VALUE |
|
|
- 注※
-
動的SELECT文を含みます。
次のSQL文中での問合せは,オブジェクト操作イベント種別がSELECTで定義されている場合に,監査証跡を出力します。
-
INSERT文で指定した問合せ指定
-
UPDATE文及びDELETE文の探索条件中に指定した副問合せ
-
リストに対する問合せ
-
(h) ユティリティイベント種別::={PDLOAD|PDRORG|PDEXP|PDCONSTCK}
ユティリティイベントを監査対象として定義します。ユティリティイベント種別とその監査イベントが発生する操作を次の表に示します。
ユティリティ イベント種別 |
権限チェックの監査イベントが 発生する操作(AUDITTYPEにPRIVILEGEを指定した場合) |
イベントの最終結果の監査証跡を取得する監査イベントが発生する操作(AUDITTYPEにEVENTを指定した場合) |
---|---|---|
PDLOAD |
pdloadの実行 |
同左 |
PDRORG |
pdrorgの実行 |
同左 |
PDEXP |
pdexp,pddefrevの実行 |
同左 |
PDCONSTCK |
pdconstckの実行 |
同左 |
(i) 選択オプション::={ON オブジェクト名|BY AUTHORIZATION 認可識別子}
- ON オブジェクト名
-
監査証跡を取得するオブジェクトを絞り込む場合に指定します。監査証跡の取得対象とするオブジェクトを指定します。各オブジェクト名の名称規則については,「名前の指定」を参照してください。
オブジェクトにパブリックビュー,パブリック手続き,又はパブリック関数を指定した場合は,認可識別子をPUBLICと指定してください。
ディクショナリ表を指定する場合は,オブジェクト名にTABLEを指定し,認可識別子を省略して表識別子だけを指定してください。その場合,ディクショナリ表SQL_AUDITSのオブジェクト所有者の列には’(Data dictionary)’を格納します。
- BY AUTHORIZATION 認可識別子
-
監査対象とするイベント実行者の認可識別子を指定します。
(5) 規則
-
セキュリティ監査機能については,マニュアル「HiRDB システム運用ガイド」を参照してください。
-
実際に監査証跡を記録するには,システム定義のpd_auditオペランドの設定,又はpdaudbeginコマンドを実行する必要があります。
-
CREATE AUDIT,及びDROP AUDITを実行した際の監査証跡は,セキュリティ監査機能が有効な場合は必ず記録します。
(6) 留意事項
-
CREATE AUDITは,OLTP下のX/Openに従ったUAPからは指定できません。
-
監査対象イベントの定義では,操作種別とそのほかのオペランドとの組み合わせによって,証跡が出力されない場合があります。そのような定義の指定をした場合は,KFPA19680-Eメッセージが出力されます。次の表に指定可否の組み合わせの詳細を示します。
表3‒11 イベントタイプ,イベントサブタイプとAUDITTYPEの指定可否 イベントタイプ
イベント
サブタイプ
AUDITTYPE指定可否
PRIVILEGE
EVENT
ANY
ANY
−
△※1※2
○
△※1※2
SESSION
DISCONNECT
×
○
△※2
ANY
△※2
○
△※2
上記以外のすべて
○
○
○
PRIVILEGE
すべて
○
○
○
DEFINITION
すべて
○
○
○
ACCESS
CALL
×
○
△※1
ANY
△※1
○
△※1
上記以外のすべて
○
○
○
UTILITY
すべて
○
○
○
表3‒12 イベントタイプ,イベントサブタイプとオブジェクト名の指定可否(1/2) イベント
タイプ
イベント
サブタイプ
FUNCTION
INDEX
LIST
PROCEDURE
ANY
−
△
△
△
△
SESSION
すべて
×
×
×
×
PRIVILEGE
GRANT
×
×
×
×
REVOKE
×
×
×
×
ANY
×
×
×
×
DEFINITION
CREATE
○
○
×
○
DROP
○
○
×
○
ALTER
○
○
×
○
ANY
○
○
×
○
ACCESS
SELECT
×
×
○
×
INSERT
×
×
×
×
UPDATE
×
×
×
×
DELETE
×
×
×
×
PURGE
×
×
×
×
ASSIGN
×
×
○
×
CALL
×
×
×
○
LOCK
×
×
×
×
NEXT VALUE
×
×
×
×
ANY
×
×
△
△
UTILITY
PDLOAD
×
×
×
×
PDRORG
×
×
×
×
PDEXP
×
×
×
○
PDCONSTCK
×
×
×
×
ANY
×
×
×
△
表3‒13 イベントタイプ,イベントサブタイプとオブジェクト名の指定可否(2/2) イベント
タイプ
イベント
サブタイプ
RDAREA
SCHEMA
SERVER
TABLE
TRIGGER
TYPE
VIEW
SEQUENCE
ANY
−
△
△
△
△
△
△
△
△
SESSION
すべて
×
×
×
×
×
×
×
×
PRIVILEGE
GRANT
×
×
×
○
×
×
○
×
REVOKE
×
×
×
○
×
×
○
×
ANY
×
×
×
○
×
×
○
×
DEFINITION
CREATE
○
○
○
○
○
○
○
○
DROP
×
○
○
○
○
○
○
○
ALTER
○
×
×
○
○
×
○
×
ANY
△
△
△
○
○
△
○
△
ACCESS
SELECT
×
×
×
○
×
×
○
×
INSERT
×
×
×
○
×
×
○
×
UPDATE
×
×
×
○
×
×
○
×
DELETE
×
×
×
○
×
×
○
×
PURGE
×
×
×
○
×
×
×
×
ASSIGN
×
×
×
○
×
×
×
×
CALL
×
×
×
×
×
×
×
×
LOCK
×
×
×
○
×
×
○
×
NEXT VALUE
×
×
×
×
×
×
×
○
ANY
×
×
×
△
×
×
△
△
UTILITY
PDLOAD
×
×
×
○
×
×
×
○
PDRORG
×
○
×
○
×
×
×
×
PDEXP
×
×
×
○
○
×
○
×
PDCONSTCK
×
×
×
○
×
×
×
×
ANY
×
△
×
○
△
×
△
△
-
AUDITTYPE句,FOR <操作種別>及び各種別,WHENEVER句の中にあるANY指定を定義している状態でバージョンアップする場合,個々の種別が増えたときはすべて監査対象に含まれます。
例えば,CREATE AUDIT FOR ANY を定義している状態で,バージョンアップをして操作種別が新たに増えた場合,その操作種別も自動的に監査対象になります。
-
既に定義されている監査対象イベントの定義をCREATE AUDIT文で実行することはできません。KFPA11908-Eメッセージが出力されます。
(7) 使用例
-
すべての監査イベントの権限チェック時を監査対象として定義します。
CREATE AUDIT FOR ANY WHENEVER ANY
-
HiRDBへの接続の権限チェック時を監査対象として定義します。
CREATE AUDIT FOR SESSION CONNECT
-
GRANT文実行の権限チェック時を監査対象として定義します。
CREATE AUDIT FOR PRIVILEGE GRANT
-
オブジェクト作成の権限チェック時を監査対象として定義します。
CREATE AUDIT FOR DEFINITION CREATE
-
INSERTの権限チェック時を監査対象として定義します。
CREATE AUDIT FOR ACCESS INSERT
-
すべての監査イベントを監査対象として定義します。
CREATE AUDIT AUDITTYPE ANY FOR ANY
-
すべての監査イベントのイベント終了時を監査対象として定義します。
CREATE AUDIT AUDITTYPE EVENT FOR ANY
-
監査証跡の取得対象オブジェクトを表USER1.T1に絞り込みます。
CREATE AUDIT AUDITTYPE EVENT FOR ANY ON TABLE “USER1”.”T1”
-
監査証跡の取得対象をUSER1に絞り込みます。
CREATE AUDIT AUDITTYPE ANY FOR ANY BY AUTHORIZATION ”USER1”