6 統合監査ポリシーの作成および監査レコードへのアクセス
Oracle Database Vault 23aiでは、統合監査証跡は保護され、適切なOracle Database Vault認可が指定されていないかぎり、アクセスできません。この保護は、SYS
やSYSTEM
などの特権ユーザー、DBAロールを持つユーザーおよびAUDIT_VIEWER
またはAUDIT_ADMIN
ロールを持つユーザーにまで及びます。
Oracle Database 23aiでこのタスクを実行するには、次の手順を実行します:
AUDIT_ADMIN
ロールWITH ADMIN OPTION
を付与しますDV_OWNER
ロールを使用して、ユーザーのAUDIT_ADMIN
を認可します
職務の分離を強制しているため、この新しいデータベース・ユーザーを作成するには、2つの異なるデータベース・ユーザーを使用します。例:
AUDIT_ADMIN
ロールWITH ADMIN OPTION
の付与および認可
C##JSMITH
として接続します:connect c##jsmith
AUDIT_ADMIN
ロールWITH ADMIN OPTION
をC##CMACK
に付与します:GRANT AUDIT_ADMIN TO C##CMACK WITH ADMIN OPTION CONTAINER=ALL;
C##JSMITH
には適切なDV_ACCTMGR
ロールとAUDIT_ADMIN
ロールがあり、AUDIT_ADMIN
にWITH ADMIN OPTION
が付与されているため、単一のデータベース・ユーザーが2つのステップを完了できます。ただし、
C##CMACK
にAUDIT_ADMIN
ロールの使用を認可するには、DV_ADMIN
ロールを持つユーザーが認可を実行する必要があります。これにより、監査データの表示や管理など、高い権限を持つロールを持つデータベース・ユーザーは、明示的な認可がなければは実行できません。C##JSMITH
とC##CMACK
の両方を使用して、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューを問い合せようとします:connect c##jsmith@pdb_name SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;
connect c##cmack@pdb_name SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;
Oracle Database 23aiでは、両方のユーザーに予想される結果として、
「ORA-01031: 権限が不足しています」
が表示されます。- コンテナ・データベースおよび各プラガブル・データベースで
AUDIT_ADMIN
ロールを使用するようにC##CMACK
を認可します:connect c##jsmith EXEC DBMS_MACADM.AUTHORIZE_AUDIT_ADMIN('C##CMACK');
connect c##jsmith@pdb_name EXEC DBMS_MACADM.AUTHORIZE_AUDIT_ADMIN('C##CMACK');
C##CMACK
では、コンテナ・データベースと各プラガブル・データベースの両方で統合監査操作を問い合せて管理できるようになりました。ただし、C##JSMITH
はこれを実行することはできません。注意:
C##JSMITH
は、自分自身にAUTHORIZE_AUDIT_ADMIN
に対する認可を付与できます。これは、最小限の職務分離を伴う単純な例です。自分自身を認可することからC##JSMITH
を完全に保護するには、ユーザーにAUDIT_ADMIN
ロールとDV_ADMIN
ロールの両方を付与しないでください。リスクを最小限に抑え、職務の分離を強制するには、AUDIT_ADMIN
ロールを付与する別のユーザーを指定します。 C##CMACK
として、統合監査操作を問い合せて認可を確認します:connect c##cmack@pdb_name SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;
統合監査証跡の数が表示されます。
監査ポリシーの作成
C##CMACK
として接続します:connect c##cmack@pdb_name
- 次の監査ポリシーを作成します:
CREATE AUDIT POLICY aud_protect_hr_tables ACTIONS COMPONENT=DV REALM VIOLATION ON "Protect HR tables"; AUDIT policy aud_protect_hr_tables;
CREATE AUDIT POLICY aud_protect_hr_indexes ACTIONS COMPONENT=DV REALM VIOLATION ON "Protect HR indexes"; AUDIT policy aud_protect_hr_indexes;
CREATE AUDIT POLICY aud_protect_rule_set_trs ACTIONS COMPONENT=DV RULE SET ON "Trusted Rule Set"; AUDIT policy aud_protect_rule_set_trs;
- 統合監査ポリシーが存在し、有効になっていることを確認します:
SELECT POLICY_NAME FROM AUDIT_UNIFIED_ENABLED_POLICIES WHERE POLICY_NAME LIKE 'AUD%' ORDER BY 1;
出力は次のようになります。POLICY_NAME _________________________________ AUD_PROTECT_HR_INDEXES AUD_PROTECT_HR_TABLES AUD_PROTECT_RULE_SET_TRS
- 監査イベントを生成するには、次の各ユーザーとして
HR.EMPLOYEES
表を問い合せます:SYS
SYSTEM
C##DVOWNER
C##DVACCTMGR
C##JSMITH
C##CMACK
GKRAMER
HR
<user>
として接続します:connect <user>
- 次のコマンドを実行します。
SELECT COUNT(*) FROM HR.EMPLOYEES; CREATE TABLE HR.EMP2 AS SELECT * FROM HR.EMPLOYEES; CREATE INDEX HR.TEST_IDX ON HR.EMP2(HIRE_DATE,LAST_NAME); DROP INDEX HR.TEST_IDX; DROP TABLE HR.EMP2;
C##CMACK
として、統合監査ビューを問い合せてDatabase Vault関連のレコードを識別し、結果を次の表と比較します:SELECT EVENT_TIMESTAMP, DBUSERNAME, OBJECT_SCHEMA, OBJECT_NAME, SQL_TEXT, RETURN_CODE FROM UNIFIED_AUDIT_TRAIL WHERE AUDIT_TYPE = 'Database Vault' AND OBJECT-SCHEMA = 'HR';
コマンド SYS
SYSTEM
C##DVOWNER
C##DVACCTMGR
C##JSMITH
C##CMACK
GKRAMER
HR
SELECT COUNT(*) FROM HR.EMPLOYEES;
ORA-01031: 権限が不足しています
ORA-01031: 権限が不足しています
ORA-00942: 表またはビューが存在しません
ORA-00942: 表またはビューが存在しません
ORA-01031: 権限が不足しています
ORA-41900: "HR"."EMPLOYEES"に対してREAD権限がありません
ORA-01031: 権限が不足しています
成功
CREATE TABLE HR.EMP2 AS SELECT * FROM HR.EMPLOYEES;
ORA-01031: 権限が不足しています
ORA-01031: 権限が不足しています
ORA-00942: 表またはビューが存在しません
ORA-00942: 表またはビューが存在しません
ORA-01031: 権限が不足しています
ORA-41900: "HR"."EMPLOYEES"に対してREAD権限がありません
ORA-01031: 権限が不足しています
成功
CREATE INDEX HR.TEST_IDX ON HR.EMP2(HIRE_DATE,LAST_NAME);
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-00942: 表またはビューが存在しません
ORA-00942: 表またはビューが存在しません
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-41900: "HR"."EMPLOYEES"に対してREAD権限がありません
ORA-47415: DDLに対するOracle Database Vault認可が不十分です
成功
DROP INDEX HR.TEST_IDX;
ORA-01418: 指定された索引は存在しません。
ORA-01418: 指定された索引は存在しません。
ORA-01418: 指定された索引は存在しません。
ORA-01418: 指定された索引は存在しません。
ORA-01418: 指定された索引は存在しません。
ORA-01418: 指定された索引は存在しません。
ORA-01418: 指定された索引は存在しません。
成功
DROP TABLE HR.EMP2;
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反です
ORA-47306: 20000: アクセスがブロックされました。セキュリティ・チームに確認してください