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認可がない 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以降の新しいインストールを実行する場合、(%%)認可はありません。