PAR URLの生成、リスト、無効化およびモニター

生成するステップを示します。PAR URLをリスト、無効化またはモニターします。

表またはビューのPAR URLの生成

スキーマ・オブジェクト(表またはビュー)のアクセスを共有するために使用できるPAR URLを生成するステップを示します。

PAR URLを実行すると、PAR URLを生成するデータベース・ユーザーに付与された権限が使用されます。PAR URLを生成するユーザーは、データへのアクセスを提供するために必要な最小限の権限を持っている必要があります。セキュリティを維持するために、OracleではADMINユーザーとしてDBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行しないことをお薦めします。

PAR URLを使用してデータへのアクセスをスキーマ・オブジェクト(表またはビュー)として提供するには:

  1. 共有する表またはビューを特定します。

    使用可能にするデータに制限がある場合は、PAR URLの生成時にapplication_user_idパラメータを使用し、公開するデータを制限するVPDポリシーを作成します。詳細は、PAR URLデータを保護するための仮想プライベート・データベース・ポリシーの定義を参照してください。

  2. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行してPAR URLを生成します。
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name         => 'HIGH',
              result                => status);
           dbms_output.put_line(status);
        END;
    /

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

  3. 結果を確認します。

    この例では、statusにPAR URLに関する情報を含む結果が含まれています。

    {
    "status":"SUCCESS","id":"wPY0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qH",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/-pPLdrbUTcLUrZLExyzxyzabc_1w/data",
    "expiration_ts":"2024-10-22T22:37:18.805Z",
    "expiration_count":null
    }
    また、次のこともできます:
    • PAR URLを表示するには、DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用します。詳細は、PAR URLのリストを参照してください。
    • PAR URLの存続期間を延長するには、DBMS_DATA_ACCESS.EXTEND_URLを使用します。詳細は、EXTEND_URLプロシージャを参照してください。
    • 異なるサービス・レベルの保証とリソースでサービスされるPAR URLを生成します。たとえば、オブジェクトまたはSQL文へのアクセスはサービスHIGHまたはMEDIUMにマップできますが、別のオブジェクトまたはSQL文へのアクセスはLOWサービスにマップできます。詳細は、GET_PREAUTHENTICATED_URLプロシージャを参照してください。

SELECT文を使用したPAR URLの生成

SQL問合せ文を使用してデータへのアクセスを提供するPAR URLを生成するステップを示します。

PAR URLを実行すると、PAR URLを生成するデータベース・ユーザーに付与された権限が使用されます。PAR URLを生成するユーザーは、データへのアクセスを提供するために必要な最小限の権限を持っている必要があります。セキュリティを維持するために、OracleではADMINユーザーとしてDBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行しないことをお薦めします。

PAR URLを使用して任意のSQL問合せ文としてデータにアクセスできるようにするには:

  1. 共有する情報を含む表またはビュー、および使用する表またはビューのSELECT文を特定します。

    使用可能にするデータに制限がある場合は、PAR URLの生成時にapplication_user_idパラメータを使用し、公開するデータを制限するVPDポリシーを作成します。詳細は、PAR URLデータを保護するための仮想プライベート・データベース・ポリシーの定義を参照してください。

  2. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行してPAR URLを生成します。
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              sql_statement        => 'SELECT species, height FROM TREE_DATA',
              expiration_count     => 10,
              service_name         => 'HIGH',
              result               => status);
           dbms_output.put_line(status);
        END;
    /

    sql_statementパラメータ値は、SELECT文である必要があります。SELECT文では、バインド変数がサポートされています。バインド変数が選択文に含まれている場合、データにアクセスするときに、生成されたPAR URLにバインド変数値を問合せパラメータとして追加する必要があります。バインド変数のサポートは、NUMBERおよびVARCHAR2列タイプで使用できます。

    このサンプルのexpiration_countパラメータは、PAR URLが期限切れになり、10回の使用後に無効になるように指定します。expiration_timeを指定しない場合、有効期限はデフォルト値90日に設定されます。

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

  3. 結果を確認します。

    この例では、statusにPAR URLを含む結果が含まれています。

    {
    "status":"SUCCESS","id":"LCvtpALqZgcHGL4Lxyzabcxyza-QVEFngwh1UGhg8jjuFAHOQJLGFi",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/RIabc_xyz7Kw8ZLyZ2JzCXZQXpc/data",
    "expiration_ts":"2025-01-20T16:42:49.527Z",
    "expiration_count":10}
    }
    また、次のこともできます:
    • PAR URLを表示するには、DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用します。詳細は、PAR URLのリストを参照してください。
    • PAR URLの存続期間を延長するには、DBMS_DATA_ACCESS.EXTEND_URLを使用します。詳細は、EXTEND_URLプロシージャを参照してください。
    • 異なるサービス・レベルの保証とリソースでサービスされるPAR URLを生成します。たとえば、オブジェクトまたはSQL文へのアクセスはサービスHIGHまたはMEDIUMにマップできますが、別のオブジェクトまたはSQL文へのアクセスはLOWサービスにマップできます。詳細は、GET_PREAUTHENTICATED_URLプロシージャを参照してください。

列に指定されたUI機能を使用したPAR URLの生成

PAR URLを生成するときに、column_listsパラメータを使用して、指定した列のUI機能を指定できます。

column_listsパラメータは、列ごとにオプションを指定するJSON値です。column_listsでサポートされている値は、次の1つ以上です。

column_lists値 説明
order_by_columns

ソートをサポートする列を指定します。列はJSON配列で指定されます。

filter_columns

フィルタリングをサポートする列を指定します。列はJSON配列で指定されます。

default_color_columns

指定した列にデフォルトの色のみを使用することを指定します。列はJSON配列で指定されます。

group_by_columns

指定した列に対してグループ化基準を許可することを指定します(指定した列をグループ化してデータを表示することは許可されます)。列はJSON配列で指定されます。

PAR URLの表ビュー列レベルのUI機能を指定するには:

  1. 共有する表またはビューまたはSELECT文を指定します。

    この例では、column_listsパラメータを表とともに使用してPAR URLを生成します。このパラメータは、SELECT文を使用してPAR URLを生成する場合にも使用できます。

    詳細は、表またはビューのPAR URLの生成およびSELECT文を使用したPAR URLの生成を参照してください。

  2. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行してPAR URLを生成し、ブラウザで表示するための列別グループ・オプションを指定します:

    たとえば、列によるグループ化を指定するには:

    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name          => 'HIGH',
              column_lists          => '{ "group_by_columns": ["COUNTY", "SPECIES"] }',
              result                => status);
    
           dbms_output.put_line(status);
        END;
    /

    column_listsパラメータは、PAR-URL機能を定義する列のJSON配列のリストを含むJSONです。このパラメータを使用して、1つ以上のオプション(order_by_columnsfilter_columnsdefault_color_columnsまたはgroup_by_columns)の列を指定します。

    たとえば:

    column_lists => '{ 
            "group_by_columns":["COUNTY", "SPECIES"], 
            "order_by_columns":["COUNTY"] }'

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

  3. 結果を確認します。

    この例では、statusにPAR URLに関する情報を含む結果が含まれています。

    {
    "status":"SUCCESS",
    "id":"LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV1989GmgRInaBYTw",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Rt_yRfTxbcabc_xyzWlANP5RmM9Y/data",
    "expiration_ts":"2024-10-25T02:30:39.810Z",
    "expiration_count":null
    }

    列別グループの使用例については、「表形式のグループ化オプションを使用したデータへのアクセスにPAR URLを使用」を参照してください。

  4. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行してPAR URLを生成し、UIフォーマット・オプションを指定します。

    たとえば、ソート可能な列を設定するには、column_lists order_by_columnsオプションを使用します。

    DECLARE
       status CLOB;
       column_lists CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name          => 'HIGH',
              column_lists          => '{ "order_by_columns": ["COUNTY", "SPECIES"] }',
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    column_listsパラメータは、PAR-URL機能を定義する列のJSON配列のリストを含むJSONです。このパラメータを使用して、1つ以上のオプション(order_by_columnsfilter_columnsdefault_color_columnsまたはgroup_by_columns)の列を指定します。

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

  5. 結果を確認します。

    この例では、statusにPAR URLに関する情報を含む結果が含まれています。

    {
    "status":"SUCCESS",
    "id":"LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV1989GmgRInaBYTw",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Rt_yRfTxbcabc_xyzk3EmM9Y/data",
    "expiration_ts":"2024-10-25T02:30:39.810Z",
    "expiration_count":null
    }

    列の順序の使用例については、列ソートでの表形式でのPAR URLの使用を参照してください。

また、次のこともできます:

  • PAR URLを表示するには、DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用します。詳細は、PAR URLのリストを参照してください。
  • PAR URLの存続期間を延長するには、DBMS_DATA_ACCESS.EXTEND_URLを使用します。詳細は、EXTEND_URLプロシージャを参照してください。
  • 異なるサービス・レベルの保証とリソースでサービスされるPAR URLを生成します。たとえば、オブジェクトまたはSQL文へのアクセスはサービスHIGHまたはMEDIUMにマップできますが、別のオブジェクトまたはSQL文へのアクセスはLOWサービスにマップできます。詳細は、GET_PREAUTHENTICATED_URLプロシージャを参照してください。

PAR URLのリスト

Autonomous Databaseインスタンスで生成したアクティブなPAR URLをリストでき、ADMINユーザーはすべてのアクティブなPAR URLをリストできます。

DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを実行して、アクティブなPAR URLをリストします。たとえば:

DECLARE    
    result CLOB;
    BEGIN
       result := DBMS_DATA_ACCESS.LIST_ACTIVE_URLS;           
       dbms_output.put_line(result);
    END;
/

この例では、次の出力が表示されます:

[{
"id":"lsB5yJzrG2E-o_Diwf7O86p1TphhHs3abcdefgoPuK",
"schema_name":"ADMIN",
"schema_object_name":"TREE_DATA",
"created_by":"ADMIN",
"service_name":"HIGH",
"expiration_time":"2024-10-31T03:02:31.996Z",
"access_count":0,
"created":"2024-10-30T21:02:32.041Z",
"column_lists":{"group_by_columns":["COUNTY","SPECIES"]}
}]

詳細は、LIST_ACTIVE_URLSファンクションを参照してください。

ノート

DBMS_DATA_ACCESS.LIST_ACTIVE_URLSの動作は、実行者によって異なります。実行者がADMINまたはPDB_DBAロールを持つユーザーの場合、このファンクションは、PAR URLを生成したユーザーに関係なく、すべてのアクティブなPAR URLをリストします。実行者がADMINユーザーではなく、PDB_DBAロールを持つユーザーでない場合、リストには、実行者が生成したアクティブなPAR URLのみが含まれます。

PAR URLの無効化

適切な権限を持つユーザーは、いつでもPAR URLを無効にできます。

PAR URLを無効にするには、PAR URL idが必要です。DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用して、各PAR URLおよび関連するidをリストします。

PAR URLを無効にするには、DBMS_DATA_ACCESS.INVALIDATE_URLを使用します。たとえば:

DECLARE
    status CLOB;
    BEGIN
       DBMS_DATA_ACCESS.INVALIDATE_URL(
        id => 'Vd1Px7QWASdqDbnndiuwTAyyEstv82PCHqS_example',
        result => status);           
       dbms_output.put_line(status);
    END;
/

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

PAR URLデータを保護するための仮想プライベート・データベース・ポリシーの定義

PAR URLと共有するデータに対してOracle Virtual Private Database (VPD)ポリシーを定義することで、特定のPAR URLに対してデータのサブセット(行)のみが表示されるように、きめ細かいアクセス制御を提供できます。

Oracle Virtual Private Database (VPD)は、同じデータ・セットにフィルタを適用することで、ユーザーおよびアプリケーションの行レベルでデータ・アクセスを動的に制御できるセキュリティ機能です。PAR URLにアクセスすると、PAR URLの生成時に指定されたapplication_user_idの値は、sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY')を介して使用できます。このアプリケーション・コンテキストの値を使用するVPDポリシーを定義して、アプリケーション・ユーザーに表示されるデータ、行を制限できます。

PAR URLを使用してデータを読み取るためのアクセス権を付与されたユーザーは、データ(表、ビューまたはselect文で提供されるデータ)にアクセスして使用できます。PAR URLを生成したデータベースでVPDポリシーを定義することで、SYS_CONTEXTルールのapplication_user_id値を使用して、より詳細な制御を提供できます。PAR URLを使用してデータを使用できる例を考えてみます。一部のデータへのアクセスを制限する場合は、VPDポリシーを追加できます。

たとえば:

  1. PAR URLの生成時に指定したapplication_user_id値を取得します。
  2. PAR URLを生成したデータベースでVPDポリシーを作成します。
    CREATE OR REPLACE FUNCTION limit_sal (v_schema IN VARCHAR2, v_objname IN VARCHAR2)
      RETURN VARCHAR2 authid current_user AS
    BEGIN
         RETURN 'employee_id = SYS_CONTEXT(''DATA_ACCESS_CONTEXT$'', ''USER_IDENTITY'')';
    END;
    

    詳細は、DBMS_RLSを参照してください。

  3. VPDポリシーを登録します。
    BEGIN
       DBMS_RLS.ADD_POLICY( 
            object_schema        => 'HR',
            object_name          => 'EMPLOYEE',
            policy_name          => 'POL',
            policy_function      => 'LIMIT_SAL');
    END;
    /

    詳細は、DBMS_RLSを参照してください。

PAR URL使用状況の監視および表示

Autonomous Databaseには、PAR URLの使用状況をモニターできるビューが用意されています。

ビュー 説明
V$DATA_ACCESS_URL_STATSおよびGV$DATA_ACCESS_URL_STATSビュー

これらのビューは、経過時間、CPU時間、追加情報など、PAR URLの使用状況を追跡します。