7 別のスキーマでのDDLの認可

Oracle Database Vault環境では、スキーマがレルムによって保護されているか、レルムで保護されたオブジェクトにアクセスできる場合、レルム認可またはオブジェクト権限によって、スキーマにはDDL制御が自動的に適用され、悪意のあるアクターがDDL変更を実行しないようにします。

前のテストで予期しない唯一の失敗は、GKRAMERHRスキーマで索引作成を実行することを認可されていることです。

たとえば、悪意のあるユーザーがHRスキーマ内のプロシージャを変更する権限を持っている場合、プロシージャに悪意のあるコードを挿入でき、Database Vaultレルムによって信頼されることになります。この状況を回避するために、Oracle Database VaultではDDL文に対する制御が強制されます。

GKRAMERHRオブジェクトに対してCREATE INDEXを実行できるようにするには、GKRAMERにDDLの実行を認可する必要があります:

  1. C##JSMITHとしてプラガブル・データベースに接続します:
    connect c##jsmith@pdb_name
  2. 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;
  3. GKRAMERのDDL認可のみを変更したため、GRKAMERのコマンドのみを再テストします:
    1. GRKAMERとして接続します:
      connect GRKAMER
    2. 次のコマンドを実行します。
      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;
    3. 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認可がないGKRAMER DDL認可があるGKRAMER
      SELECT 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以降の新しいインストールを実行する場合、(%%)認可はありません。