Oracle Database Vaultを使用して開始する前に、これをOracle Databaseに登録する必要があります。
内容は次のとおりです。
Oracle Database Vaultは、非マルチテナント環境またはマルチテナント環境のどちらでも登録できます。
内容は次のとおりです。
Oracle Oracleのインストール後に、Oracle Database VaultをインストールしたOracle Databaseに登録(すなわち構成および有効化)する必要があります。
Oracle Databaseには、インストール・プロセスでデフォルトのデータベースを含めるように選択した場合、Database Vaultが付属しますが、このDatabase Vaultを使用するには登録する必要があります。カスタム・データベースを作成する場合、DBCAを使用してDatabase Vaultをインストールし、そのデータベースに対して有効にすることができます。登録プロセスの一部として、Database Vault管理者アカウント作成します。登録プロセスでは、Oracle Label Securityがまだ有効ではない場合、有効になります。Oracle Label SecurityはOracle Database Vaultに必要ですが、別にOracle Label Securityの使用を開始してOracle Label Securityポリシーを作成する場合を除き、別個のライセンスは必要ありません。このプロシージャは、現在のプラガブル・データベース(PDB)、および単一インスタンスとOracle RACの両方のインストールに適用されます。Database Vaultがすでに有効になっているかどうかの確認については、「Oracle Database Vaultが構成および有効化されていることの確認」を参照してください。
この項では、Oracle Database Vaultを非マルチテナント環境において登録する方法、およびマルチテナント環境において登録する複数の方法を説明します。
非マルチテナント環境では、SQL*PlusからOracle Database Vaultを登録します。
関連項目:
この手順が正しく実行されたことを確認する方法については、「Oracle Database Vaultが構成および有効化されていることの確認」を参照してください
Oracle Database Vault Administratorへのログインについては、「Oracle Database Vaultへのログイン」を参照してください
バックアップ・アカウント作成の重要性の詳細は、「バックアップOracle Database Vaultアカウント」を参照してください
SQL*Plusでは、CDBルートを管理する共通ユーザーでOracle Database Vaultを登録できます。
関連項目:
この手順が正しく実行されたことを確認する方法については、「Oracle Database Vaultが構成および有効化されていることの確認」を参照してください
Oracle Database Vault Administratorへのログインについては、「Oracle Database Vaultへのログイン」を参照してください
バックアップ・アカウントの重要性については、「バックアップOracle Database Vaultアカウント」を参照してください
マルチテナント環境では、Oracle Database Vaultをまずルートに登録して、それからPDBに登録する必要があります。
ORA-47503「Database VaultはCDB$ROOTで有効化されていません。」
エラーが表示されます。関連項目:
この手順が正しく実行されたことを確認する方法については、「Oracle Database Vaultが構成および有効化されていることの確認」を参照してください
Oracle Database Vault Administratorへのログインについては、「Oracle Database Vaultへのログイン」を参照してください
マルチテナント環境では、SQL*Plusから、すでにDatabase Vaultが有効になっているデータベースに接続できます。
関連項目:
この手順が正しく実行されたことを確認する方法については、「Oracle Database Vaultが構成および有効化されていることの確認」を参照してください
Oracle Database Vault Administratorへのログインについては、「Oracle Database Vaultへのログイン」を参照してください
V$OPTION
動的ビューと、DVSYS.DBA_DV_STATUS
およびDBA_OLS_STATUS
データ・ディクショナリ・ビューは、Oracle Databaseが構成されて有効になっているかどうかを確認します。
V$OPTION
動的ビューの問い合せは以下の要領で行います。
Oracle Database Vaultが構成および有効化されていることを確認するには、次の問合せを実行して、VALUE
設定がTRUE
と表示される必要があります。
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
Oracle Label Securityが有効化されているかどうかを確認するには、次のようにV$OPTION
動的ビューに問い合せます。
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';
DVSYS.DBA_DV_STATUS
データ・ディクショナリ・ビューの問合せは、以下の要領で行います。SELECT * FROM DVSYS.DBA_DV_STATUS;
次のような出力が表示されます。
NAME STATUS -------------------- ----------- DV_CONFIGURE_STATUS FALSE DV_ENABLE_STATUS FALSE
Oracle Label Securityの有効化および構成のステータスを確認するには、DBA_OLS_STATUS
データ・ディクショナリ・ビューに問い合わせます。この場合、DVSYS.DBA_DV_STATUS
の場合と同様の出力が得られます。
Oracle Enterprise Manager Cloud Control (Cloud Control)には、Oracle Database Vaultページが用意されています。
このチュートリアルでは、HR
スキーマの周辺でレルムを作成する方法を示します。
内容は次のとおりです。
このチュートリアルでは、Oracle Database Vault PL/SQLパッケージを使用することで、HR
サンプル・データベース・スキーマに関わるレルムを作成します。
HR
スキーマのEMPLOYEES
表には、管理権限を使用したアクセスも含め、企業内のほとんどの社員に公開しない給与などの情報が含まれています。これを実現するには、HR
スキーマをデータベース内の保護ゾーン(Oracle Database Vaultではレルムと呼ぶ)のセキュア・オブジェクトに追加します。そして、このレルムに制限付きの認可を付与します。その後、レルムをテストして適切に保護されていることを確認します。最後に、レポートを実行し、レルムをテストする際に試行するような疑わしいアクティビティの監査証跡をOracle Database Vaultがどのように作成するかを確認します。
レルムでは、1つ以上のスキーマ、個々のスキーマ・オブジェクトおよびデータベース・ロールを保護できます。
レルムを作成したら、レルム内のスキーマやスキーマ・オブジェクトに適用するセキュリティ制限を作成します。
まず、HR
スキーマにレルムを作成します。
この段階で、レルムが作成されていますが、それに対する認可は割り当てられていません。このチュートリアルで後ほど対応します。
この時点では、レルムが保護するデータベース・オブジェクトにアクセスする、またはそれらを操作するデータベース・アカウントもロールもありません。
そのため、この手順でデータベース・アカウントまたはデータベース・ロールを認可し、レルム内のスキーマにアクセスできるようにします。SEBASTIAN
ユーザー・アカウントを作成します。
(「手順6: レルムのテスト」でレルムをテストする際に必要なため、SQL*Plusを終了しないでください。)
この段階では、ユーザーSEBASTIAN
に、READ ANY TABLE
システム権限があるとしてもレルムをテストさせます。
SEBASTIAN
にはREAD ANY TABLE
システム権限がありますが、HR.EMPLOYEES
表を問合せできません。これは、HR AppsレルムがREAD ANY TABLE
システム権限よりも優先されるためです。レルムをテストするには、HR
以外のユーザーとしてEMPLOYEES
表にアクセスを試みる必要があります。
通常、SYSTEM
アカウントにはHR
スキーマのすべてのオブジェクトに対するアクセス権がありますが、この場合はOracle Database Vaultを使用してEMPLOYEES
表を保護しているため、アクセス権はありません。
SQL*Plusで、SYSTEM
として接続します。
CONNECT SYSTEM -- Or, CONNECT SYSTEM@hrpdb Enter password: password
もう一度、EMPLOYEES
表内の給与情報へのアクセスを試みます。
SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM <10;
次のような出力結果が表示されます。
Error at line 1: ORA-01031: insufficient privileges
SYSTEM
にはEMPLOYEES表の給与情報へのアクセス権はなくなります。(実際に、ユーザーSYS
でもこの表にはアクセスできません。)しかし、ユーザーSEBASTIAN
には、この情報へのアクセス権があります。
ユーザーSEBASTIAN
として接続します。
CONNECT sebastian -- Or, CONNECT sebastian@hrpdb Enter password: password
次の問合せを実行します。
SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM <10;
次のような出力が表示されます。
FIRST_NAME LAST_NAME SALARY -------------------- ------------------------- ---------- Steven King 24000 Neena Kochhar 17000 Lex De Haan 17000 Alexander Hunold 9000 Bruce Ernst 6000 David Austin 4800 Valli Pataballa 4800 Diana Lorentz 4200 Nancy Greenberg 12008 9 rows selected.
HR Appsレルム内の障害に関する監査を有効化したので、レポートを作成してセキュリティ侵害を見つけることができます。
たとえば、「ステップ6: レルムのテスト」で行なおうとした違反に関するレポートを作成できます。
Oracle Database Vaultにより、違反の種類(この場合は前の項目で入力したSELECT
文)、発生した時間と場所、違反を試みたユーザーのログイン・アカウント、および違反の内容などを示すレポートが生成されます。
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
ユーザーSEBASTIAN
を削除します。
SQL*Plusで、次のようにOracle Database Vaultアカウント・マネージャ(たとえばbea_dvacctmgr
)としてログインし、SEBASTIAN
を削除します。
sqlplus bea_dvacctmgr -- Or, CONNECT bea_dvacctmgr@hrpdb Enter password: password DROP USER SEBASTIAN;
HR Appsレルムを削除します。
Cloud Controlで、DV_OWNER
ロールがあるユーザーとしてログインしていることを確認します。
Database Vaultの「ホーム」ページで、「管理」をクリックします。
「レルム」ページで、レルムのリストからHR Apps
を選択します。
「削除」をクリックして、「確認」ウィンドウで「はい」をクリックします。
必要な場合は、SQL*Plusで、HR
アカウントをロックし、無効にします。
ALTER USER HR ACCOUNT LOCK PASSWORD EXPIRE;