この章の内容は次のとおりです。
この項では、Oracle Database Vault Administratorの起動方法について説明します。
Oracle Database Vaultをインストールした直後に、Oracle Database Vaultをデータベースに登録する必要があります。詳細は、「Oracle Database Vaultの登録」を参照してください。次の項目も参照してください。
Oracle Database Vault Administratorを起動するには、次のようにします。
ブラウザに、次のURLを入力します。
https://host_name:port/dva
ここでは、次のようになります。
host_name: Oracle Database Vaultをインストールしたサーバーです。
port: Oracle Enterprise ManagerコンソールのHTTPSポートの番号です。
たとえば、次のようになります。
https://myserver:1158/dva
ポート番号が不明な場合は、$ORACLE_HOME/host_sid/sysman/config/emd.propertiesファイルを開いてREPOSITORY_URLを検索します。ほとんどの場合、ホスト名およびポート番号はOracle Enterprise Manager Database Controlと同じです。
Oracle Database Vault Administratorを起動できない場合は、Oracleデータベース・コンソールのプロセスが稼働していることを確認します。
UNIXシステムの場合: $ORACLE_HOME/binディレクトリに移動して次のコマンドを実行します。
./emctl status dbconsole
dbconsoleプロセスを起動する必要がある場合は、次のコマンドを実行してください。
./emctl start dbconsole
Windowsシステムの場合: 「管理ツール」で「サービス」ユーティリティを選択した後、「OracleDBConsolesid」サービスを右クリックします。必要に応じて、メニューから「開始」を選択し、データベース・コンソールを起動します。
$ORACLE_HOME/sysman/log
インストール中に作成したOracle Database Vault所有者アカウントを使用してログインします。
ログインするには、完全な接続文字列を入力する必要があります。これにより、Oracle Database Vaultで複数のOracle Databaseインスタンスを管理できます。
デフォルトでは、SYS、SYSTEMまたはその他の管理アカウントを使用してOracle Database Vault Administratorにログインすることはできません。DV_ADMINまたはDV_OWNERロールがある場合はログインできます。
次の値を入力します。
ユーザー名: DV_OWNERロールを付与されているユーザーの名前を入力します。
パスワード: パスワードを入力します。
ホスト: 目的のOracle Database Vaultインストールのコンピュータのホスト名を入力します。次の書式を使用します。
server.domain
たとえば、次のようになります。
myserver-pc.us.example.com
ポート: Oracle Databaseのポート番号を入力します。デフォルトのポート番号は1521です。ポート番号が不明な場合は、tnsnames.oraファイルをチェックしてください。
たとえば、次のようになります。
1521
SID/サービス: 「SID」または「サービス」を選択します。これらの値は、tnsnames.oraファイルで確認できます。デフォルトでは、このファイルは$ORACLE_HOME/network/adminにあります。
SID: Oracle Databaseインスタンスの名前を入力します。たとえば、次のようになります。
orcl
サービス: データベース・インスタンスのサービス名を次の書式で入力します。
service_name.domain
たとえば、次のようになります。
orcl.us.example.com
図3-1は、ログインすると表示されるOracle Database Vault Administratorのホームページを示しています。
図3-1 Oracle Database Vault Administratorのホームページ

このチュートリアルでは、HRサンプル・データベース・スキーマ用の簡単なセキュリティ構成を作成します。HRスキーマのEMPLOYEES表には、管理権限を使用したアクセスも含め、企業内のほとんどの社員に公開しない給与などの情報が含まれています。これを実現するには、HRスキーマをデータベース内の保護ゾーン(Oracle Database Vaultではレルムと呼ぶ)のセキュア・オブジェクトに追加します。そして、このレルムに制限付きの認可を付与します。その後、レルムをテストして適切に保護されていることを確認します。最後に、レポートを実行し、レルムをテストする際に試行するような疑わしいアクティビティの監査証跡をOracle Database Vaultがどのように作成するかを確認します。
このチュートリアルを使用する前に、HRサンプル・スキーマがインストールされていることを確認してください。サンプル・スキーマのインストールに関する情報は、『Oracle Databaseサンプル・スキーマ』を参照してください。
このチュートリアルの内容は次のとおりです。
このチュートリアルでは、SYSTEMユーザーは、新しいユーザー・アカウントSEBASTIANにANY権限を付与します。これを実行するには、SYSTEMをOracleデータ・ディクショナリ・レルムに含める必要があります。
SYSTEMをOracleデータ・ディクショナリ・レルムに含めるには、次のようにします。
Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。
ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。
「管理」ページの「Database Vault機能管理」で、「レルム」をクリックします。
「レルム」ページで、リストから「Oracleデータ・ディクショナリ」を選択し、「編集」をクリックします。
「レルムの編集: Oracleデータ・ディクショナリ」ページの「レルム認可」で、「作成」をクリックします。
「レルム認可の作成」ページで、「権限受領者」リストからSYSTEM [USER]を選択します。
「認可タイプ」に、「所有者」を選択します。
「認可ルール・セット」を「<未選択>」のままにします。
「OK」をクリックします。
「レルムの編集: Oracleデータ・ディクショナリ」ページの「レルム認可」に、SYSTEMが所有者として表示されます。
「OK」をクリックして「レルム」ページに戻ります。
「管理」ページに戻るには、「レルム」のデータベース・インスタンスinstance_nameリンクをクリックします。
ユーザーSYSTEMとしてSQL*Plusにログインし、HRスキーマにアクセスします。
sqlplus system
Enter password: password
SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM < 10;
次のような出力結果が表示されます。
FIRST_NAME LAST_NAME SALARY -------------------- ------------------------- ---------- Donald OConnell 2600 Douglas Grant 2600 Jennifer Whalen 4400 Michael Hartstein 13000 Pat Fay 6000 Susan Mavris 6500 Hermann Baer 10000 Shelley Higgins 12000 William Gietz 8300 9 rows selected.
HRスキーマがロックされて無効になっている場合、Database Vaultアカウント・マネージャとしてSQL*Plusにログインし、ロックを解除してアカウントを有効にします。たとえば、次のようになります。
sqlplus dbvacctmgr Enter password: password ALTER USER ACCOUNT UNLOCK IDENTIFIED BY password
passwordをセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
この例からわかるように、SYSTEMにはHRスキーマのEMPLOYEES表の給与情報へのアクセス権があります。SYSTEMには、SELECT ANY TABLEシステム権限を含むDBAロールが自動的に付与されるためです。
レルムでは、1つ以上のスキーマ、個々のスキーマ・オブジェクトおよびデータベース・ロールを保護できます。レルムを作成したら、レルム内のスキーマやスキーマ・オブジェクトに適用するセキュリティ制限を作成します。まず、HRスキーマにレルムを作成します。
Oracle Database Vault Administratorの「レルム」ページで、「作成」をクリックします。
「レルムの作成」ページの「一般」で、「名前」にHR Realmと入力します。
「ステータス」に「有効」が選択されていて、そのレルムが使用可能になっていることを確認します。
「監査オプション」で、「失敗時に監査」が選択されていて、後から監査証跡を作成できることを確認します。
「OK」をクリックします。
レルムのリストにHR Realmが表示された状態でレルムのサマリー・ページが表示されます。
この手順では、HRスキーマのEMPLOYEES表をHRレルムのセキュア・オブジェクトに追加します。
「レルム」ページで、リストからHR Realmを選択し、「編集」をクリックします。
「レルムの編集: HR Realm」ページで、「レルム・セキュア・オブジェクト」までスクロールし、「作成」をクリックします。
「レルム・セキュア・オブジェクトの作成」ページで、次の設定を入力します。
オブジェクト所有者: リストからHRを選択します。
オブジェクト・タイプ: %を選択します。
オブジェクト名: EMPLOYEESと入力します。
「OK」をクリックします。
「レルムの編集: HR Realm」ページで「OK」をクリックします。
この時点では、レルムが保護するデータベース・オブジェクトにアクセスする、またはそれらを操作するデータベース・アカウントもロールもありません。そのため、この手順でデータベース・アカウントまたはデータベース・ロールを認可し、レルム内のスキーマにアクセスできるようにします。SEBASTIANユーザー・アカウントを作成します。レルムに対してこのユーザーを認可すると、SEBASTIANによるEMPLOYEES表の表示や変更が可能になります。
DV_ACCTMGRロールを持つDatabase Vaultアカウント・マネージャとしてSQL*Plusに接続し、ユーザーSEBASTIANを作成します。
たとえば、次のようになります。
SQL> CONNECT dbvacctmgr Enter password: password CREATE USER SEBASTIAN IDENTIFIED BY password;
passwordをセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
SYSTEM権限として接続し、SEBASTIANに次の追加権限を付与します。
CONNECT SYSTEM
Enter password: password
GRANT CREATE SESSION, SELECT ANY TABLE TO SEBASTIAN;
(「手順6: レルムのテスト」でレルムをテストする際に必要なため、SQL*Plusを終了しないでください。)
この段階では、SEBASTIANにSELECT ANY TABLE権限があっても、レルムによって保護されているためHR.EMPLOYEES表から選択できません。
次に示すようにしてユーザーSEBASTIANを認可し、HR Realmへのアクセス権を付与します。
Database Vault Administratorの「レルム」ページで、レルムのリストからHR Realmを選択し、「編集」をクリックします。
「レルムの編集: HR Realm」ページで、「レルム認可」までスクロールし、「作成」をクリックします。
「レルム認可の作成」ページの「権限受領者」で、リストからSEBASTIAN[USER]を選択します。
リストにSEBASTIANが表示されない場合は、ブラウザの「更新」ボタンをクリックします。
SEBASTIANがHRスキーマのEMPLOYEES表にアクセスできる唯一のユーザーになります。
「認可タイプ」で「所有者」を選択します。
所有者の認可により、HRレルムのユーザーSEBASTIANは、レルム内のオブジェクトの作成、アクセスおよび操作とともに、HRによって保護されるデータベース・ロールの管理が可能になります。この場合、EMPLOYEES表の表示を許可されているのは、HRユーザーおよびSEBASTIANのみです。
このレルムはルール・セットで制御する必要がないため、「認可ルール・セット」で「<未割当て>」を選択します。
「OK」をクリックします。
レルムをテストするには、HR以外のユーザーとしてEMPLOYEES表へのアクセスを試行します。通常、SYSTEMアカウントにはHRスキーマのすべてのオブジェクトに対するアクセス権がありますが、この場合はOracle Database Vaultを使用してEMPLOYEES表を保護しているため、アクセス権はありません。
SQL*Plusで、SYSTEMとして接続し、EMPLOYEES表の給与情報へのアクセスを再試行します。
sqlplus system
Enter password: password
SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM <10;
次のような出力結果が表示されます。
Error at line 1: ORA-01031: insufficient privileges
SYSTEMにはEMPLOYEES表の給与情報へのアクセス権はなくなります。しかし、ユーザーSEBASTIANには、この情報へのアクセス権があります。次のようにします。
CONNECT SEBASTIAN
Enter password: password
SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE ROWNUM <10;
次のような出力結果が表示されます。
FIRST_NAME LAST_NAME SALARY -------------------- ------------------------- ---------- Donald OConnell 2600 Douglas Grant 2600 Jennifer Whalen 4400 Michael Hartstein 13000 Pat Fay 6000 Susan Mavris 6500 Hermann Baer 10000 Shelley Higgins 12000 William Gietz 8300 9 rows selected.
HR Realmの失敗時の監査を有効にしたため、「手順6: レルムのテスト」で試みたように、レポートを生成してセキュリティ違反を検出できます。
Oracle Database Vault Administratorのホームページで、「Database Vaultレポート」をクリックします。
レポートを実行するには、DV_OWNER、DV_ADMINまたはDV_SECANALYSTロールのあるアカウントを使用してログインしている必要があります。ユーザーSEBASTIANは、自分のレルムに影響する場合であっても、レポートを実行できないことに注意してください。これらのロールの詳細は、「Oracle Database Vaultロール」で説明しています。現在、Database Vault所有者(DV_OWNER)アカウントとしてログインしている必要があります。
「Database Vaultレポート」ページで、「Database Vaultの監査レポート」までスクロールし、「レルムの監査」を選択します。
「レポートの実行」をクリックします。
Oracle Database Vaultにより、違反の種類(この場合は前の項目で入力したSELECT文)、発生した時間と場所、違反を試みたユーザーのログイン・アカウント、および違反の内容などを示すレポートが生成されます。
データ・ディクショナリ・レルムからSYSTEMアカウントを削除します。
DV_OWNERロールが付与されているデータベース・アカウントを使用してOracle Database Vault Administratorにログインしていることを確認します。
「管理」ページで、「レルム」を選択します。
レルムのリストから「Oracleデータ・ディクショナリ」を選択して「編集」をクリックします。
「レルム認可」でSYSTEMを選択します。
「削除」をクリックして、確認ウィンドウで「はい」をクリックします。
HR Realmを削除します。
「レルム」ページで、レルムのリストからHR Realmを選択します。
「削除」をクリックして、確認ウィンドウで「はい」をクリックします。
ユーザーSEBASTIANを削除します。
SQL*Plusで、Oracle Database Vaultのインストール時に作成したOracle Database Vaultアカウント・マネージャ(たとえばDBVACCTMGR)としてログインし、次のようにSEBASTIANを削除します。
sqlplus dbvacctmgr
Enter password: password
DROP USER SEBASTIAN;
必要な場合、HRアカウントをロックし、無効にします。
ALTER USER HR ACCOUNT LOCK PASSWORD EXPIRE;