プライマリ・コンテンツに移動
Oracle® Database Vault管理者ガイド
12cリリース1 (12.1)
B71286-08
目次へ移動
目次
索引へ移動
索引

前
次

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

セキュア・アプリケーション・ロールを使用すると、ユーザーのアプリケーションに対するアクセス権限を制御できます。

内容は次のとおりです。

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

セキュア・アプリケーション・ロールを使用すると、ユーザーのアプリケーションに対するアクセス権限を制御できます。

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

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

関連項目:

PL/SQLインタフェースおよびパッケージの使用によるOracle Database Vaultのセキュア・アプリケーション・ロールの作成と管理については、「Oracle Database Vaultセキュア・アプリケーション・ロールのAPI」を参照してください

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

Database Vault AdministratorでDatabase Vaultセキュア・アプリケーション・ロールを作成できます。

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

    ログイン方法については、「Oracle Database Vaultへのログイン」で説明します。

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

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

  3. 「管理」ページの「Database Vaultコンポーネント」で、「セキュア・アプリケーション・ロール」をクリックします。
  4. 「セキュア・アプリケーション・ロール」ページで、「作成」をクリックして「セキュア・アプリケーション・ロールの作成」ページを表示します。
  5. 「ロールの作成」ページの「一般」で次の設定を入力します。
    • ロール: 空白は使用せず、30文字以内の名前を入力します。この名前が、『Oracle Database SQL言語リファレンス』で説明されている、CREATE ROLE文を使用したロール作成の標準のOracleネーミング規則に準拠していることを確認してください。この属性は必須です。

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

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

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

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

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

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

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

  7. 「OK」をクリックします

セキュア・アプリケーション・ロールの変更

既存のセキュア・アプリケーション・ロールを変更できるのは、それが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プロシージャ」を参照してください

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

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

Oracle Database Vaultセキュア・アプリケーション・ロールが作成されると、必ずDatabase Vaultによりセキュア・アプリケーション・ロールがOracle Database Vaultレルムに追加されます。これにより、データベース管理者はDROP ROLE文を使用してセキュア・アプリケーション・ロールを削除できません。

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

Oracle Database Vault AdministratorでOracle Database Vaultセキュア・アプリケーション・ロールを削除できます。

  1. 必要に応じて、ロールに関連するOracle Database Vaultビューに問い合せることで、そのセキュア・アプリケーション・ロールへの様々な参照を特定します。
  2. 削除するセキュア・アプリケーション・ロールを使用している可能性のあるアプリケーションを確認して変更します。
  3. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。

    ログイン方法については、「Oracle Database Vaultへのログイン」で説明します。

  4. 「管理」ページの「Database Vaultコンポーネント」で、「セキュア・アプリケーション・ロール」をクリックします。
  5. 「セキュア・アプリケーション・ロール」ページで、削除するロールを選択します。
  6. 「削除」をクリックします。
  7. 「確認」ウィンドウで、「はい」をクリックします。

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

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表へのユーザー・アクセスを制御する方法を示します。

内容は次のとおりです。

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

このチュートリアルでは、OEスキーマのORDERS表に対するSELECT文を、一定のユーザーだけに制限します。

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

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

最初に、チュートリアル用のユーザーを作成する必要があります。

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

    次に例を示します。

    sqlplus bea_dvacctmgr
    Enter password: password
    

    マルチテナント環境で、適切なプラガブル・データベース(PDB)に接続する必要があります。

    次に例を示します。

    sqlplus bea_dvacctmgr@hrpdb
    Enter password: password
    

    利用可能なPDBを検索するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

  2. 次のユーザー・アカウントを作成します。
    GRANT CREATE SESSION TO eabel IDENTIFIED BY password;
    GRANT CREATE SESSION TO ahutton IDENTIFIED BY password;
    GRANT CREATE SESSION TO ldoran IDENTIFIED BY password;
    

    passwordを安全なパスワードに置き換えるには、『Oracle Databaseセキュリティ・ガイド』のガイドラインに従ってください。

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

OEスキーマがこのチュートリアル用に使用されます。

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

    次に例を示します。

    CONNECT bea_dvacctmgr -- Or, CONNECT bea_dvacctmgr@hrpdb
    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: ルール・セットとそのルールの作成

ルール・セットおよびルールは、OE.ORDERS表の順序を変更できるユーザーを制限します。

  1. DV_OWNERまたはDV_ADMINロールおよびSELECT ANY DICTIONARYシステム権限を付与されているユーザーとして、Cloud ControlからOracle Database Vault Administratorにログインします。

    ログイン方法については、Oracle Database Vaultへのログインで説明します。

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

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

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

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

  4. 次の情報を入力します。
    • 名前: Can Modify Ordersと入力します。

    • 説明: Rule set to control who can modify orders in the OE.ORDERS tableと入力します。

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

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

  5. 残りの設定はデフォルトのままにして、「次へ」をクリックして「ルール・セットに関連付けられたルール」ページに移動します。
  6. 「ルールの作成」をクリックして、「ルールの作成」ダイアログ・ボックスで次の設定を入力します。
    • 名前: Check IP Address

    • 式: DVF.F$CLIENT_IP = 'your_IP_address'

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

    このルールでは、デフォルトのファクタClient_IPが使用されます。このファクタが削除されている場合、かわりに次のルール式を使用できます。

    UPPER(SYS_CONTEXT('USERENV','IP_ADDRESS')) = 'your_IP_address'
    
  7. 「OK」をクリックします。
  8. 「ルールの作成」を再度クリックして、「ルールの作成」ダイアログ・ボックスで次の設定を入力します。
    • 名前: Check Session User

    • 式: DVF.F$SESSION_USER IN ('EABEL','AHUTTON')

    このルールでは、デフォルトのファクタSession_Userが使用されます。このファクタが削除または変更されている場合、かわりに次のルール式を使用できます。

    UPPER(SYS_CONTEXT('USERENV','SESSION_USER')) IN ('EABEL','AHUTTON')
    
  9. 「OK」をクリックします。
  10. 「完了」「終了」の順にクリックします。

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

Database Vaultセキュア・アプリケーション・ロールは、ルール・セット条件が満たされた場合に、設定されます。

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

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

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

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

  4. 「ロール」ボックスで、ORDERS_MGMTと入力し、ロールに名前を付けます。
  5. 「ルール・セット」で、「Can Modify Orders」を選択します。
  6. 「OK」をクリックします

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

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

セキュア・アプリケーション・ロールにはSELECT権限を付与する必要があります。

  1. ユーザーOEとしてSQL*Plusに接続します。
    CONNECT OE -- Or, CONNECT OE@hrpdb
    Enter password: password
    
  2. ORDERS_MGMT Database Vaultセキュア・アプリケーション・ロールにSELECT権限を付与します。
    GRANT SELECT ON ORDERS TO ORDERS_MGMT;

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

すべてのコンポーネントが所定の位置にある状態で、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で行ったように、データベース・インスタンスを指定して接続することです。(これがどのように機能するかは、「ファクタの構成」「手順3: Domainファクタ・アイデンティティのClient_IPファクタへのマップ」の手順9を参照)。

  5. ユーザーldoranとして接続します。
    CONNECT ldoran -- Or, CONNECT ldoran@hrpdb
    Enter password: password
    
  6. 次の文を入力します。
    EXEC DBMS_MACSEC_ROLES.SET_ROLE('ORDERS_MGMT');
    SELECT COUNT(*) FROM OE.ORDERS;
    

    ユーザーldoranは有効なユーザーではないため、ORDERS_MGMTロールを有効にすることはできません。したがって、OE.ORDERS表から選択できません。

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

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

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

    ログイン方法については、「Oracle Database Vaultへのログイン」で説明します。

  2. ORDERS_MGMTセキュア・アプリケーション・ロールを削除します。「セキュア・アプリケーション・ロール」ページでORDERS_MGMTセキュア・アプリケーション・ロールを選択して「削除」をクリックし、「確認」ダイアログ・ボックスで「はい」をクリックします。
  3. 「ルール・セット」ページで、「Can Modify Orders」ルール・セットを選択して、「削除」をクリックします。
  4. 「確認」ダイアログ・ボックスで、「はい」を選択してルール・セットを削除します。
  5. 「ルール」ページで、「Check IP Address」ルールと「Check Session User」ルールを選択して、「削除」を選択します。「確認」ボックスで「はい」を選択します。

    複数のルールを選択するには、[Ctrl]キーを押しながらクリックします。

  6. Database Vaultアカウント・マネージャとしてSQL*Plusに接続し、ユーザーを削除します。

    次に例を示します。

    CONNECT bea_dvacctmgr -- Or, CONNECT bea_dvacctmgr@hrpdb
    Enter password: password
    
    DROP USER eabel;
    DROP USER ahutton;
    DROP USER ldoran;
    
  7. 必要がなければ、OEユーザー・アカウントをロックし、無効にします。
    ALTER USER OE ACCOUNT LOCK PASSWORD EXPIRE;

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

システム性能は、Oracle Enterprise Manager Cloud Controlによってチェックできます。

他に使用できるツールには、自動ワークロード・リポジトリ(AWR)とTKPROFがあります。

関連項目:

  • データベース・パフォーマンスの監視方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください

  • 個々のSQL文およびPL/SQL文の実行を監視するには、『Oracle Database SQLチューニング・ガイド』を参照してください

セキュア・アプリケーション・ロールに関連するレポートおよびデータ・ディクショナリ・ビュー

Oracle Database Vaultには、Oracle Database Vaultセキュア・アプリケーション・ロールの分析に使用できるレポートとデータ・ディクショナリ・ビューが用意されています。

表9-1に、Oracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、「Oracle Database Vaultレポート」を参照してください。

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

レポート 説明

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

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

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

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

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

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

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

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

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

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