のぶろぐ 30代のインフラエンジニアはこうです

(;'Д`)ハァハァ ようやく世の中が無菌室で無いことに気づいたよ

Database vaultの構築手順

最近のPJTはJSOXやマイナンバーといった法律から監査やセキュリティに関して厳しくなってきています。

Database Vaultを利用することで、sys権限だとしても特定オブジェクトを参照禁止させるような制限も可能になり、なおかつアカウント管理や監査系の設定変更などについてもsysでは変更できなくさせて、専用のアカウントとさせる「権限分掌」が可能になります。無敵ユーザを作らずに、細かく権限を分けることは手間はかかりますが、よりセキュリティを強固にできるという考えから弊社では導入を進めているようです。

 

で環境構築については↓な感じです。

 

 

1)インスタンスログイン
sqlplus / as sysdba


2)DBV用ユーザ作成
CREATE USER dbvowner IDENTIFIED BY welcome1;
CREATE USER dbvacctmgr IDENTIFIED BY welcome1;
GRANT CREATE SESSION TO dbvowner;
GRANT CREATE SESSION TO dbvacctmgr;
GRANT SELECT ANY DICTIONARY TO dbvowner;
GRANT SELECT ANY DICTIONARY TO dbvacctmgr;


3)DBVユーザアカウント構成(dbvownerとdbvacctmgrはユーザ名のため任意でよい)
BEGIN DVSYS.CONFIGURE_DV (
dvowner_uname => 'dbvowner'
, dvacctmgr_uname => 'dbvacctmgr');
END;
/


4)無効化されたオブジェクトを再コンパイル
@?/rdbms/admin/utlrp.sql


5)vaultユーザで接続
connect dbvowner


6)Database Vaultを有効化
EXEC DBMS_MACADM.ENABLE_DV;


7)SYSDBAで接続
CONNECT / AS SYSDBA


8)再起動
shutdown immediate
startup


9)DBVが有効化されていることを確認
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';

10)dbvacctmgrで dbvownerに対してSELECT ANY DICTIONARYを設定(これを実施しないとOEMからDBVの設定画面にdbvownerでログインができない。)

SQL> GRANT SELECT ANY DICTIONARY TO DBVOWNER;

11)OEMCCから対象データベースのターゲット画面に進み、
 「セキュリティ」→「Datase Vault」を選択
 dbvownerでログイン