この章の内容は次のとおりです。
この項では、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;