3 Oracle Database Vaultの開始
Oracle Database Vaultを使用して開始する前に、これをOracle Databaseに登録する必要があります。
- Oracle DatabaseへのOracle Database Vaultの登録について
Oracle Databaseのインストール後に、Oracle Database VaultをインストールしたOracle Databaseに登録(すなわち構成および有効化)する必要があります。 - マルチテナント環境でのOracle DatabaseへのOracle Database Vaultの登録
いくつかのシナリオに基づいて、マルチテナント環境にOracle Database Vaultを登録できます。 - 非マルチテナント環境におけるOracle Database Vaultの登録
ユーザーを登録した後に、これらのアカウントを保護するプロファイルを作成する必要があります。 - Database Vaultが構成および有効化されていることの確認
DBA_DV_STATUS
、CDB_DV_STATUS
、DBA_OLS_STATUS
およびCDB_OLS_STATUS
データ・ディクショナリ・ビューは、Oracle Databaseが構成され有効化されているかどうかを確認します。 - Oracle Enterprise Cloud ControlからのOracle Database Vaultへのログイン
Oracle Enterprise Manager Cloud Control (Cloud Control)には、Oracle Database Vaultの管理用のページが用意されています。 - クイック・スタート・チュートリアル: DBAアクセスからのスキーマの保護
このチュートリアルでは、HR
スキーマの周辺でレルムを作成する方法を示します。
3.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)の両方のインストールに適用されます。マルチテナント・データベースでは、PDBのいずれかでDatabase Vaultを構成する前に、Database VaultをCDBルートで構成する必要があります。
登録プロセスの一部として、Database Vaultバックアップ・アカウントが作成されています。これらは、主要なDatabase Vaultロールを保持するアカウントです。最初にこれらのアカウントを使用して、管理権限を持つ名前付きユーザーにロールをプロビジョニングします。SYS
ではこれらのロールを持つユーザーのパスワードをリセットできないため、バックアップ・アカウントの保持により、名前付きユーザーの資格証明の紛や資格証明の配置の誤りからリカバリできます。
Oracle Databaseは、マルチテナント環境と非マルチテナント環境の両方に登録できます。マルチテナント環境の場合、登録用に選択できるメソッドがいくつかあります。
ノート:
Oracle Database 12cより前のリリースからアップグレードしてあり、その以前のリリースで以前のOracle Database Vaultが有効になっている場合は、アップグレード・プロセスの完了後に、DBMS_MACADM.ENABLE_DV
プロシージャを使用することでOracle Database Vaultを有効にする必要があります。
マルチテナント環境では、リリース12cより前のリリースから非Database Vaultの登録済Oracle Databaseを移行する場合、Database Vaultの手動インストールを実行する必要があります。
親トピック: Oracle Database Vaultの開始
3.2 マルチテナント環境でのOracle DatabaseへのOracle Database Vaultの登録
Oracle Database Vaultは、複数のシナリオに基づいてマルチテナント環境に登録できます。
- マルチテナント環境におけるDatabase Vaultの登録について
マルチテナント環境では、関連するPDBのいずれかにDatabase Vaultを登録する前に、CDBルートにOracle Database Vaultを登録する必要があります。 - CDBルートへのDatabase Vaultの登録
マルチテナント環境では、CDBルートでDatabase Vault対応ロールを使用する共通ユーザーでOracle Database Vaultを登録します。 - 個別PDBを管理するためのDatabase Vault共通ユーザーの登録
マルチテナント環境では、Oracle Database Vaultをまずルートに登録して、後からPDBに登録する必要があります。 - DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成
プロファイルは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーに追加の保護を提供します。 - Database Vault対応PDBへの接続
マルチテナント環境では、SQL*Plusから、すでにDatabase Vaultが有効になっているデータベースに接続できます。 - マルチテナント環境でのOracle Database Vaultの手動インストール
特定の条件のマルチテナント環境に対しては、Oracle Database Vaultを手動でインストールする必要があります。
親トピック: Oracle Database Vaultの開始
3.2.1 マルチテナント環境におけるDatabase Vaultの登録について
マルチテナント環境では、関連するPDBのいずれかにDatabase Vaultを登録する前に、CDBルートにOracle Database Vaultを登録する必要があります。
CDBルートでDV_OWNER
ロールとDV_ACCTMGR
ロールを割り当てられた共通ユーザーも、PDBで同じロールを持つことができます。PDBでは、同じ共通ユーザーを使用してDatabase Vaultを登録することも、別のPDBローカル・ユーザーを使用することもできます。DV_ACCTMGR
ロールは、CDBルートの共通ユーザーに共通に付与されます。Database VaultをCDBルートに登録するときに、DV_OWNER
をローカルに、またはCDBルート共通ユーザーに共通に付与できます。DV_OWNER
を共通ユーザーにローカルに付与すると、共通DV_OWNER
ユーザーは、どのPDBでもこのロールを使用できなくなります。
3.2.2 CDBルートへのDatabase Vaultの登録
マルチテナント環境では、CDBルートでDatabase Vault対応ロールを使用する共通ユーザーでOracle Database Vaultを登録します。
3.2.3 個別PDBを管理するためのDatabase Vault共通ユーザーの登録
マルチテナント環境では、Oracle Database Vaultをまずルートに登録して、後からPDBに登録する必要があります。
ORA-47503「Database VaultはCDB$ROOTで有効化されていません。」
エラーが表示されます。
3.2.4 DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成
プロファイルは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーに追加の保護を提供します。
DV_OWNER
またはDV_ACCTMGR
ロールを付与されたデータベース・ユーザーは、クリティカルな特権アカウントとみなされます。通常、これらのアカウントはサービス・アカウントとみなしてパスワードのロックアウト要件が適用されないようにする必要があります。Oracleでは、アカウントがロックされないカスタム・プロファイルを作成することをお薦めします。また、これらのDatabase Vault関連のアカウントの失敗したログイン試行の監査も必要です。
CREATE PROFILE
システム権限を持つユーザーとして、データベース・インスタンスにログインします。- 共通
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: データベース・インスタンスのルートにログインします。 - ローカルの
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;
- ローカル
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;
- 共通
- このプロファイルを使用するために、
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;
- ローカル
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;
- 共通
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;
- ローカル
DV_OWNER
およびDV_ACCTMGR
ユーザーの場合: PDBで、次のようなポリシーを作成します。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.5 Database Vault対応PDBへの接続
マルチテナント環境では、SQL*Plusから、すでにDatabase Vaultが有効になっているデータベースに接続できます。
このシナリオでは、接続されるデータベースには、独自のローカルDatabase Vaultアカウントがあります。Database Vault対応データベースをDatabase Vaultが有効になっていないCDBに接続する場合は、CDBでDatabase Vaultを有効にしてCDBを再起動するまで、PDBは制限されたモードのままになるということを知っておいてください。Database Vaultが有効になっていないPDBをDatabase Vaultが有効になっているCDBに接続する場合は、PDBでDatabase Vaultを有効にしてPDBを再起動するまで、PDBは制限されたモードのままになります。それでも、この接続したDatabase Vault無効のPDBは使用可能です。ただし、このCDBでDatabase Vaultが厳密オプションで有効になっている場合、このPDBでDatabase Vaultを有効にする必要があります。
Database Vault対応PDBに接続する前に、Database Vaultロールが共通ユーザーに付与されている場合、PDBへの接続が共通ユーザーに与える影響を十分に理解してください。
3.2.6 マルチテナント環境でのOracle Database Vaultの手動インストール
特定の条件のマルチテナント環境に対しては、Oracle Database Vaultを手動でインストールする必要があります。
3.3 非マルチテナント環境におけるOracle Database Vaultの登録
ユーザーを登録したら、これらのアカウントを保護するプロファイルを作成する必要があります。
- 非マルチテナント環境におけるDatabase Vaultの登録
非マルチテナント環境では、SQL*PlusからOracle Database Vaultを登録します。 - DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成
プロファイルは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーに追加の保護を提供します。
親トピック: Oracle Database Vaultの開始
3.3.2 DV_OWNERおよびDV_ACCTMGRユーザーを保護するプロファイルの作成
プロファイルは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーに追加の保護を提供します。
DV_OWNER
またはDV_ACCTMGR
ロールを付与されたデータベース・ユーザーは、クリティカルな特権アカウントとみなされます。通常、これらのアカウントはサービス・アカウントとみなしてパスワードのロックアウト要件が適用されないようにする必要があります。Oracleでは、アカウントがロックされないカスタム・プロファイルを作成することをお薦めします。また、これらのDatabase Vault関連のアカウントの失敗したログイン試行の監査も必要です。
3.4 Database Vaultが構成および有効化されていることの確認
DBA_DV_STATUS
、CDB_DV_STATUS
、DBA_OLS_STATUS
およびCDB_OLS_STATUS
データ・ディクショナリ・ビューは、Oracle Databaseが構成され有効になっているかどうかを確認します。
SYS
ユーザー、およびDBA
ロールを付与されているユーザーが、これらのビューを問合せできます。
-
Database Vaultの場合:
-
非マルチテナント・データベースのDatabase Vaultステータス、またはマルチテナント環境においてルートのみか個々のPDBのDatabase Vaultステータスを検索する場合は、データベースにどのユーザーとして接続しているかに応じて、
DBA_DV_STATUS
またはSYS.DBA_DV_STATUS
ビューを問い合せます。次に例を示します。DBA
ロールまたはSYSDBA
管理権限を持つユーザーとして接続している場合:SELECT * FROM DBA_DV_STATUS;
DV_OWNER
ロールまたはDV_ADMIN
ロールを持つユーザーとして接続している場合:SELECT * FROM SYS.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
-
親トピック: Oracle Database Vaultの開始
3.5 Oracle Enterprise Cloud ControlからのOracle Database Vaultへのログイン
Oracle Enterprise Manager Cloud Control (Cloud Control)には、Oracle Database Vaultの管理用のページが用意されています。
3.6 クイック・スタート・チュートリアル: 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.6.1 このチュートリアルについて
このチュートリアルでは、Oracle Database Vault PL/SQLパッケージを使用することで、HR
サンプル・データベース・スキーマの周辺でレルムを作成します。
HR
スキーマのEMPLOYEES
表には、管理権限を使用したアクセスも含め、企業内のほとんどの社員に公開しない給与などの情報が含まれています。これを実現するには、HR
スキーマをデータベース内の保護ゾーン(Oracle Database Vaultではレルムと呼ぶ)のセキュア・オブジェクトに追加します。そして、このレルムに制限付きの認可を付与します。その後、レルムをテストして適切に保護されていることを確認します。最後に、レポートを実行し、レルムをテストする際に試行するような疑わしいアクティビティの監査証跡をOracle Database Vaultがどのように作成するかを確認します。
3.6.2 ステップ1: SYSTEMとしてログインしHRスキーマにアクセスする
このチュートリアル用にHR
スキーマを有効にする必要があります。
HR
サンプル・スキーマがインストールされていることを確認してください。Oracle Databaseサンプル・スキーマは、サンプル・スキーマのインストール方法を説明しています。
3.6.3 ステップ2: レルムの作成
レルムでは、1つ以上のスキーマ、個々のスキーマ・オブジェクトおよびデータベース・ロールを保護できます。
HR
スキーマにレルムを作成する必要があります。
この段階で、レルムが作成されていますが、それに対する認可は割り当てられていません。このチュートリアルで後ほど対応します。
3.6.4 ステップ3: SEBASTIANユーザー・アカウントの作成
この時点では、レルムが保護するデータベース・オブジェクトにアクセスする、またはそれらを操作するデータベース・アカウントもロールもありません。
そのため、このステップでデータベース・アカウントまたはデータベース・ロールを認可し、レルム内のスキーマにアクセスできるようにします。SEBASTIAN
ユーザー・アカウントを作成します。
(「ステップ6: レルムのテスト」でレルムをテストする際に必要なため、SQL*Plusを終了しないでください。)
3.6.5 ステップ4: ユーザーSEBASTIANによるレルムのテスト
この段階では、ユーザーSEBASTIAN
に、READ ANY TABLE
システム権限があるとしてもレルムをテストさせます。
SEBASTIAN
はREAD ANY TABLE
システム権限がありますが、HR.EMPLOYEES
表を問合せできません。これは、HR AppsレルムがREAD ANY TABLE
システム権限よりも優先されるためです。
3.6.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.6.8 ステップ7: 統合監査が有効ではない場合のレポートの実行
HR Appsレルムの失敗時の監査を有効にしたため、レポートを生成してセキュリティ違反を検出できます。
たとえば、「ステップ6: レルムのテスト」で試行した違反のレポートを生成できます。
Oracle Database Vaultにより、違反の種類(この場合は前の項目で入力したSELECT
文)、発生した時間と場所、違反を試みたユーザーのログイン・アカウント、および違反の内容などを示すレポートが生成されます。
3.6.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;