7 別のスキーマでのDDLの認可
Oracle Database Vault環境では、スキーマがレルムによって保護されているか、レルムで保護されたオブジェクトにアクセスできる場合、レルム認可またはオブジェクト権限によって、スキーマにはDDL制御が自動的に適用され、悪意のあるアクターがDDL変更を実行しないようにします。
前のテストで予期しない唯一の失敗は、GKRAMERがHRスキーマで索引作成を実行することを認可されていることです。
たとえば、悪意のあるユーザーがHRスキーマ内のプロシージャを変更する権限を持っている場合、プロシージャに悪意のあるコードを挿入でき、Database Vaultレルムによって信頼されることになります。この状況を回避するために、Oracle Database VaultではDDL文に対する制御が強制されます。
GKRAMERがHRオブジェクトに対してCREATE INDEXを実行できるようにするには、GKRAMERにDDLの実行を認可する必要があります:
C##JSMITHとしてプラガブル・データベースに接続します:connect c##jsmith@pdb_name-
SELECT * FROM DBA_DV_DDL_AUTH ORDER BY 1; EXEC DBMS_MACADM.AUTHORIZE_DDL('GKRAMER','HR'); SELECT * FROM DBA_DV_DDL_AUTH ORDER BY 1; GKRAMERのDDL認可のみを変更したため、GRKAMERのコマンドのみを再テストします:GRKAMERとして接続します:connect GRKAMER- 次のコマンドを実行します。
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';GKRAMERで作成した索引を削除できないことも表示されます。これは、作成したDatabase Vaultコマンド・ルールによって、HRスキーマのDROP INDEXコマンドが防止されているためです。コマンド DDL認可がない GKRAMERDDL認可がある GKRAMERSELECT COUNT(*) FROM HR.EMPLOYEES;ORA-01031: 権限が不足していますORA-01031: 権限が不足していますCREATE TABLE HR.EMP2 AS SELECT * FROM HR.EMPLOYEES;ORA-01031: 権限が不足していますORA-01031: 権限が不足していますCREATE INDEX HR.TEST_IDX ON HR.EMP2(HIRE_DATE,LAST_NAME);ORA-47415: DDLに対するOracle Database Vault認可が不十分です成功DROP INDEX HR.TEST_IDX;ORA-01418: 指定された索引は存在しません。成功DROP TABLE HR.EMP2;ORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反ですORA-47401: CREATE INDEX(HR.TEST_IDXに対する)のレルム違反ですノート:
以前のOracle Databaseリリースからアップグレードした場合は、DBA_DV_DDL_AUTHビューに(%%)が表示される場合があります。この認可は後のリリースで追加されたため、Oracleでは既存のDDLで許可される動作を続行できるようにすることを選択しました。Oracle Database 19c以降の新しいインストールを実行する場合、(%%)認可はありません。