ヘッダーをスキップ
Oracle Database Vault管理者ガイド
11gリリース1(11.1)
E05797-05
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

7 ファクタの構成

この章の内容は次のとおりです。

ファクタの概要

ファクタは、ユーザーの場所、データベースIPアドレスまたはセッション・ユーザーなど、Oracle Database Vaultが認識できる名前付きの変数または属性です。ファクタは、データベースに接続するためのデータベース・アカウントの認可や、データの可視性および管理性を制限するフィルタ・ロジックの作成などのアクティビティに使用できます。

Oracle Database Vaultには、サイトのドメイン、IPアドレスデータベースなどのコンポーネントに対する制御を設定できる様々なファクタが用意されています。デフォルトのファクタの詳細は、「デフォルトのファクタ」で説明しています。独自のPL/SQL取得メソッドを使用してカスタム・ファクタを作成することもできます。

ルール・セットのルールとともにファクタを使用できます。「Oracle Database VaultのPL/SQLファクタ・ファンクション」で説明されているDVFファクタ・ファンクションは、ルール式で使用できるファクタ固有のファンクションです。

ファクタには値(アイデンティティ)があり、それぞれのファクタ・タイプによってさらに分類されます。ファクタ・アイデンティティの詳細は、「ファクタの識別」で説明されています。ファクタ・タイプの詳細は、「一般」の「ファクタ・タイプ」を参照してください。

また、Oracle Label Securityラベルを使用してファクタを統合できます。その方法は、「Oracle Database VaultとOracle Label Securityの統合」で説明されています。詳細は、「チュートリアル: Oracle Database VaultとOracle Label Securityの統合」を参照してください。

Oracle Database Vaultに作成するファクタ上でレポートを実行できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。

この章では、Oracle Database Vault Administratorを使用してファクタを構成する方法を説明します。Oracle Database Vaultが提供するPL/SQLパッケージおよびインタフェースを使用してファクタを構成するには、次の章を参照してください。

デフォルトのファクタ

Oracle Database Vaultには一連のデフォルトのファクタが用意されています。これらのファクタごとに、ファクタの値を取得するファンクションが関連付けられています。これらのファンクションのリストは、「Oracle Database VaultのPL/SQLファクタ・ファンクション」を参照してください。

独自のPL/SQL取得メソッドを使用してカスタム・ファクタを作成できます。使用できる便利なPL/SQLファンクション(デフォルト・ファクタの多くに使用される)は、SYS_CONTEXTファンクションで、ユーザー・セッションに関するデータを取得します。カスタム・ファクタを作成すると、デフォルト・ファクタの問合せに使用されるファンクションと同様に値を問い合せることができます。「チュートリアル: データベースへの非定型ツール・アクセスの阻止」では、カスタム・ファクタの作成および問合せの方法の例を示しています。

SYS_CONTEXTファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

独自のセキュリティ構成でデフォルトのファクタを使用できます。不要な場合には削除できます。(Oracle Database Vaultによる内部使用には不要です。)

デフォルト・ファクタは次のとおりです。

ファクタの作成

通常、ファクタを作成するには、まずファクタを作成し、ファクタを編集してアイデンティティを含めます。「ファクタ設計のガイドライン」に、ファクタの設計に関する注意事項が説明されています。

ファクタを作成するには、次のようにします。

  1. Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。

    少なくとも、DV_ADMINロールを持っている必要があります。ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。

  2. 「管理」ページの「Database Vault機能管理」で、「ファクタ」をクリックします。

  3. 「ファクタ」ページで「作成」をクリックします。

  4. 「ファクタの作成」ページで、次の設定を入力して「OK」をクリックします。

一般

「一般」領域で、次の情報を入力します。

ファクタの識別

「ファクタの識別」で、ファクタのアイデンティティの解決方法を選択します。この属性は必須です。値は次のとおりです。

ファクタ・アイデンティティは、IP_Addressタイプを使用するファクタのIPアドレスなど、ファクタの実際の値です。取得メソッドやアイデンティティ・マップ・ロジックに応じて、1つのファクタに複数のアイデンティティが存在する場合もあります。たとえば、Oracle Real Application Clusters環境ではDatabase_Hostnameなどのファクタには、複数のアイデンティティが存在する可能性があります。RDBMS環境では、Client_IPのようなファクタには複数のアイデンティティが存在します。取得メソッドはデータベース・セッションに基づいているため、これらのファクタ・タイプの取得メソッドでは異なる値が返される場合があります。

複数のレポートを使用してファクタ・アイデンティティ構成を追跡できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。

次のようにしてファクタの割当てを構成できます。

Oracle Label Security統合を使用すると、Oracle Label Securityラベルでアイデンティティをラベル付けできます。また、アイデンティティに信頼レベルを割り当てることもできます。信頼レベルは、同じファクタの別のアイデンティティと比較した信頼の度合いを示す数値です。一般的に、信頼レベルの数値が高く設定されているほど信頼の度合いも高くなります。信頼レベルの数値が負の場合は信頼できません。


関連項目:

ファクタ・アイデンティティの詳細は、「ファクタへのアイデンティティの追加」を参照してください。

データベース・セッション内では、Oracle Database Vault、および次のようなDVFスキーマ(ファクタ値を取得するファンクションを含む)に存在するパブリックからアクセス可能なPL/SQLファンクションのあるアプリケーションで、ファクタに割り当てられたアイデンティティを使用できます。

dvf.f$factor_name

これにより、(PL/SQL、SQL、Oracle仮想プライベート・データベース、トリガーなどを使用して)Oracleデータベース内からファクタのアイデンティティにグローバルにアクセスできます。たとえば、SQL*Plusでは次のようにします。

CONNECT dbvowner
Enter password: password

SELECT DVF.F$DATABASE_IP FROM DUAL;

次のような出力結果が表示されます。

SELECT DVF.F$DATABASE_IP FROM DUAL;

F$DATABASE_IP
-------------------------------------------------------------
192.0.2.1

DVSYS.GET_FACTORファンクションを使用して、パブリックからのアクセスが可能になったファクタのアイデンティティを検出することもできます。たとえば、次のようになります。

SELECT GET_FACTOR('DATABASE_IP') FROM DUAL;

次のような出力結果が表示されます。

GET_FACTOR('DATABASE_IP')
-------------------------------------------------------------
192.0.2.1

評価

「評価」で、ファクタの評価方法とアイデンティティの割当て方法を選択します。セッション・ファクタのパフォーマンスへの影響の詳細は、「ファクタのパフォーマンスへの影響」を参照してください。この属性は必須です。

値は次のとおりです。

ファクタ・ラベリング

「ファクタ・ラベリング」で、ファクタ・アイデンティティによるOracle Label Security(OLS)ラベルの取得方法を選択します。Oracle Label Security統合を使用する場合は、この設定が適用されます。OLSラベルを使用する場合、この属性は必須です。(OLSラベルとファクタの統合の詳細は、「Oracle Database VaultとOracle Label Securityの統合」を参照してください。)

値は次のとおりです。

取得メソッド

「取得メソッド」に、ファクタまたは定数のアイデンティティを取得するPL/SQL式を入力します。大/小文字混在で最大255文字まで使用できます。取得メソッドにより、ファクタの識別がメソッドまたは定数によって行われるファクタが識別されます。ファクタの識別がファクタによって行われる場合、Oracle Database Vaultはアイデンティティ・マップによってファクタを識別します。

独自のPL/SQL取得メソッドを作成するか、Oracle Database Vaultに用意されているファンクションを使用できます。取得メソッドの作成に使用可能な、ファクタに固有の一般的なユーティリティ・ファンクションについては、次の項を参照してください。

次の取得メソッドでは、ユーザー・セッションのUSERENV名前空間からデータベース名(DB_NAME)を取得することで、DB_NAMEファクタの値が設定されます。

UPPER(SYS_CONTEXT('USERENV','DB_NAME'))

取得メソッドの例として、Oracle Database Vaultが提供するデフォルトのファクタも参照してください。これらのファクタの説明は、「デフォルトのファクタ」を参照してください。

「ファクタの識別」で次の設定を選択した場合、「取得メソッド」フィールドは必須です。

ファクタ・アイデンティティとして返される値は、VARCHAR2文字列またはこの型に変換可能である必要があります。

式には、パッケージ・ファンクションまたはスタンドアロン・ファンクションを含めることができます。式がschema.function_nameなどの完全修飾ファンクションであることを確認してください。完全なSQL文は含めないでください。アプリケーション・パッケージまたはファンクションを使用している場合は、オブジェクトのGRANT EXECUTE権限のあるDVSYSを指定する必要があります。

次の書式を使用してファンクション・シグネチャを記述します。

FUNCTION GET_FACTOR RETURN VARCHAR2

検証メソッド

「検証メソッド」で、ブール値(TRUEまたはFALSE)を返すPL/SQL式を入力し、(DVSYS.GET_FACTORファンクションで)取得されるファクタのアイデンティティまたは(DVSYS.SET_FACTORファンクションで)ファクタに割り当てられる値を検証します。取得または割り当てられる値に対してメソッドがFalseと評価されると、ファクタ・アイデンティティはNULLに設定されます。このオプションの機能により、ファクタが正しく取得および設定されることがさらに確実になります。このフィールドには、大/小文字混在で最大で255文字まで入力できます。

式には、パッケージ・ファンクションまたはスタンドアロン・ファンクションを含めることができます。式がschema.function_nameなどの完全修飾ファンクションであることを確認してください。完全なSQL文は含めないでください。アプリケーション・パッケージまたはファンクションを使用している場合は、オブジェクトのGRANT EXECUTE権限のあるDVSYSを指定する必要があります。

次の書式のいずれかを使用してファンクションを記述します。

検証メソッドの作成に使用可能な、ファクタに固有の一般的なユーティリティ・ファンクションについては、次の項を参照してください。

割当てルール・セット

ファクタ・アイデンティティの設定時期や方法をルール・セットを使用して制御する場合は、「割当てルール・セット」でリストからルール・セットを選択します。たとえば、ルール・セットを使用して、既知のアプリケーション・サーバーまたはプログラムからデータベース・セッションが発生する時期を決定できます。ルール・セットの作成方法は、第5章「ルール・セットの構成」で説明しています。

この属性は、JDBC接続プールを使用しているWebアプリケーションなどのデータベース・アプリケーションが、現行のデータベース・セッションに対して動的にファクタ・アイデンティティを設定する必要がある場合に特に便利です。たとえば、Webアプリケーションにログイン中のデータベース・アカウントに対して、地理的位置の割当てが必要な場合があります。これを実行するために、WebアプリケーションではJDBCコール可能文またはOracle Data Provider for .NET(ODP.NET)を使用して、PL/SQLファンクションDVSYS.SET_FACTORを実行できます。たとえば、次のようになります。

BEGIN
 DVSYS.SET_FACTOR('GEO_STATE','VIRGINIA');
END;

その後、GEO_STATEファクタの割当てルールを作成し、その他のファクタまたはルール式に基づいてGEO_STATEファクタの設定を許可または禁止できます。詳細は、「ファクタの設定」を参照してください。

監査オプション

「監査オプション」で、設定から選択してカスタムのOracle Database Vault監査レコードを生成します。ファクタの監査レポートを使用して、生成された監査レコードを表示できます。(詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。)また、一度に複数の監査オプションを選択できます。各オプションはビット・マスクに変換され、集計の動作を決定するために追加されます。ファクタにエラーがないかぎり、監査のパフォーマンスへの影響はほとんどありません。この属性は必須です。

値は次のとおりです。

「常時」および「場合による」オプションに選択できる条件は次のとおりです。

エラー・オプション

「エラー・オプション」で、ファクタ・アイデンティティが解決されない場合に発生する処理を次の中から選択して指定します。この属性は必須です。

値は次のとおりです。

新規ファクタを作成すると、アイデンティティを構成できます。これを実行するには、ファクタを編集してアイデンティティを追加します。

ファクタの編集

ファクタを編集するには、次のようにします。

  1. Oracle Database Vaultの「管理」ページで、「ファクタ」を選択します。

  2. 「ファクタ」ページで編集するファクタを選択します。

  3. 「編集」をクリックします。

  4. 必要に応じてファクタを変更し、「OK」をクリックします。


関連項目:


ファクタへのアイデンティティの追加

新しいファクタを作成したら、ファクタにアイデンティティを追加できます。アイデンティティがファクタの実際の値です。たとえば、IP_Addressファクタのアイデンティティは、192.0.2.4というIPアドレスになります。

この項の内容は次のとおりです。

ファクタ・アイデンティティの概要

指定されたデータベース・セッションのファクタ・アイデンティティは、「ファクタの作成」で説明されている「ファクタの識別」および「取得メソッド」フィールドを使用して実行時に割り当てられます。次のような場合には、さらにアイデンティティを構成できます。

  • ファクタの既知のアイデンティティを定義する場合

  • ファクタ・アイデンティティに信頼レベルを追加する場合

  • ファクタ・アイデンティティにOracle Label Securityラベルを追加する場合

  • アイデンティティ・マップを使用して子ファクタによりファクタ・アイデンティティを解決する場合


関連項目:


ファクタ・アイデンティティの作成および構成

アイデンティティを作成および構成するには、次のようにします。

  1. Oracle Database Vaultの「管理」ページで、「ファクタ」を選択します。

  2. 「ファクタ」ページで、アイデンティティを追加するファクタを選択します。

  3. 「編集」をクリックします。

  4. 「ファクタの編集」ページで、「アイデンティティ」にスクロールし、「作成」をクリックします。

  5. 「アイデンティティの作成」ページで、次の設定を入力して「OK」をクリックします。

一般

次の値を入力します。

  • 値: 大/小文字混在で1024文字以内でアイデンティティの値を入力します。この属性は必須です。

  • 信頼レベル: 次のいずれかの信頼レベルを選択します。

    • 信頼度高: 信頼レベル値10が割り当てられます。

    • 信頼: 信頼レベル値5が割り当てられます。

    • 信頼度低: 信頼レベル値1が割り当てられます。

    • 信頼されない: 信頼レベル値-1が割り当てられます。

    • 信頼レベルが未定義: 信頼レベル値NULLが割り当てられます(デフォルト)。

信頼レベルを使用することにより、信頼できるかどうかの尺度を示す数値を割り当てることができます。信頼値1は信頼度が低いことを意味します。値が大きければ信頼度も高くなります。負の値またはゼロは信頼できないことを意味します。ファクタ取得メソッドにより返されたファクタ・アイデンティティがアイデンティティに定義されていない場合は、Oracle Database Vaultによりそのアイデンティティに自動的に負の信頼レベルが割り当てられます。

実行時にファクタ・アイデンティティの信頼レベルを特定するために、DVSYSスキーマのGET_TRUST_LEVELおよびGET_TRUST_LEVEL_FOR_IDENTITYファンクションを使用できます。

たとえば、Networkという名前のファクタを作成したとします。Networkファクタに次のようなアイデンティティを作成できます。

  • Intranet(信頼レベル10)

  • VPN(仮想プライベート・ネットワーク)(信頼レベル5)

  • Public(信頼レベル1)

ポリシー決定の基準を信頼レベルに置くルール式(またはカスタム・アプリケーション・コード)を作成できます。たとえば、DVSYS.GET_TRUST_LEVELを使用して5より大きい信頼レベルを検出できます。

DVSYS.GET_TRUST_LEVEL('Network') > 5

または、DVSYS.DBA_DV_IDENTITYデータ・ディクショナリ・ビューでSELECT文を使用して、信頼レベルが5以上のNetworkファクタを検出できます。

SELECT VALUE, TRUST_LEVEL FROM DVSYS.DBA_DV_IDENTITY
   WHERE TRUST_LEVEL >= 5
   AND FACTOR_NAME='Network'

次のような出力結果が表示されます。

F$NETWORK GET_TRUST_LEVEL('NETWORK')
------------------------------------
VPN                                5
INTRANET                          10

前の例では、VPNのNetworkファクタ・アイデンティティは信頼されており(値が5)、INTRANETドメインのアイデンティティはより信頼度の高い10です。

Oracle Database Vaultのファンクションの詳細は、第14章「Oracle Database Vault PL/SQLインタフェースの使用方法」を参照してください。

ラベル・アイデンティティ

ファクタ・アイデンティティにOracle Label Security(OLS)ラベルを割り当てられます。(簡単に説明すると、ラベルはデータベース表の行に権限を割り当てるために行の識別子の役割を果します。ラベルの詳細は、『Oracle Label Security管理者ガイド』を参照してください。)ファクタの「ファクタ・ラベリング」属性により、ファクタが「自己」または「ファクタ」のいずれにラベル付けされるかが決まります。「ファクタ・ラベリング」属性に「自己」を設定すると、OLSラベルをファクタ・アイデンティティに関連付けられます。「ファクタ・ラベリング」属性に「ファクタ」を設定すると、Oracle Database Vaultにより子ファクタ・アイデンティティのラベルからファクタ・アイデンティティ・ラベルが導出されます。ラベルのある子ファクタ・アイデンティティが複数ある場合は、適用可能なファクタのOracle Label Securityポリシーに関連付けられているOLSアルゴリズムを使用して、Oracle Database Vaultによりラベルがマージされます。

アイデンティティをラベル付けするには、次のようにします。

  1. 「アイデンティティの作成」ページの「ラベル・アイデンティティ」で、「使用可能なOLSラベル」リストからOLSラベルを選択します。

    リストには、サイトのOracle Label Securityインストールのデータ・ラベルが表示されます。詳細は、『Oracle Label Security管理者ガイド』を参照してください。


    注意:

    [Ctrl]キーを押しながら選択する各ラベルをクリックすると、複数のラベルを選択できます。

  2. 「移動」をクリックしてOLSラベルを「選択したOLSラベル」リストに移動します。

  3. 手順12を繰り返し、複数のOLSラベルを選択します。

    それぞれのOLSポリシーに選択できるラベルは1つのみです。

  4. 「OK」をクリックしてアイデンティティのラベル付けを終了します。

ファクタ・アイデンティティの編集

ファクタ・アイデンティティを編集するには、次のようにします。

  1. 「ファクタの編集」ページで、「アイデンティティ」にスクロールし、編集するアイデンティティを選択します。

  2. 「編集」をクリックします。

  3. 「アイデンティティの編集」ページで、必要に応じてアイデンティティを変更します。

  4. 「OK」をクリックします。

ファクタ・アイデンティティの削除

ファクタ・アイデンティティを削除する前に、ファクタに関連するOracle Database Vaultビューに問い合せることで、そのファクタ・アイデンティティへの様々な参照を特定できます。詳細は、「Oracle Database Vaultのデータ・ディクショナリ・ビュー」を参照してください。

ファクタ・アイデンティティを削除するには、次のようにします。

  1. 「ファクタの編集」ページで、「アイデンティティ」にスクロールし、削除するアイデンティティを選択します。

  2. 「削除」をクリックします。

  3. 「確認」ページで「はい」をクリックします。

他のファクタを使用するアイデンティティを構成するためのアイデンティティ・マップの使用方法

ファクタ・アイデンティティは、作成、編集および保存した後でマップできます。アイデンティティ・マップは、他(子)のファクタを使用してファクタを識別するプロセスです。これはファクタの組合せをファクタの論理アイデンティティに変換する方法です。また、連続するアイデンティティ値(温度など)や連続しない大きなアイデンティティ値(IPアドレスの範囲など)を論理セットに変換する方法でもあります。アイデンティティにマップする際の構成問題を確認する場合は、「「アイデンティティ構成の問題」レポート」を参照してください。アイデンティティ・マップの使用方法の例は、「チュートリアル: セッション・データに基づくユーザー・アクティビティの制限」を参照してください。

アイデンティティをファクタにマップするには、次のようにします。

  1. 親ファクタを作成し、「ファクタ」に属性「ファクタの識別」を設定します。

    ファクタの作成方法は、「ファクタの作成」で説明しています。

  2. 親ファクタに、新しいファクタ・アイデンティティを作成します。

    アイデンティティの作成方法は、「アイデンティティの作成および構成」で説明しています。

  3. 親ファクタのファクタとアイデンティティの組合せを、子のファクタとアイデンティティの組合せにマップします。次の手順に従います。

    1. 「ファクタ」ページで、親ファクタを選択し「編集」をクリックします。

    2. 「ファクタの編集」ページの「アイデンティティ」で、親ファクタ・アイデンティティを選択して「編集」をクリックします。

    3. 「アイデンティティの編集」ページの「アイデンティティのマップ」で、「作成」をクリックします。

    4. 「アイデンティティ・マップの作成」ページで、「構成ファクタ」リストからファクタ名を選択します。

      これは、親ファクタをマップする子ファクタです。

    5. 「マップ条件」を選択します。

      この設定により、構成(子)ファクタ値を比較するための演算子の選択が可能になります。

    6. (オプションの)「下限値」および「上限値」フィールドに値を入力します。

      たとえば、ファクタNetworkの「構成ファクタ」がClient_IP、「マップ条件」が「」、「下限値」が192.0.2.1、「上限値」が192.0.2.24に設定されているシナリオを想定します。この場合、クライアントIPアドレスが192.0.2.1〜192.0.2.24の指定されたアドレスの範囲内である場合は、親ファクタが事前に定義されたINTRANETなどのアイデンティティと評価されます。

    7. 「OK」をクリックして、親のファクタとアイデンティティを子のファクタとアイデンティティにマップします。

      親ファクタの別のアイデンティティを構成ファクタの別のアイデンティティにマップできます。たとえば、INTRANETアイデンティティは192.0.2.1〜192.0.2.24の範囲のIPアドレスにマップします。REMOTEアイデンティティは、192.0.2.1から192.0.2.24の範囲のアドレスを除くIPアドレスにマップします。

      アイデンティティ・マップに基づいて、セキュリティ・ポリシーを作成できます。たとえば、企業ネットワーク(INTRANET)内から接続している従業員とは対照的に、VPN(REMOTE)経由で接続している従業員には少ない権限を定義できます。

    8. 手順c〜手順gを繰り返して、親ファクタ・アイデンティティの構成ファクタをさらに追加します。

      たとえば、ProgramファクタがOracle General Ledgerに解決され、Client_IPが192.0.2.1〜192.0.2.24の間の場合には、値ACCOUNTING-SENSITIVEに解決するようNetworkファクタを構成できます。そのため、IPアドレスが192.0.2.12のクライアント上で稼働している、認可済の経理金融アプリケーション・プログラムがデータベースにアクセスすると、NetworkファクタはACCOUNTING-SENSITIVEに解決されます。Networkの値がACCOUNTING-SENSITIVEのデータベース・セッションには、Networkの値がINTRANETのデータベース・セッションよりも多くのアクセス権があります。

ファクタの削除

ファクタを削除する前に、それに関連するOracle Database Vaultビューに問い合せることで、そのファクタとアイデンティティへの様々な参照を特定できます。詳細は、「Oracle Database Vaultのデータ・ディクショナリ・ビュー」を参照してください。

ファクタを削除するには、次のようにします。

  1. ファクタ・アイデンティティのようなファクタへの参照およびOracle Label Securityポリシーの関連付けを削除します。

    参照のあるファクタは削除できません。

  2. Oracle Database Vaultの「管理」ページで、「ファクタ」を選択します。

  3. 「ファクタ」ページで削除するファクタを選択します。

  4. 「削除」をクリックします。

  5. 「確認」ページで「はい」をクリックします。

ファクタの動作

この項の項目では、Oracle Database Vaultがファクタをどのように処理するかを説明します。

セッション確立時のファクタの処理

データベース・セッションが確立されると、次のアクションが発生します。

  1. データベース・セッションの開始時に、Oracle Database Vaultは、データベース・インスタンス内のデフォルトおよびユーザー作成のすべてのファクタの評価を開始します。

    適用可能な場合、評価はセッションの通常のデータベース認証、およびOracle Label Securityセッション情報の初期化後に開始されます。

  2. ファクタの評価段階において、ファクタ初期化プロセスがメソッドまたは定数によって識別されるすべてのファクタの取得メソッドを実行し、セッションのファクタ・アイデンティティを解決します。

    ファクタのエラー・オプション設定は、ファクタ初期化プロセスには影響しません。

  3. ファクタに検証メソッドが定義されている場合は、Oracle Database Vaultによりその検証メソッドが実行され、ファクタのアイデンティティ(値)が検証されます。検証メソッドが失敗するかFalseが返された場合、ファクタのアイデンティティは未定義(NULL)です。

  4. ファクタにアイデンティティが定義されている場合、Oracle Database Vaultは定義されているアイデンティティに基づいてファクタの信頼レベルを解決します。ファクタのアイデンティティが定義済のアイデンティティのリストに定義されている場合、Oracle Database Vaultは構成されている信頼レベルを割り当てます。構成されていない場合は-1が設定されます。ファクタにアイデンティティが定義されていない場合、信頼レベルは未定義(NULL)になります。

  5. ファクタ評価、ファクタ検証および信頼レベル解決の結果により、Database Vaultはファクタ監査構成の指示に従って評価の詳細を監査します。

  6. メソッドまたは定数によって識別されるすべてのファクタの評価が完了すると、ファクタ構成アイデンティティに定義されているアイデンティティ・マップを使用して、その他のファクタによって識別されるファクタが解決されます。

    ファクタ構成アイデンティティの評価順序は、アイデンティティ値のASCIIソートにより決まります。Oracle Database Vaultは、アルファベット順で最初にソートされたアイデンティティ・マップを使用して評価します。ファクタTESTにXおよびYというアイデンティティがあるとします。さらに、アイデンティティXおよびYに、ファクタA、B、Cのアイデンティティに依存するアイデンティティ・マップがある場合、次のマップが行われます。

    • A=1およびB=1の時はXがマップされます。

    • A=1、B=1およびC=2の時はYがマップされます。

    この場合、最初に評価されるのはXです。Yは評価されませんが、TESTファクタの成功に必要な条件にCのマップが一致した場合はどうなるのでしょうか。Xの前にYをマップして、A、BおよびCが最初に評価されるように、逆にマップする必要があります。逆にマップするには、YをVという名前(またはXの前にソートされるアルファベット値)に変更します。これにより適切に解決されます。

    このアルゴリズムはASCIIソートの順序が適切な場合に機能し、アイデンティティは同レベルの同じ番号のファクタをマップします。

  7. ファクタの初期化が終了すると、Oracle Database VaultのOracle Label Securityとの統合が行われます。

このプロセスが終了すると、Oracle Database Vaultはコマンド・ルールがCONNECTイベントと関連付けられていることを確認します。ルール・セットがCONNECTイベントと関連付けられている場合は、ルール・セットが評価されます。ルール・セットがFalseと評価されるかエラーが戻されると、セッションは終了します。セッションが終了する前に、ルール・セットに関連付けられた監査またはコール・ハンドラが実行されます。


注意:

不用意に、他のユーザーをデータベースからロックアウトする可能性があるため、コマンド・ルールをCONNECTイベントに関連付ける際は注意してください。通常、CONNECTのコマンド・ルールを作成する場合は、関連付けられたルール・セットの評価オプションを「いずれかTrue」に設定します。

不用意に他のユーザーをロックアウトした場合は、一時的にOracle Database Vaultを無効にして、CONNECTコマンド・ルールを無効にし、Oracle Database Vaultを再び有効にして、問題の原因となっているファクタ・コードを修正します。これを実行する方法の例は、「テストが失敗した場合」で説明しています。


ファクタの取得

データベース・セッションのファクタは、DVFファクタ・ファンクションまたはDVSYS.GET_FACTORファンクションを使用していつでも取得できます。使用可能なファクタのリストを検索するには、「DBA_DV_FACTORビュー」で説明したDVSYS.DBA_DV_FACTORデータ・ディクショナリ・ビューに問い合せます。

例7-1に、DVSYS.GET_FACTORファンクションの使用例を示します。

例7-1 DVSYS.GET_FACTORを使用したファクタの取得

SELECT GET_FACTOR('client_ip') FROM DUAL;

DVFファクタ・ファンクションから取得されたファクタ値、またはDVSYS.GET_FACTORを次に示す方法で使用できます。

  • Oracle Database Vaultルール式

  • Oracle Database Vault環境のすべてのデータベース・セッションで使用可能なカスタム・アプリケーション・コード

DVFファクタ・ファンクションの詳細は、「Oracle Database VaultのPL/SQLファクタ・ファンクション」で説明しています。

「セッション確立時のファクタの処理」で説明されているように、ファクタ評価を「セッション」に設定した場合、値は確立したセッション・コンテキストから取得されます。

「セッション確立時のファクタの処理」で説明されているように、ファクタ評価を「アクセス」に設定した場合は、ファクタが取得されるたびに、Oracle Database Vaultにより手順2〜手順5(または手順6)が実行されます。

ファクタにエラー・オプションを定義し、エラーが発生した場合には、エラー・メッセージが表示されます。

ファクタの設定

データベース・セッション中はいつでもファクタにアイデンティティを割り当てられますが、ファクタ割当てルール・セットが定義されていて、そのルール・セットがTrueと評価される場合にかぎります。DVSYS.SET_FACTORファンクションを使用することにより、アプリケーション・コード内でこれを実行できます。Javaコードでは、JDBCクラスjava.sql.CallableStatementを使用してこの値を設定できます。たとえば、次のようになります。

java.sql.Connection connection ;
...
java.sql.CallableStatement statement =
   connection.prepareCall("{call DVSYS.SET_FACTOR('FACTOR_X', ?)}");
statement.setString(1, "MyValue");
boolean result = statement.execute();
...

Oracle Data Provider for .NET(ODP.NET)を使用して記述されたアプリケーションなど、Oracle PL/SQLファンクションの実行が可能なアプリケーションは、このプロシージャを使用できます。

この概念は、ファクタ値の設定時期をルール・セットで制御する機能が追加された標準のOracle DBMS_SESSION.SET_IDENTIFIERプロシージャに似ています。ルール・セットの評価がTrueの場合、「セッション確立時のファクタの処理」の手順25が実行されます。

ファクタに割当てルール・セットを関連付けていない、またはルール・セットにFalse(またはエラー)が返された場合、DVSYS.SET_FACTORファンクションを使用してファクタの設定を試行すると、エラー・メッセージが表示されます。

チュートリアル: データベースへの非定型ツール・アクセスの阻止

多くのデータベース・アプリケーションには、ユーザーのアクションを明示的に制御する機能が含まれています。ただし、非定型問合せツール(SQL*Plusなど)には、これらの制御機能がないことがあります。このため、ユーザーは非定型ツールを使用して、通常、正規のデータベース・アプリケーションで実行できないアクションをデータベースで実行できる場合があります。Oracle Database Vaultのファクタ、ルール・セットおよびコマンド・ルールを組み合せて使用すると、非定型問合せツールによるデータベースへの不正アクセスを阻止できます。

次のチュートリアルでは、Database Vault所有者、Database Vaultアカウント・マネージャ、SYSTEMおよびSYSの4ユーザーにのみ、SQL*Plusの使用を制限します。これを実行するには、システム上でアプリケーションを検索するファクタと、これら4ユーザーにSQL*Plusを制限するためのルールおよびルール・セットを作成する必要があります。次に、ルール・セットに関連付けられるCONNECT SQL文のコマンド・ルールを作成します。このチュートリアルを正常に完了すると、指定する管理ユーザーのみがSQL*Plusを使用してデータベースに接続できるようになります。

このチュートリアルの内容は次のとおりです。


関連項目:


手順1: SCOTTユーザー・アカウントの有効化

後でこのチュートリアルのためにOracle Database Vaultコンポーネントをテストするときに、SCOTTアカウントを使用する必要があるので、このアカウントがアクティブであることを確認してください。

  1. Oracle Database Vaultアカウント・マネージャとしてSQL*Plusにログインします。

    たとえば、次のようになります。

    sqlplus dbvacctmgr
    Enter password: password
    
  2. SCOTTアカウントのステータスを確認します。

    SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME = 'SCOTT';
    
  3. SCOTTが無効になり、ロックされている場合、次の文を入力してアクティブにします。

    ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY password;
    

    passwordをセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順2: Moduleファクタの作成

Moduleファクタは、SYS_CONTEXT SQLファンクションを使用して、Oracle Databaseの現行インスタンスへのアクセスに使用されるアプリケーションの名前を検索します。前述のように、SYS_CONTEXTファンクションには、ユーザー・セッションの状態を検出するための便利なメソッドが多数用意されています。SYS_CONTEXTは、カスタム・ファクタを作成するための貴重なツールです。

SYS_CONTEXTファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  1. Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。

    ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。

  2. 「管理」ページで、「ファクタ」を選択します。

    「ファクタ」ページが表示されます。

  3. 「作成」をクリックして、「ファクタの作成」ページを表示します。

  4. 次の情報を入力します。

    • 名前: Moduleと入力します。

    • 説明: Factor to find applications that can access Oracle Databaseと入力します。

    • ファクタ・タイプ: リストから、「アプリケーション」を選択します。

    • ファクタの識別: 「メソッド」を選択します。

    • 評価: 「セッション」を選択します。

    • ファクタ・ラベリング: 「自己」を選択します。

    • 取得メソッド: 次の取得メソッドを入力します。

      UPPER(SYS_CONTEXT('USERENV', 'MODULE'))
      
    • 検証メソッド: 空白のままにします。

    • 割当てルール・セット: リストから、「<未選択>」を選択します。

    • 監査オプション: 「行わない」を選択します。

    • エラー・オプション: 「エラー・メッセージを表示」を選択します。

  5. 「OK」をクリックします。

    Oracle Database Vaultによりファクタが作成されます。これで、「Oracle Database VaultのPL/SQLファクタ・ファンクション」で説明されているように、デフォルトのファクタの問合せに使用するものと同じ構文を使用して、ファクタを検索できます。

  6. SQL*Plusで、Moduleファクタのクイック・テストを実行します。

    たとえば、次のようになります。

    sqlplus dbvowner
    Enter password: password
    
    SELECT DVF.F$MODULE FROM DUAL;
    

    次のような出力結果が表示されます。

    F$MODULE
    -----------------------------
    SQLPLUS.EXE
    

    SQL*Plusを終了しないでください。後でファクタ・コンポーネントをテストするときに必要になります。

手順3: Limit SQL*Plus Accessルールおよびルール・セットの作成

  1. Oracle Database Vault Administratorで、「管理」ページに戻ります。

  2. 「管理」で「ルール・セット」を選択します。

    「ルール・セット」ページが表示されます。

  3. 「作成」をクリックして、「ルール・セットの作成」ページを表示します。

  4. 次の設定を入力します。

    • 名前: Limit SQL*Plus Accessと入力します。

    • 説明: Rule set to limit access to SQL*Plusと入力します。

    • ステータス: 「有効」を選択します。

    • 評価オプション: 「すべてTrue」を選択します。

    • 監査オプション: 「監査無効」を選択します。

    • エラー処理オプション: 「エラー・メッセージを表示」を選択します。

    • 失敗コード、失敗メッセージ: 空白のままにします。

    • カスタム・イベント・ハンドラ・オプション: 「ハンドラ無効」を選択します。

    • カスタム・イベント・ハンドラ・ロジック: 空白のままにします。

  5. 「OK」をクリックします。

    「ルール・セット」ページが表示されます。

  6. Limit SQL*Plusルール・セットを選択して、「編集」をクリックします。

    「ルール・セットの編集」ページが表示されます。

  7. 「ルール・セットに関連付けられたルール」で「作成」をクリックします。

    「ルールの作成」ページが表示されます。

  8. 次の設定を入力します。

    • 名前: Prevent non-admin access to SQL*Plusと入力します。

    • ルール式: 次のルール式を入力します。

      DVF.F$MODULE != 'SQL*PLUS' AND DVF.F$SESSION_USER IN ('DBVOWNER', 'DBVACCTMGR', 'SYS', 'SYSTEM')
      

      DBVOWNERDBVACCTMGRを、Oracle Database Vaultのインストール時にDatabase Vault所有者アカウントとDatabase Vaultアカウント・マネージャ・アカウント用に作成したユーザー・アカウント名に置き換えます。ユーザー・アカウント名は大文字で入力する必要があります。データベースではユーザー・アカウント名は大文字で保存されるためです。

      この式により、Oracle Database Vaultに、これら4ユーザーにのみSQL*Plusの使用を許可するよう指示されます。式を記述する別の方法として、Database Vaultに、単に特定のユーザーによるSQL*Plusの使用を除外するように指示します。そうすると、他のユーザーはすべてSQL*Plusにアクセスできます。たとえば、ユーザーJSMITHおよびTSMITHのSQL*Plusの使用を除外するには、次の式を作成します。

      DVF.F$MODULE != 'SQL*PLUS' AND DVF.F$SESSION_USER NOT IN ('JSMITH', 'TSMITH')
      

      ただし、このチュートリアルでは、4人の管理ユーザーのみがSQL*Plusの使用を許可される最初の式を使用します。

  9. このルール式を手順8で示したとおりに入力したことを確認します。誤って入力していると、SQL*Plusへログインできません。

  10. 「OK」をクリックします。

手順4: CONNECTコマンド・ルールの作成

CONNECTコマンド・ルールは、CONNECT SQL文を制御します。このコマンド・ルールは、SQL*Plusへのアクセスにサイトで使用されるコマンドラインまたはその他のツールから、SQL*Plusにログインする場合にも適用されます。

  1. Oracle Database Vaultで、「管理」ページに戻ります。

  2. 「コマンド・ルール」を選択します。

    「コマンド・ルール」ページが表示されます。

  3. 「作成」をクリックして、「コマンド・ルールの作成」ページを表示します。

  4. 次の設定を入力します。

    • コマンド: リストから「CONNECT」を選択します。

    • ステータス: 「有効」を選択します。

    • オブジェクト所有者、オブジェクト名: コマンド・ルールがログインするすべてのユーザーに適用されるように%に設定します。

    • ルール・セット: リストから「Limit SQL*Plus Access」を選択します。

  5. 「OK」をクリックします。

手順5: 非定期ツール・アクセス制限のテスト

SQL*Plusにログイン中ですが、Oracle Database Vaultの変更を有効にするために、SQL*Plusセッションを再起動する必要はありません。変更はただちに有効になります。

  1. SQL*PlusにユーザーSCOTTとして接続を試行します。

    CONNECT SCOTT
    Enter password: password
    

    次のような出力結果が表示されます。

    ERROR:
    ORA-47400: Command Rule violation for CONNECT on LOGON
    
    Warning: You are no longer connected to ORACLE.
    

    ユーザーSCOTTは、SQL*Plusの使用を阻止されます。

  2. ここで、ユーザーSYSTEMとして接続を試行します。

    CONNECT SYSTEM
    Enter password: password
    Connected.
    

    ユーザーSYSTEMは、SQL*Plusにログインできます。SYS、Database Vault所有者アカウントおよびDatabase Vaultアカウント・マネージャ・アカウントもログインできます。

テストが失敗した場合

SYSTEMとして(またはルール式で指定されているその他の管理ユーザーのいずれかとして)SQL*Plusにログインできない場合、SQL*PlusとOracle Database Vault Administratorの両方とも使用できなくなります。しかし、心配ありません。問題は次のように解決できます。

  1. 一時的にOracle Database Vaultを無効にします。

    Oracle Database Vaultの無効化の手順は、付録B「Oracle Database Vaultの有効化および無効化」を参照してください。

  2. Oracle Database Vault所有者アカウントとしてSQL*Plusにログインします。たとえば、次のようになります。

    CONNECT dbvowner
    Enter password: password
    
  3. 次の文を入力して、CONNECTコマンド・ルールを削除します。

    EXEC DVSYS.DBMS_MACADM.DELETE_COMMAND_RULE ('CONNECT', '%', '%');
    

    Oracle Database Vaultを無効にしても、そのPL/SQLパッケージとDatabase Vault Administratorはまだ使用できます。

  4. SQL*Plusを終了します。

  5. Oracle Database Vaultを再び有効にします。

    Oracle Database Vaultの有効化の手順は、付録B「Oracle Database Vaultの有効化および無効化」を参照してください。

  6. Oracle Database Vault Administratorで、ルール式にエラーがないか確認し、あれば修正します。CONNECTコマンド・ルールを再作成し、テストします。

手順6: このチュートリアルのコンポーネントの削除

  1. Database Vault Administratorで、「管理」ページに戻ります。

  2. 「コマンド・ルール」を選択します。

  3. 「コマンド・ルール」ページで、CONNECTコマンド・ルールを選択して、「削除」をクリックします。「確認」ページで「はい」を選択します。

  4. 「管理」ページで、「ルール・セット」を選択します。

  5. 「ルール・セット」ページで、SQL*Plus Accessルール・セットを選択し、「削除」をクリックします。「確認」ページで「はい」を選択します。

  6. 「管理」ページで、「ファクタ」を選択します。

  7. 「ファクタ」ページでModuleファクタを選択し、「削除」をクリックします。「確認」ページで「はい」を選択します。

  8. Database Vault所有者としてSQL*Plusにログインし、Prevent Non-adminsルールを削除します。

    たとえば、次のようになります。

    CONNECT dbvowner
    Enter password: password
    
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Prevent Non-admins');
    
    
  9. 必要な場合、Oracle Database Vaultアカウント・マネージャとして接続し、SCOTTアカウントをロックして無効にします。

    たとえば、次のようになります。

    CONNECT dbvacctmgr
    Enter password: password
    
    ALTER USER SCOTT ACCOUNT LOCK PASSWORD EXPIRE;
    

チュートリアル: セッション・データに基づくユーザー・アクティビティの制限

ファクタ・アイデンティティ・マップを使用して、データベース・アクティビティのセッションベースのユーザー制限を設定できます。たとえば、次の基準を使用して、データベースへの管理アクセスを制御するとします。

このような構成は、様々なタイプの管理者(ローカルの内部管理者だけでなく、海外および契約管理者も含む)を制限する場合に便利です。

このチュートリアルでは、管理者が使用しているコンピュータのIPアドレスに基づく、セキュアおよび非セキュアなネットワーク・アクセスのアイデンティティが含まれるように、Domainファクタを変更します。管理者が標準勤務時間外に、あるいは異なるIPアドレスからアクションを実行しようとすると、Oracle Database Vaultはそれを阻止します。

このチュートリアルの内容は次のとおりです。

手順1: 管理者ユーザーの作成

  1. SQL*PlusにDatabase Vaultアカウント・マネージャとしてログインし、ユーザー・アカウントmwaldronを作成します。

    たとえば、次のようになります。

    sqlplus dbvacctmgr
    Enter password: password
    
    CREATE USER mwaldron IDENTIFIED BY password;
    

    passwordをセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  2. SYSDBA権限を使用して、SYSとして接続し、ユーザーmwaldronにDBA権限を付与します。

    CONNECT SYS/AS SYSDBA
    Enter password: password
    
    GRANT CREATE SESSION, DBA TO mwaldron;
    

手順2: Domainファクタへのアイデンティティの追加

  1. Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。

    ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。

  2. 「管理」ページで、「ファクタ」を選択します。

    「ファクタ」ページが表示されます。

  3. Domainファクタを選択し、「編集」を選択します。

    Domainファクタが親ファクタとなります。

  4. 「アイデンティティ」で「作成」を選択します。

  5. 「アイデンティティの作成」ページで、次の情報を入力します。

    • 値: HIGHLY SECURE INTERNAL NETWORKと入力します。

    • 信頼レベル: 「信頼度高」を選択します。

  6. 「OK」をクリックします。

  7. 「ファクタの編集: Domain」ページで、NOT SECUREというもう1つのアイデンティティを作成し、その信頼レベルを「信頼されない」に設定します。

手順3: Domainファクタ・アイデンティティのClient_IPファクタへのマップ

  1. Oracle Database Vault Administratorの「ファクタの編集: Domain」ページで、HIGHLY SECURE INTERNAL NETWORKアイデンティティを選択し、「編集」を選択します。

  2. 「アイデンティティのマップ」で、「作成」を選択します。

  3. 「アイデンティティ・マップの作成」ページで、次の情報を入力します。

    • 構成ファクタ: 子ファクタとなる「Client_IP」を選択します。

    • マップ条件: 「=」を選択し、「下限値」ボックスに、仮想マシンのIPアドレス(たとえば、192.0.2.12)を入力します。(これは、ユーザーmaldronが使用するコンピュータです。このチュートリアルでは、自身のコンピュータのIPアドレスを入力できます。Microsoft Windowsを使用している場合は、ループバック・アダプタに割り当てられたIPアドレスを使用します。)

  4. 「OK」をクリックし、再び「OK」をクリックして「ファクタの編集: Domain」ページに戻ります。

  5. NOT SECUREアイデンティティ用に次の2つのアイデンティティ・マップを作成します。


    子ファクタ名 演算値 オペランド1 オペランド2

    Client_IP 192.0.2.5 (空白のまま)

    Client_IP 192.0.2.20 (空白のまま)

    NOT SECUREアイデンティティでのアイデンティティ・マップは、ユーザーmwaldronによって使用されるIPアドレス(192.0.2.12)以外の範囲のIPアドレスにあります。ここでのIPアドレスは、mwaldronのIPアドレス以外のいずれかの範囲にある必要があります。

    このアイデンティティ・マップにより、ユーザーが正しいIPアドレスからログインすると、Oracle Database VaultではHIGHLY SECURE INTERNAL NETWORKアイデンティティにより、その接続がセキュアであると判断する、という条件が作成されます。しかし、ユーザーが192.0.2.5未満または192.0.2.20より大きいIPアドレスからログインすると、NO SECUREアイデンティティにより、その接続はセキュアではないと判断されます。

  6. 「OK」をクリックして「ファクタの編集: Domain」ページに戻り、再び「OK」をクリックして「ファクタ」ページに戻ります。

  7. ファクタ・アイデンティティをテストします。

    最初に、SQL*Plusにユーザーmwaldronとして接続しますが、データベース・インスタンスは指定しません。

    CONNECT mwaldron
    Enter password: password
    
    SELECT DVF.F$CLIENT_IP FROM DUAL;
    

    次のような出力結果が表示されます。

    F$CLIENT_IP
    -------------------------------------
    

    続いて次のように入力します。

    SELECT DVF.F$DOMAIN FROM DUAL;
    

    次のような出力結果が表示されます。

    F$DOMAIN
    -------------------------------------
    NOT SECURE
    

    ユーザーmwaldronはデータベース・インスタンスに直接接続していないので、Oracle Database Vaultではユーザーの接続元であるIPアドレスが認識されません。この場合、Oracle DatabaseではIPCプロトコルを使用して、IP値をNULLに設定する接続を実行します。したがって、この接続のアイデンティティはNOT SECUREに設定されます。

    ここで、データベース・インスタンス(たとえば、orcl)を指定してSQL*Plusに接続し、再びファクタ・アイデンティティを確認します。

    CONNECT mwaldron@orcl
    Enter password: password
    
    SELECT DVF.F$CLIENT_IP FROM DUAL;
    

    次のような出力結果が表示されます。

    F$CLIENT_IP
    -------------------------------------
    192.0.2.12
    

    続いて次のように入力します。

    SELECT DVF.F$DOMAIN FROM DUAL;
    

    次のような出力結果が表示されます。

    F$DOMAIN
    -------------------------------------
    HIGHLY SECURE INTERNAL NETWORK
    

    ユーザーmwaldronorclデータベース・インスタンスに接続しているので、そのIPアドレスが認識されます。これはデータベースでTCPプロトコルが使用されていて、ホストIP値を適切に移入できるようになったからです。IPアドレスは正しい範囲内にあるため、ファクタ・アイデンティティはHIGHLY SECURE INTERNAL NETWORKに設定されます。

手順4: 時間を設定するルール・セットの作成およびファクタ・アイデンティティの選択

  1. Oracle Database Vaultで、「管理」ページに戻ります。

  2. 「ルール・セット」を選択します。

  3. 「ルール・セット」ページで「作成」を選択します。

  4. 「ルール・セットの作成」ページで、次の設定を入力します。

    • 名前: Internal DBA Standard Working Hoursと入力します。

    • ステータス: 「有効」を選択します。

    • 評価オプション: 「すべてTrue」を選択します。

    残りの設定はデフォルトのままにします。

  5. 「OK」をクリックします。

  6. 「ルール・セット」ページで、Internal DBA Standard Working Hoursルール・セットを選択し、「編集」を選択します。

  7. 「ルール・セットの編集: Internal DBA Standard Working Hours」ページの「ルール・セットに関連付けられたルール」で、「作成」を選択します。

  8. 「ルールの作成」ページで、次のルールを作成します。

    • 名前: Internal DBA

      ルール式: DVF.F$SESSION_USER='MWALDRON'

      (ユーザー名を含む式を作成する場合、ユーザー名は大文字で入力します。データベースではユーザー名が大文字で格納されるためです。)

    • 名前: Internal Network Only

      ルール式: DVF.F$DOMAIN='HIGHLY SECURE INTERNAL NETWORK'

    • 名前: Week Day

      ルール式: TO_CHAR(SYSDATE, 'D') BETWEEN '2' AND '6'

    • 名前: Week Working Day Hours

      ルール式: TO_CHAR(SYSDATE, 'HH24') BETWEEN '08' AND '19'

  9. 「OK」をクリックして「ルール・セット」ページに戻ります。

手順5: ルール・セットを使用するコマンド・ルールの作成

  1. Oracle Database Vault Administratorで、「管理」ページに戻ります。

  2. 「コマンド・ルール」を選択し、「コマンド・ルール」ページで「作成」を選択します。

  3. 「コマンド・ルールの作成」ページで、次の設定を入力します。

    • コマンド: リストから「CREATE TABLE」を選択します。

    • ルール・セット: リストから「Internal DBA Standard Working Hours」を選択します。

    残りの設定はデフォルトのままにします。

  4. 「OK」をクリックします。

手順6: ファクタ・アイデンティティの設定のテスト

システム・クロックを再設定して、mwaldron管理ユーザーとしてログインし、表を作成することにより、設定をテストします。

  1. システム時間を午後9時に設定します。

    UNIXシステム: rootとしてログインし、dateコマンドを使用して時間を設定します。たとえば、今日の日付が2007年12月13日だとすると、次のように入力します。

    su root
    Password: password
    
    date 12132109
    

    Microsoft Windows: 通常画面の右下隅にある時計アイコンをダブルクリックします。「日付と時刻のプロパティ」ウィンドウで、時刻を午後9時に設定し、「OK」をクリックします。

  2. SQL*Plusで、ユーザーmwaldronとして接続し、表の作成を試行します。次の文で、orclを使用するデータベース・インスタンスの名前に置き換えます。

    CONNECT mwaldron@orcl
    Enter password: password
    
    CREATE TABLE TEST (num number);
    

    次のような出力結果が表示されます。

    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-47400: Command Rule violation for create table on MWALDRON.TEST
    ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55
    ORA-06512: at line 31
    

    ユーザーmwaldronは勤務時間外に表を作成するため、Database Vaultにより阻止されます。

  3. システム時間をローカル時間に再設定します。

  4. SQL*Plusで、ユーザーmwaldronとして、表の作成を再試行します。

    CREATE TABLE TEST (num number);
    
    Table created.
    
    DROP TABLE TEST;
    Table dropped.
    

    ここで、ユーザーmaldronはローカル時間に、HIGHLY SECURE INTERNAL NETWORKアイデンティティに関連付けられたIPアドレスから作業を行っているので、表を作成できます。

  5. ユーザーmwaldronとして再接続し、ここで接続コマンドにデータベース・インスタンス名を追加せずに、再びOE.ORDERS表から選択してみます。

    CONNECT mwaldron
    Enter password: password
    
    CREATE TABLE TEST (num number);
    

    次のような出力結果が表示されます。

    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-47400: Command Rule violation for create table on MWALDRON.TEST
    ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55
    ORA-06512: at line 31
    

    ユーザーmwaldronは正しい時間に表を作成しようとしていますが、orclデータベース・インスタンスに直接ログインしていないため、作成できません。Oracle Database Vaultでは、ユーザーがNOT SECUREアイデンティティを使用しているものと判断し、アクセスを拒否します。

手順7: このチュートリアルのコンポーネントの削除

  1. Database Vault管理者としてSQL*Plusにログインし、ユーザーmwaldronを削除します。

    sqlplus dbvacctmgr
    Enter password: password
    
    DROP USER mwaldron CASCADE;
    
  2. CREATE TABLEコマンド・ルールを削除します。

    「管理」ページに戻り、「コマンド・ルール」を選択します。CREATE TABLEコマンド・ルールを選択して、「削除」を選択します。「確認」ページで「はい」を選択します。

  3. Internal DBA Standard Working Hoursルール・セットを削除します。

    Oracle Database Vault Administratorの「管理」ページで、「ルール・セット」を選択します。「ルール・セット」ページで、Internal DBA Standard Working Hoursルール・セットを選択し、「削除」を選択します。「確認」ページで「はい」を選択します。

  4. SQL*Plusで、Internal DBA Standard Working Hoursルール・セットに関連付けられたルールを削除します。

    CONNECT dbvowner
    Enter password: password
    
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Internal DBA');
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Internal Network Only');
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Week Day');
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Week Day Working Hours');
    COMMIT;
    
  5. DomainファクタからHIGHLY SECURE INTERNAL NETWORKおよびNOT SECUREファクタ・アイデンティティを削除します。

    「管理」ページに戻り、「ファクタ」を選択します。Domainファクタを選択して「編集」を選択し、「アイデンティティ」でHIGHLY SECURE INTERNAL NETWORKおよびNOT SECUREファクタ・アイデンティティを削除します。「確認」ページで「はい」を選択します。

ファクタ設計のガイドライン

次に示すファクタ設計のガイドラインに従ってください。

ファクタのパフォーマンスへの影響

各ファクタには、検証メソッドや信頼レベルのような処理される要素があります。セッションによって評価されるDatabase_HostnameおよびProxy_Userのようなファクタの場合は、Oracle Database Vaultによりセッションの初期化中にこのプロセスが実行され、その値に対する後続のリクエスト用に結果がキャッシュされます。

「デフォルトのファクタ」に示されているデフォルトの17のファクタは、典型的なセキュリティ・ポリシーで使用される可能性が高いためキャッシュされます。ただし、ルール・セットやその他のコンポーネントなどで5つのファクタしか使用しない場合、別のことに使用できるリソースが残りのファクタにより消費されます。このような場合は、不要なファクタを削除する必要があります。(Oracle Database Vaultでは、これらのファクタを内部的に使用しないため、不要な場合は削除できます。)

ユーザー数が多い場合やアプリケーション・サーバーで接続の作成や切断を頻繁に行う場合、使用されるリソースがシステムのパフォーマンスに影響を与える可能性があります。不要なファクタは削除できます。

Oracle Enterprise Manager(デフォルトでOracle DatabaseとともにインストールされるOracle Enterprise Manager Database Controlを含む)、StatspackおよびTKPROFなどのツールを実行してシステム・パフォーマンスを確認できます。Oracle Enterprise Managerの詳細は、Oracle Enterprise Managerのドキュメント・セットを参照してください。Database Controlの詳細は、オンライン・ヘルプを参照してください。StatspackおよびTKPROFユーティリティについては、『Oracle Databaseパフォーマンス・チューニング・ガイド』で説明されています。

関連するレポートおよびデータ・ディクショナリ・ビュー

表7-1に、ファクタおよびそのアイデンティティの分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第16章「Oracle Database Vaultレポート」を参照してください。

表7-1 ファクタおよびアイデンティティに関連するレポート

レポート 説明

「「ファクタの監査」レポート」


評価に失敗したファクタの検出など、ファクタが監査されます。

「「ファクタ構成の問題」レポート」


無効なルール・セットまたは不完全のルール・セットなどの構成問題の表示、またはファクタに影響を与える可能性のある問題の監査が行われます。

「「アイデンティティのないファクタ」レポート」


アイデンティティが割り当てられていないファクタが表示されます。

「「アイデンティティ構成の問題」レポート」


無効なラベル・アイデンティティがあるファクタ、またはアイデンティティがマップされていないファクタが表示されます。

「「ルール・セット構成の問題」レポート」


ルールが定義されていないか、有効ではなく、それらを使用するファクタに影響を与える可能性があるルール・セットが表示されます。


表7-2に、既存のファクタおよびファクタ・アイデンティティに関する情報を提供するデータ・ディクショナリ・ビューを示します。

表7-2 ファクタおよびファクタ・アイデンティティに使用されるデータ・ディクショナリ・ビュー

データ・ディクショナリ・ビュー 説明

「DBA_DV_FACTORビュー」


現行のデータベース・インスタンス内の既存のファクタが表示されます。

「DBA_DV_FACTOR_LINKビュー」


子ファクタの関連によりアイデンティティが決定される各ファクタの関係が表示されます。

「DBA_DV_FACTOR_TYPEビュー」


システムで使用されているファクタ・タイプの名前および説明が表示されます。

「DBA_DV_IDENTITYビュー」


各ファクタのアイデンティティが表示されます。

「DBA_DV_IDENTITY_MAPビュー」


各ファクタのアイデンティティのマップが表示されます。