3 Oracle Database Vaultの開始
Oracle Database Vaultを使用して開始する前に、これをOracle Databaseに登録する必要があります。
- マルチテナント環境でのOracle Database Vaultの手動インストール
特定の条件のマルチテナント環境に対しては、Oracle Database Vaultを手動でインストールする必要があります。 - Oracle DatabaseへのOracle Database Vaultの登録の概要
Oracle Database Vaultを非マルチテナント環境またはマルチテナント環境のいずれかに登録できます。 - Oracle Database Vaultへのログイン
Oracle Enterprise Manager Cloud Control (Cloud Control)には、Oracle Database Vault用のページが用意されています。 - クイック・スタート・チュートリアル: DBAアクセスからのスキーマの保護
このチュートリアルでは、HR
スキーマの周辺でレルムを作成する方法を示します。
3.1 マルチテナント環境でのOracle Database Vaultの手動インストール
特定の条件のマルチテナント環境に対しては、Oracle Database Vaultを手動でインストールする必要があります。
3.2 Oracle DatabaseへのOracle Database Vaultの登録
Oracle Database Vaultを非マルチテナント環境またはマルチテナント環境のいずれかに登録できます。
- Oracle DatabaseへのOracle Database Vaultの登録について
Oracle Databaseのインストール後に、Oracle Database VaultをインストールしたOracle Databaseに登録(すなわち構成および有効化)する必要があります。 - 非マルチテナント環境におけるDatabase Vaultの登録
非マルチテナント環境では、SQL*PlusからOracle Database Vaultを登録します。 - CDBのルートを管理するための共通ユーザーによるDatabase Vaultの登録
マルチテナント環境では、CDBルートを管理する共通ユーザーによってOracle Database Vaultを登録できます。 - 個別PDBを管理するためのDatabase Vault共通ユーザーの登録
マルチテナント環境では、Oracle Database Vaultをまずルートに登録して、後からPDBに登録する必要があります。 - プラグインされたDatabase Vault PDB用の共通Database Vaultアカウント作成
マルチテナント環境では、SQL*Plusから、すでにDatabase Vaultが有効になっているデータベースに接続できます。 - DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成
プロファイルは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーに追加の保護を提供します。 - Database Vaultが構成および有効化されていることの確認
DBA_DV_STATUS
、CDB_DV_STATUS
、DBA_OLS_STATUS
およびCDB_OLS_STATUS
データ・ディクショナリ・ビューは、Oracle Databaseが構成され有効化されているかどうかを確認します。
親トピック: Oracle Database Vaultの開始
3.2.1 Oracle DatabaseへのOracle Database Vaultの登録について
Oracleのインストール後に、Oracle Database VaultをインストールしたOracle Databaseに登録(すなわち構成および有効化)する必要があります。
Oracle Databaseには、インストール・プロセスでデフォルトのデータベースを含めるように選択した場合、Database Vaultが付属しますが、このDatabase Vaultを使用するには登録する必要があります。カスタム・データベースを作成する場合、DBCAを使用してDatabase Vaultをインストールし、そのデータベースに対して有効にすることができます。登録プロセスでは、Oracle Label Securityがまだ有効ではない場合、有効になります。Oracle Label SecurityはOracle Database Vaultに必要ですが、別にOracle Label Securityの使用を開始してOracle Label Securityポリシーを作成する場合を除き、別個のライセンスは必要ありません。この手順は、CDBルート、アプリケーション・ルートおよび現在のプラガブル・データベース(PDB)に適用され、単一インスタンスとOracle Real Application Clusters (Oracle RAC)の両方のインストールに適用されます。
登録プロセスの一部として、Database Vault管理者アカウント作成します。これらは、Database Vault DV_OWNER
ロールおよびDV_ACCTMGR
ロールを付与されるユーザー・アカウントです。安全対策として、これらのユーザー・アカウントのバックアップを作成することをお薦めします。すべてのDV_OWNER
ユーザー・アカウントへのアクセス権を失うと、このロールをリカバリする方法はなくなります。結果として、Database Vaultロールを変更したり、Database Vaultを無効にすることができなくなります。データベースがDatabase Vault所有者アカウントを所有していた最後の既知のポイントにデータベースをリカバリすることで、この問題を改善できます。
この項では、Oracle Database Vaultを非マルチテナント環境において登録する方法、およびマルチテナント環境において登録する複数の方法を説明します。
ノート:
Oracle Database 12cより前のリリースからアップグレードしてあり、その以前のリリースで以前のOracle Database Vaultが有効になっている場合は、アップグレード・プロセスの完了後に、DBMS_MACADM.ENABLE_DV
プロシージャを使用することでOracle Database Vaultを有効にする必要があります。
3.2.3 CDBのルートを管理するための共通ユーザーによるDatabase Vaultの登録
マルチテナント環境では、CDBルートを管理する共通ユーザーによってOracle Database Vaultを登録できます。
3.2.4 個別PDBを管理するためのDatabase Vault共通ユーザーの登録
マルチテナント環境では、Oracle Database Vaultをまずルートに登録して、後からPDBに登録する必要があります。
ORA-47503「Database VaultはCDB$ROOTで有効化されていません。」
エラーが表示されます。
3.2.5 プラグインされたDatabese Vault PDB用の共通Database Vaultアカウント作成
マルチテナント環境では、SQL*Plusから、すでにDatabase Vaultが有効になっているデータベースに接続できます。
このPDBのDatabase Vault構成を管理するための共通ユーザーを有効化するには:
3.2.6 DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成
プロファイルは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーに追加の保護を提供します。
DV_OWNER
またはDV_ACCTMGR
ロールを付与されたデータベース・ユーザーは、クリティカルな特権アカウントとみなされます。通常、これらのアカウントはサービス・アカウントとみなしてパスワードのロックアウト要件が適用されないようにする必要があります。Oracleでは、アカウントがロックされないカスタム・プロファイルを作成することをお薦めします。また、これらのDatabase Vault関連のアカウントの失敗したログイン試行の監査も必要です。
CREATE PROFILE
システム権限を持つユーザーとして、データベース・インスタンスにログインします。- ルートの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: データベース・インスタンスのルートにログインします。 - PDBの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: ユーザーを作成したPDBにログインします。 - 非マルチテナント環境の場合: データベース・インスタンスにログインします。
- ルートの共通
- 次のようなプロファイルを作成します。
- ルートの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: ルートで、次のようなプロファイルを作成します。CREATE PROFILE c##dv_profile limit FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION PASSWORD_LOCK_TIME UNLIMITED CONTAINER=ALL;
- PDBの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: PDBで、次のようなプロファイルを作成します。CREATE PROFILE dv_profile limit FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION PASSWORD_LOCK_TIME UNLIMITED CONTAINER=CURRENT;
- 非マルチテナント環境の場合: 次のようなプロファイルを作成します。
CREATE PROFILE dv_profile limit FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION PASSWORD_LOCK_TIME UNLIMITED;
- ルートの共通
- このプロファイルを使用するために、
DV_OWNER
およびDV_ACCTMGR
ユーザー・アカウントを更新します。- ルートの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合:ALTER USER c##sec_admin_owen PROFILE c##dv_profile CONTAINER=ALL; ALTER USER c##dbv_owner_root_backup PROFILE c##dv_profile CONTAINER=ALL; ALTER USER c##accts_admin_ace PROFILE c##dv_profile CONTAINER=ALL; ALTER USER c##dbv_acctmgr_root_backup PROFILE c##dv_profile CONTAINER=ALL;
- PDBの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合:ALTER USER sec_admin_owen PROFILE dv_profile CONTAINER=CURRENT; ALTER USER dbv_owner_backup PROFILE dv_profile CONTAINER=CURRENT; ALTER USER accts_admin_ace PROFILE dv_profile CONTAINER=CURRENT; ALTER USER dbv_acctmgr_backup PROFILE dv_profile CONTAINER=CURRENT;
- 非マルチテナント環境の場合:
ALTER USER sec_admin_owen PROFILE dv_profile; ALTER USER dbv_owner_backup PROFILE dv_profile; ALTER USER accts_admin_ace PROFILE dv_profile; ALTER USER dbv_acctmgr_backup PROFILE dv_profile;
- ルートの共通
AUDIT_ADMIN
ロールを付与されたユーザーとして接続します。- 統合監査ポリシーを作成して有効化し、
DV_OWNER
またはDV_ACCTMGR
ロールを付与されたユーザーによる失敗したログインを追跡します。- ルートの共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: ルートで、次のようなポリシーを作成します。CREATE AUDIT POLICY c##dv_logins ACTIONS LOGON; AUDIT POLICY c##dv_logins BY USERS WITH GRANTED ROLES DV_OWNER, DV_ACCTMGR WHENEVER NOT SUCCESSFUL;
- PDBの共通
DV_OWNER
およびDV_ACCTMGR
ユーザー、または非マルチテナント環境の場合、次のようなポリシーを作成します。CREATE AUDIT POLICY dv_logins ACTIONS LOGON; AUDIT POLICY dv_logins BY USERS WITH GRANTED ROLES DV_OWNER, DV_ACCTMGR WHENEVER NOT SUCCESSFUL;
- ルートの共通
3.2.7 Database Vaultが構成および有効化されていることの確認
DBA_DV_STATUS
、CDB_DV_STATUS
、DBA_OLS_STATUS
およびCDB_OLS_STATUS
データ・ディクショナリ・ビューは、Oracle Databaseが構成され有効になっているかどうかを確認します。
SYS
ユーザー、およびDBA
ロールを付与されているユーザーが、これらのビューを問合せできます。
-
Database Vaultの場合:
-
非マルチテナント・データベースのために、またはマルチテナント環境でルートのみか個々のPDBのためにDatabase Vaultステータスを確認する場合は、
DBA_DV_STATUS
を問い合せます。たとえば:SELECT * FROM DBA_DV_STATUS;
次のような出力が表示されます。
NAME STATUS -------------------- ----------- DV_CONFIGURE_STATUS TRUE DV_ENABLE_STATUS TRUE
-
管理権限がある共通ユーザーとして、マルチテナント環境ですべてのPDBのDatabase Vaultステータスを確認する場合は、コンテナID (
CON_ID
)フィールドの追加を提供する、CDB_DV_STATUS
を問い合せます。
-
-
Oracle Label Securityの場合は、次のデータ・ディクショナリ・ビューを問い合せます。これらは、Database Vaultのそれらに相当するビューに似ています。
-
DBA_OLS_STATUS
-
CDB_OLS_STATUS
-
3.3 Oracle Database Vaultへのログイン
Oracle Enterprise Manager Cloud Control (Cloud Control)には、Oracle Database Vault用のページが用意されています。
3.4 クイック・スタート・チュートリアル: DBAアクセスからのスキーマの保護
このチュートリアルでは、HR
スキーマの周辺でレルムを作成する方法を示します。
- このチュートリアルについて
このチュートリアルでは、Oracle Database Vault PL/SQLパッケージを使用することで、HR
サンプル・データベース・スキーマの周辺でレルムを作成します。 - ステップ1: SYSTEMとしてログインしHRスキーマにアクセスする
このチュートリアル用にHR
スキーマを有効にする必要があります。 - ステップ2: レルムの作成
レルムでは、1つ以上のスキーマ、個々のスキーマ・オブジェクトおよびデータベース・ロールを保護できます。 - ステップ3: SEBASTIANユーザー・アカウントの作成
この時点では、レルムが保護するデータベース・オブジェクトにアクセスする、またはそれらを操作するデータベース・アカウントもロールもありません。 - ステップ4: ユーザーSEBASTIANによるレルムのテスト
この段階では、ユーザーSEBASTIAN
に、READ ANY TABLE
システム権限があるとしてもレルムをテストさせます。 - ステップ5: レルムの認可の作成
次に、HR.EMPLOYEES
表にアクセスできるよう、ユーザーSEBASTIAN
にHR Appsレルムへの認可を与える必要があります。 - ステップ6: レルムのテスト
レルムをテストするには、HR
以外のユーザーとしてEMPLOYEES
表にアクセスを試みる必要があります。 - ステップ7: 統合監査が有効ではない場合のレポートの実行
HR Appsレルムの失敗時の監査を有効にしたため、レポートを生成してセキュリティ違反を検出できます。 - ステップ8: このチュートリアルのコンポーネントの削除
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
親トピック: Oracle Database Vaultの開始
3.4.1 このチュートリアルについて
このチュートリアルでは、Oracle Database Vault PL/SQLパッケージを使用することで、HR
サンプル・データベース・スキーマの周辺でレルムを作成します。
HR
スキーマのEMPLOYEES
表には、管理権限を使用したアクセスも含め、企業内のほとんどの社員に公開しない給与などの情報が含まれています。これを実現するには、HR
スキーマをデータベース内の保護ゾーン(Oracle Database Vaultではレルムと呼ぶ)のセキュア・オブジェクトに追加します。そして、このレルムに制限付きの認可を付与します。その後、レルムをテストして適切に保護されていることを確認します。最後に、レポートを実行し、レルムをテストする際に試行するような疑わしいアクティビティの監査証跡をOracle Database Vaultがどのように作成するかを確認します。
3.4.2 ステップ1: SYSTEMとしてログインしHRスキーマにアクセスする
このチュートリアル用にHR
スキーマを有効にする必要があります。
HR
サンプル・スキーマがインストールされていることを確認してください。Oracle Databaseサンプル・スキーマは、サンプル・スキーマのインストール方法を説明しています。
3.4.3 ステップ2: レルムの作成
レルムでは、1つ以上のスキーマ、個々のスキーマ・オブジェクトおよびデータベース・ロールを保護できます。
HR
スキーマにレルムを作成する必要があります。
この段階で、レルムが作成されていますが、それに対する認可は割り当てられていません。このチュートリアルで後ほど対応します。
3.4.4 ステップ3: SEBASTIANユーザー・アカウントの作成
この時点では、レルムが保護するデータベース・オブジェクトにアクセスする、またはそれらを操作するデータベース・アカウントもロールもありません。
そのため、このステップでデータベース・アカウントまたはデータベース・ロールを認可し、レルム内のスキーマにアクセスできるようにします。SEBASTIAN
ユーザー・アカウントを作成します。
(「ステップ6: レルムのテスト」でレルムをテストする際に必要なため、SQL*Plusを終了しないでください。)
3.4.5 ステップ4: ユーザーSEBASTIANによるレルムのテスト
この段階では、ユーザーSEBASTIAN
に、READ ANY TABLE
システム権限があるとしてもレルムをテストさせます。
SEBASTIAN
はREAD ANY TABLE
システム権限がありますが、HR.EMPLOYEES
表を問合せできません。これは、HR AppsレルムがREAD ANY TABLE
システム権限よりも優先されるためです。
3.4.7 ステップ6: レルムのテスト
レルムをテストするには、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.
3.4.8 ステップ7: 統合監査が有効ではない場合のレポートの実行
HR Appsレルムの失敗時の監査を有効にしたため、レポートを生成してセキュリティ違反を検出できます。
たとえば、「ステップ6: レルムのテスト」で試行した違反のレポートを生成できます。
Oracle Database Vaultにより、違反の種類(この場合は前の項目で入力したSELECT
文)、発生した時間と場所、違反を試みたユーザーのログイン・アカウント、および違反の内容などを示すレポートが生成されます。
3.4.9 ステップ8: このチュートリアルのコンポーネントの削除
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
-
ユーザー
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;