セキュリティ監査機能を有効にすると、監査レコードの保存方法も同時に設定されます。内部テーブルへの書き込み、ローカルディスクファイルへの書き込み、および監査ログへの書き込みの3つの方法がサポートされています。設定に応じた場所にアクセスすることで、監査レコードを確認できます。
ディスクファイル内の監査レコードの表示
セキュリティ監査情報は、非同期書き込みにより<インストールディレクトリ>/audit/配下に記録され、デフォルトでは/home/admin/oceanbase/audit/observer_xx_xxxxxx.audに保存されます。
例:
$ pwd
/home/admin/oceanbase/audit
$ cat observer_47454_20200924144931.aud
2020-10-04 13:48:10.635533
LENGTH : '408'
ACTION :[23] 'create table t1(c0 int)'
ACTION_NUMBER:[1] '0'
STATUS:[1] '0'
ENTRYID:[1] '5'
STATEMENTID:[1] '3'
DBID:[16] '1100611139404836'
SESSIONID:[10] '3221505515'
PROXY SESSIONID:[4] '2816'
TENANTID:[4] '1001'
USERID:[16] '1100611139404786'
DATABASE USER:[9] 'AUDITTEST'
CLIENT TENANT:[3] 'ora'
CLIENT USER:[9] 'AUDITTEST'
CLIENT ADDRESS:[13] 'xx.xx.xx.xx'
PROXY CLIENT ADDRESS:[13] 'xx.xx.xx.xx'
説明
ファイルが長すぎる場合、自動的に切り捨てられます。
監査ログ内の監査レコードの表示
説明
この機能はV4.4.2 BP2バージョンからサポートされています。
audit_trailがLOGに設定されている場合、監査レコードは監査ログファイルに書き込まれます。ログのアーカイブ、圧縮、ローテーション、クリーンアップ、暗号化などの管理戦略がサポートされています。
監査ログファイルはデフォルトで<インストールディレクトリ>/log/に配置されています。監査ログファイルの内容を確認することで、監査レコードを閲覧できます。監査ログの暗号化、アーカイブなどの管理操作については、監査ルールの設定と表示を参照してください。
内部テーブル内の監査レコードの表示
監査情報はシステムテーブルに直接書き込まれます。その中で、内部テーブル__all_tenant_security_audit_recordには監査レコードが格納され、内部テーブル__all_virtual_audit_operationまたは__all_virtual_audit_actionには監査関連のIDとNameのマッピングが格納されます。
Oracle互換のディクショナリビューを使用して、内部テーブルに記録された監査レコードを確認できます。
ディクショナリビュー |
機能の説明 |
|---|---|
| DBA_AUDIT_EXISTS | AUDIT EXISTSおよびAUDIT NOT EXISTSによって生成された監査追跡エントリを表示します。 |
| DBA_AUDIT_OBJECT | データベース内のすべてのオブジェクトに関する監査追跡エントリを表示します。 |
| DBA_AUDIT_SESSION | CONNECTおよびDISCONNECTに関するすべての監査追跡エントリを表示します。 |
| DBA_AUDIT_STATEMENT | データベース全体におけるGRANT、REVOKE、AUDIT、NOAUDIT、ALTER SYSTEMステートメントに関する監査追跡エントリを表示します。 |
| DBA_AUDIT_TRAIL | すべての監査追跡エントリを表示します。 |
| USER_AUDIT_OBJECT | 現在のユーザーがアクセス可能なオブジェクトに関する監査追跡エントリを表示します。 |
| USER_AUDIT_SESSION | 現在のユーザーの接続および切断に関する監査追跡エントリを表示します。 |
| USER_AUDIT_STATEMENT | 現在のユーザーが発行した GRANT、REVOKE、AUDIT、NOAUDIT、および ALTER SYSTEM ステートメントの監査トレイルエントリを表示します。 |
| USER_AUDIT_TRAIL | 現在のユーザーに関連するすべての監査トレイルエントリを表示します。 |
DBA_AUDIT_TRAIL の監査レコードを確認します。例:
obclient> SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL;
+----------+-------------+-----------+-----------------------------------------------------------------+
| USERNAME | USERHOST | TIMESTAMP | SQL_TEXT |
+----------+-------------+-----------+-----------------------------------------------------------------+
| AUD | xx.xx.xx.xx | 29-OCT-20 | DISCONNECT |
| AUD | xx.xx.xx.xx | 29-OCT-20 | CONNECT |
+----------+-------------+-----------+-----------------------------------------------------------------+