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##jsmithAUDIT_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表を問い合せます:SYSSYSTEMC##DVOWNERC##DVACCTMGRC##JSMITHC##CMACKGKRAMERHR
<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';コマンド SYSSYSTEMC##DVOWNERC##DVACCTMGRC##JSMITHC##CMACKGKRAMERHRSELECT 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: アクセスがブロックされました。セキュリティ・チームに確認してください