プライマリ・コンテンツに移動
Oracle® Database Vault管理者ガイド
11gリリース2 (11.2)
B56297-10
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 Oracle Database Vaultのセキュア・アプリケーション・ロールの構成

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

Oracle Database Vaultのセキュア・アプリケーション・ロールの概要

Oracle Database Vaultでは、Oracle Database Vaultルール・セットで有効にするセキュア・アプリケーション・ロールを作成できます。通常のOracle Databaseセキュア・アプリケーション・ロールはカスタムPL/SQLプロシージャによって有効になります。セキュア・アプリケーション・ロールは、ユーザーによるアプリケーション外からのデータへのアクセスを阻止します。これにより、ユーザーはロールに付与されているアプリケーション権限のフレームワーク内での作業を強制されます。

ルール・セットを基準にしてロールのデータベース・アクセスを行う利点は、データベース・セキュリティ・ポリシーをすべてのアプリケーションに保存するのではなく、中央の1つの場所に保存できることです。ルール・セットに基づいたロールにより、一貫性と柔軟性を兼ね備えたメソッドを作成し、ロールが提供するセキュリティ・ポリシーを実行できます。この方法では、アプリケーション・ロールのセキュリティ・ポリシーを更新する必要がある場合、1つの場所、つまりルール・セットで行うことができます。さらに、ユーザーがどのようにしてデータベースに接続しても、ルール・セットがロールにバインドされているため、結果は同じです。ユーザーは、ロールを作成して、それをルール・セットに関連付けるのみです。関連付けられているルール・セットでは、ロールの有効化を試行するユーザーが検証されます。

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

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

セキュア・アプリケーション・ロールの作成および編集

次の手順に従います。

  1. ユーザーにロールの有効化を許可または禁止する条件を設定する1つ以上のルールが含まれるルール・セットを作成します。

    ルール・セットの基礎となるルールを作成する場合、ルールでロールの有効化を試行するユーザーを検証する必要があります。ルールで、ログインを試行するユーザーを検証する必要があります。ルール・セットの詳細は、第5章「ルール・セットの構成」を参照してください。

  2. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。

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

  3. 「管理」ページの「Database Vault機能管理」で、「セキュア・アプリケーション・ロール」をクリックします。

  4. 「セキュア・アプリケーション・ロール」ページで、次のようにします。

    • 新しいセキュア・アプリケーション・ロールを作成するには、「作成」をクリックします。

    • 既存のセキュア・アプリケーション・ロールを編集するには、リストからセキュア・アプリケーション・ロールを選択して「編集」をクリックします。

      既存のセキュア・アプリケーション・ロールを変更できるのは、それがOracle Database Vaultで作成された場合のみです。Oracle Database Vault以外を使用して作成されたセキュア・アプリケーション・ロールやデータベース・ロールは変更できません。既存のOracle Databaseロールを変更してOracle Database Vaultで使用できるようにする場合は、Oracle Database Vaultで新しいセキュア・アプリケーション・ロールを作成し、既存のロールにそのセキュア・アプリケーション・ロールを付与します。たとえば、SQL*Plusでは次のようにします。

      GRANT myExistingDBrole TO myDVrole;
      

      新しいセキュア・アプリケーション・ロールを作成したら、この新しいロールを使用するようコードを変更する必要があります。これを実行するには、アプリケーション・コードにDBMS_MACSEC_ROLES.SET_ROLEを使用します。SET_ROLEファンクションの詳細は、「SET_ROLEプロシージャ」を参照してください。

  5. 「ロールの作成」(または「ロールの編集」)ページで、次の設定を入力して「OK」をクリックします。

一般

次の設定を入力します。

  • ロール: 空白は使用せず、30文字以内の名前を入力します。必須ではありませんが、ロール名は大文字で入力することをお薦めします。この名前が、『Oracle Database SQL言語リファレンス』で説明されている、CREATE ROLE文を使用したロール作成の標準のOracleネーミング規則に準拠していることを確認してください。この属性は必須です。

  • ステータス: 「有効」または「無効」のいずれかを選択し、実行時にセキュア・アプリケーション・ロールを有効または無効にします。デフォルトは「有効」です。この属性は必須です。

    • 有効: 使用できるようにロールを有効にします。すなわち、ユーザーはDBMS_MACSEC_ROLES.SET_ROLEファンクションを呼び出してロールの有効化を試行できます。ロールを有効化できるかどうかは、関連付けられているルール・セットの評価結果によって決まります。

      このファンクションの詳細は、「SET_ROLEプロシージャ」を参照してください。

    • 無効: 使用できないようにロールを無効にします。DBMS_MACSEC_ROLES.SET_ROLEファンクションでロールを有効化できません。

    DBMS_MACSEC_ROLES.SET_ROLEファンクションの詳細は、「Oracle Database VaultのPL/SQLパッケージ」を参照してください。

ルール・セット

リストから、セキュア・アプリケーション・ロールに関連付けるルール・セットを選択します。この属性は必須です。

DBMS_MACSEC_ROLES.SET_ROLEを呼び出す際に、ルール・セットがTrueと評価されると、Oracle Database Vaultによりデータベース・セッションにそのロールが設定されます。ルール・セットがFalseと評価されると、ロールは設定されません。

ルール・セットの詳細は、第5章「ルール・セットの構成」を参照してください。

セキュア・アプリケーション・ロールの保護

データベース管理権限を持っているユーザーDROP ROLE SQL文を使用して、Oracle Database Vaultを使用して作成されたセキュア・アプリケーション・ロールの削除を試行できます。

Oracle Database Vaultセキュア・アプリケーション・ロールが作成されると、Database Vaultによりセキュア・アプリケーション・ロールがDatabase Vaultレルムに追加されます。これにより、データベース管理者によるセキュア・アプリケーション・ロールの削除を防ぐことができます。

セキュア・アプリケーション・ロールの削除

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

セキュア・アプリケーション・ロールを削除するには、次のようにします。

  1. 削除するセキュア・アプリケーション・ロールを使用している可能性のあるアプリケーションを確認して変更します。

  2. Oracle Database Vaultの「管理」ページで、「セキュア・アプリケーション・ロール」を選択します。

  3. 「セキュア・アプリケーション・ロール」ページで、削除するロールを選択します。

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

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

セキュア・アプリケーション・ロールの動作

Oracle Database Vaultによって管理されているセキュア・アプリケーション・ロールの処理フローは、次のとおりです。

  1. Oracle Database Vault Administrator、またはDBMS_MACADMパッケージのセキュア・アプリケーション・ロール固有のファンクションを使用してロールを作成または更新します。

    詳細は、「DBMS_MACADMのセキュア・アプリケーション・ロール・プロシージャ」を参照してください。

  2. DBMS_MACSEC_ROLES.SET_ROLEファンクションを使用して、そのロールを呼び出すようにアプリケーションを変更します。

    詳細は、「SET_ROLEプロシージャ」を参照してください。

  3. Oracle Database Vaultにより、セキュア・アプリケーション・ロールに関連付けられているルール・セットが評価されます。

    ルール・セットがTrueと評価されると、ロールが現行のセッションに対して有効になります。ルール・セットがFalseと評価されると、ロールは有効になりません。どちらの場合も、Oracle Database Vaultにより、セキュア・アプリケーション・ロールに関連付けられているルール・セットの関連する監査およびカスタム・イベント・ハンドラが処理されます。

チュートリアル: Database Vaultセキュア・アプリケーション・ロールによるアクセス権限の付与

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

このチュートリアルの概要

このチュートリアルでは、OEスキーマのORDERS表に対するSELECT SQL文を特定のユーザーに制限します。さらに、これらのユーザーは、リモート接続からではなく、オフィス内でのみOE.ORDERS表に対してこれらの文を実行できます。これを実行するには、Oracle Database Vaultセキュア・アプリケーション・ロールを作成し、これに関連付けたルール・セットによって実施されるチェックに合格した場合のみ、ユーザーにこのロールが有効化されるようにします。

手順1: このチュートリアル用のユーザーの作成

  1. DV_ACCTMGRロールを付与されているユーザーとしてSQL*Plusにログインします。

    次に例を示します。

    sqlplus amalcolm_dvacctmgr
    Enter password: password
    
  2. 次のユーザー・アカウントを作成します。

    CREATE USER eabel IDENTIFIED BY password;
    CREATE USER ahutton IDENTIFIED BY password;
    CREATE USER ldoran IDENTIFIED BY password;
    

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

  3. SYSDBA権限を使用して、SYSとして接続し、これらのユーザーにCREATE SESSION権限を付与します。

    CONNECT SYS AS SYSDBA
    Enter password: password
    
    GRANT CREATE SESSION TO eabel, ahutton, ldoran;
    

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

  1. DV_ACCTMGRユーザーとしてSQL*Plusに接続します。

    次に例を示します。

    CONNECT amalcolm_dvacctmgr
    Enter password: password
    
  2. OEアカウントのアカウント・ステータスを確認します。

    SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME = 'OE';
    
  3. OEアカウントがロックされて無効になっている場合、ロックを解除し、新しいパスワードを割り当てます。

    ALTER USER OE ACCOUNT UNLOCK IDENTIFIED BY password;
    

手順3: ルール・セットとそのルールの作成

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。

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

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

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

  3. 「作成」をクリックします。

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

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

    • 名前: Can Modify Orders

    • 説明: Rule set to control who can modify orders in the OE.ORDERS table

  5. 残りの設定はデフォルトのままにして、「OK」をクリックします。

  6. 「ルール・セット」ページで、Can Modify Ordersルール・セットを選択し、「編集」をクリックします。

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

  7. ページの最下部までスクロールし、「ルール・セットに関連付けられたルール」で「作成」をクリックします。

  8. 次の2つのルール・セットを作成します。


    ルール名 ルール式

    Check IP Address DVF.F$CLIENT_IP = '192.0.2.12'

    Check Session User DVF.F$SESSION_USER IN ('EABEL', 'AHUTTON')

    Check IP Addressルールでは、123.45.67.89を自身のコンピュータのIPアドレスに置き換えます。実際には、アクセスを許可されるユーザーのすべてのIPアドレスを含む式を作成します。

    これらのルールのどちらでも、デフォルト・ファクタClient_IPおよびSession_Userを使用します。これらのファクタの詳細は、「デフォルトのファクタ」を参照してください。これらのファクタが削除または変更されている場合、かわりに次のルール式を使用できます。

    • Check IP Address: UPPER(SYS_CONTEXT('USERENV','IP_ADDRESS')) = '192.0.2.12'

    • Check Session User: UPPER(SYS_CONTEXT('USERENV','SESSION_USER')) IN ('EABEL', 'AHUTTON')

  9. Can Modify Orders表の「ステータス」設定が「有効」に、「評価オプション」「すべてTrue」に設定されていることを確認します。

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

手順4: Database Vaultセキュア・アプリケーション・ロールの作成

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

  2. 「管理」で「セキュア・アプリケーション・ロール」を選択します。

    「セキュア・アプリケーション・ロール」ページが表示されます。

  3. 「作成」をクリックします。

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

  4. 「ロール」ボックスで、ORDERS_MGMTと入力し、ロールに名前を付けます。

  5. 「ルール・セット」で、「Can Modify Orders」を選択します。

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

この段階で、Database Vaultセキュア・アプリケーション・ロールとそれに関連付けられたルール・セットが作成されますが、ロールにはまだ権限がありません。

手順5: セキュア・アプリケーション・ロールへのSELECT権限の付与

  1. ユーザーOEとしてSQL*Plusに接続します。

    CONNECT OE
    Enter password: password
    
  2. ORDERS_MGMT Database Vaultセキュア・アプリケーション・ロールにSELECT権限を付与します。

    GRANT SELECT ON ORDERS TO ORDERS_MGMT;
    

手順6: Database Vaultセキュア・アプリケーション・ロールのテスト

  1. SQL*Plusで、ユーザーeabelとしてデータベースに直接接続します。

    CONNECT eabel@orcl
    Enter password: password
    

    orclを使用するデータベース・インスタンスの名前に置き換えます。

  2. ORDERS_MGMTロールを設定します。

    EXEC DBMS_MACSEC_ROLES.SET_ROLE('ORDERS_MGMT');
    

    通常、このコールはユーザーがログインするアプリケーションに埋め込みます。

  3. OE.ORDERS表から選択します。

    SELECT COUNT(*) FROM OE.ORDERS;
    

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

      COUNT(*)
    ----------
           105
    

    ユーザーeabelは、正しいIPアドレスからデータベースに直接ログインし、有効セクション・ユーザーとしてリストにあるため、OE.ORDERS表から選択できます。ユーザーahuttonが同様にSQL*Plusにログインした場合も、OE.ORDERS表から選択できます。

  4. データベース・インスタンスを指定せずに、ユーザーeabelとして再接続し、再びOE.ORDERS表からの選択を試行します。

    CONNECT eabel
    Enter password: password
    
    EXEC DBMS_MACSEC_ROLES.SET_ROLE('ORDERS_MGMT');
    

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

    Error at line 1: 
    ORA-47305: Rule Set Violation on SET ROLE (Can Modfiy Orders)
    ...
    

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

    SELECT COUNT(*) FROM OE.ORDERS;
    

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

    ERROR at line 1:
    ORA-00942: table or view does not exist
    

    ユーザーeabelは、有効なユーザーであっても、ルール・セットのCheck IP Addressルールに違反しているため、ORDERS_MGMTロールを付与されません。IPアドレスが認識される唯一の方法は、ユーザーeabelが手順1で行ったように、データベース・インスタンスを指定して接続することです。(これがどのように機能するかは、第7章「手順3: Domainファクタ・アイデンティティのClient_IPファクタへのマップ」、手順7を参照してください。)

  5. ユーザーldoranとして接続し、次の文を入力します。

    EXEC DBMS_MACSEC_ROLES.SET_ROLE('ORDERS_MGMT');
    SELECT COUNT(*) FROM OE.ORDERS;
    

    ユーザーldoranは有効なユーザーではないので、ORDERS_MGMTロールを付与されません。したがって、OE.ORDERS表から選択できません。

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

  1. DV_OWNERまたはDV_ADMINユーザーとしてSQL*Plusにログインします。

    次に例を示します。

    CONNECT lbrown_dvowner
    Enter password: password
    
  2. ORDERS_MGMTセキュア・アプリケーション・ロールを削除します。

    EXEC DBMS_MACADM.DELETE_ROLE('ORDERS_MGMT');
    
  3. Can Modify Ordersルール・セットを削除するために、次のコマンドを示した順序で入力します。

    EXEC DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('Can Modify Orders', 'Check IP Address');
    EXEC DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('Can Modify Orders', 'Check Session User');
    EXEC DBMS_MACADM.DELETE_RULE('Check IP Address');
    EXEC DBMS_MACADM.DELETE_RULE('Check Session User');
    EXEC DBMS_MACADM.DELETE_RULE_SET('Can Modify Orders');
    COMMIT;
    
  4. Database Vaultアカウント・マネージャとして接続し、ユーザーを削除します。

    次に例を示します。

    CONNECT amalcolm_dvacctmgr
    Enter password: password
    
    DROP USER eabel;
    DROP USER ahutton;
    DROP USER ldoran;
    
  5. 必要がなければ、OEユーザー・アカウントをロックし、無効にします。

    ALTER USER OE ACCOUNT LOCK PASSWORD EXPIRE;
    

セキュア・アプリケーション・ロールのパフォーマンスへの影響

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

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

表8-1に、Oracle Database Vaultセキュア・アプリケーション・ロールの分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第18章「Oracle Database Vaultレポート」を参照してください。

表8-1 セキュア・アプリケーション・ロールに関連するレポート

レポート 説明

「「セキュア・アプリケーション・ロールの監査」レポート」


Oracle Database Vaultセキュア・アプリケーション・ロールを有効にする操作によって生成された監査レコードが表示されます

このタイプの監査レコードを生成するには、ロールに関連付けられているルール・セットの監査を有効にします。

「「セキュア・アプリケーション構成の問題」レポート」


存在しないデータベース・ロールや、不完全または無効なルール・セットのあるセキュア・アプリケーション・ロールが表示されます。

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


ルールが定義されていないか、有効ではなく、それらを使用するセキュア・アプリケーション・ロールに影響を与える可能性のあるルール・セットが表示されます。

「強力なデータベース・アカウントおよびロールのレポート」


強力な権限のあるデータベース・アカウントおよびロールに関する情報が示されます。


DVSYS.DBA_DV_ROLEデータ・ディクショナリ・ビューを使用すれば、権限管理で使用されるOracle Database Vaultセキュア・アプリケーション・ロールを検索できます。詳細は、「DVSYS.DBA_DV_ROLEビュー」を参照してください。