機械翻訳について

表ハイパーリンクの生成、リスト、無効化およびモニター

生成するステップを示します。表ハイパーリンクをリスト、無効化またはモニターします。

表またはビューの表ハイパーリンクの生成

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

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

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

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

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

  2. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_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',
              inherit_acl            => FALSE,
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    オプションのservice_nameパラメータを使用して、生成された表ハイパーリンクが特定のサービス・レベルの保証およびリソースで処理されるように指定します。 たとえば、service_nameパラメータを使用して、オブジェクトへのアクセスがHIGHサービスにマッピングされるように指定します。

    表のハイパーリンク・データへのアクセスを制限する場合は、オプションのinherit_aclパラメータを使用します。 ACLを継承するには、このパラメータをTRUEに設定します。 ACLの継承がtrueの場合、受信表ハイパーリンク・コンシューマのIPアドレスは、データへのアクセスを許可する前に、プロデューサ・データベースのACLを使用して検証されます。 プロデューサ・データベースにACLが構成されていない場合、inherit_acl値は無視され、ACLチェックなしでデータ・アクセスが許可されます。

    詳細については、「アクセス制御ルール(ACL)を使用したネットワーク・アクセスの構成」「GET_PREAUTHENTICATED_URLプロシージャ」を参照してください。

  3. 結果を確認します。

    この例では、statusに、表ハイパーリンクに関する情報を含む結果が含まれています。

    {
    "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
    }

DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを使用した表ハイパーリンクの生成に関するノート:

  • プライベート・エンドポイントを含むAutonomous Databaseインスタンスに表ハイパーリンクを生成すると、結果にはprivate_preauth_urlという名前がフォームの値とともに含まれます: "https://private-endpoint/adb/p/parurl-token/data"

    プライベート・エンドポイントを含むAutonomous Databaseインスタンスに表ハイパーリンクを生成し、プライベート・エンドポイントが「パブリック・アクセスの許可」を有効にして構成されている場合、結果にはパブリック・エンドポイントのpreauth_urlprivate_preauth_urlの両方が含まれます。

    詳細については、「プライベート・エンドポイントの構成」「パブリック・アクセスが許可されたプライベート・エンドポイントの使用」を参照してください。

  • DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用して、表ハイパーリンクを表示します。 詳細は「リスト表ハイパーリンク」を参照してください。
  • DBMS_DATA_ACCESS.EXTEND_URLを使用して、表ハイパーリンクの存続期間を延長します。 詳細については、「EXTEND_URLプロシージャ」を参照してください。

SELECT文を使用した表ハイパーリンクの生成

SQL問合せ文を使用したデータへのアクセスを提供する表ハイパーリンクを生成するステップを示します。

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

表ハイパーリンクを使用して、任意のSQL問合せ文としてデータにアクセスできるようにするには:

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

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

  2. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行して、表ハイパーリンクを生成します。

    デフォルトのバインド変数値を含めるかどうかに応じて、2つのオプションがあります(select文にバインド変数を含める場合)。

    1. select文を指定し、オプションのdefault_bind_valuesパラメータを使用しないでください。

      たとえば:

      DECLARE
         status CLOB;
         BEGIN
            DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
                sql_statement        => 'SELECT species, height FROM TREE_DATA',
                expiration_count     => 10,
                service_name         => 'HIGH',
                inherit_acl            => FALSE,
                result               => status);
             dbms_output.put_line(status);
          END;
      /
      sql_statement値は、SELECT文である必要があります。 SELECT文では、バインド変数がサポートされています。 select文にバインド変数が含まれている場合は、データにアクセスするときに、生成された表ハイパーリンクに問合せパラメータとしてバインド変数値を追加する必要があります。
    2. select文を指定し、default_bind_valuesパラメータを含めます。

      たとえば:

      DECLARE
         status CLOB;
         BEGIN
            DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
                sql_statement => 'select * FROM TREE_DATA WHERE COUNTY = :countyNAME',
                default_bind_values  => '{"countyNAME" : "First"}',
                expiration_count     => 10,
                service_name         => 'HIGH',
                inherit_acl            => FALSE,
                result               => status);
             dbms_output.put_line(status);
          END;
      /

      sql_statementパラメータは、SELECT文である必要があります。 SELECT文では、バインド変数がサポートされています。

      default_bind_valuesパラメータは、sql_statement内の1つ以上のバインド変数の値を指定します。 default_bind_valuesDBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLに含まれている場合:

      • default_bind_valuesで指定されたバインド変数の場合は、データにアクセスするときにバインド変数の値を省略できます。 データにアクセスする際に、表ハイパーリンクURLに問合せパラメータとして上書きが指定されていない場合、指定したバインド変数にデフォルト値が使用されます。

      • データにアクセスするときに表のハイパーリンクURLにバインド変数値を問合せパラメータとして追加すると、default_bind_valuesで指定されたデフォルトのバインド変数値をオーバーライドできます。

      • select文にバインド変数が含まれていて、バインド変数のデフォルト値がdefault_bind_valuesパラメータに指定されていない場合は、データにアクセスするときに、生成された表のハイパーリンクURLに問合せパラメータとしてバインド変数値を追加する必要があります。

    バインド変数のサポートは、NUMBERおよびVARCHAR2列タイプで使用できます。

    これらの例では、expiration_countパラメータは、表ハイパーリンクが期限切れになり、10回使用すると無効化されるように指定します。 expiration_timeが指定されていない場合、有効期限はデフォルト値90日に設定されます。

    オプションのservice_nameパラメータを使用して、生成された表ハイパーリンクが特定のサービス・レベルの保証およびリソースで処理されるように指定します。 たとえば、service_nameパラメータを使用して、SQL文へのアクセスがHIGHサービスにマップされるように指定します。

    表のハイパーリンク・データへのアクセスを制限する場合は、オプションのinherit_aclパラメータを使用します。 ACLを継承するには、このパラメータをTRUEに設定します。 ACLの継承がtrueの場合、受信表ハイパーリンク・コンシューマのIPアドレスは、データへのアクセスを許可する前に、プロデューサ・データベースのACLを使用して検証されます。 プロデューサ・データベースにACLが構成されていない場合、inherit_acl値は無視され、ACLチェックなしでデータ・アクセスが許可されます。

    詳細については、「アクセス制御ルール(ACL)を使用したネットワーク・アクセスの構成」「GET_PREAUTHENTICATED_URLプロシージャ」を参照してください。

  3. 結果を確認します。

    この例では、statusに表ハイパーリンクを含む結果が含まれています。

    {
    "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}
    }

DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを使用した表ハイパーリンクの生成に関するノート:

  • プライベート・エンドポイントを含むAutonomous Databaseインスタンスに表ハイパーリンクを生成すると、結果にはprivate_preauth_urlという名前がフォームの値とともに含まれます: "https://private-endpoint/adb/p/parurl-token/data"

    プライベート・エンドポイントを含むAutonomous Databaseインスタンスに表ハイパーリンクを生成し、プライベート・エンドポイントが「パブリック・アクセスの許可」を有効にして構成されている場合、結果にはパブリック・エンドポイントのpreauth_urlprivate_preauth_urlの両方が含まれます。

    詳細については、「プライベート・エンドポイントの構成」「パブリック・アクセスが許可されたプライベート・エンドポイントの使用」を参照してください。

  • DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用して、表ハイパーリンクを表示します。 詳細は「リスト表ハイパーリンク」を参照してください。
  • DBMS_DATA_ACCESS.EXTEND_URLを使用して、表ハイパーリンクの存続期間を延長します。 詳細については、「EXTEND_URLプロシージャ」を参照してください。

列に指定されたUI機能を使用した表ハイパーリンクの生成

表ハイパーリンクを生成する場合は、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配列で指定されます。

表ハイパーリンクの表ビュー列レベルのUI機能を指定するには:

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

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

    詳細については、「表またはビューの表ハイパーリンクの生成」「SELECT文を使用した表ハイパーリンクの生成」を参照してください。

  2. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_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パラメータは、表ハイパーリンク機能を定義する列のJSON配列のリストを含むJSONです。 このパラメータを使用して、1つ以上のオプションの列を指定: order_by_columns, filter_columns, default_color_columnsまたはgroup_by_columns

    たとえば:

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

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

  3. 結果を確認します。

    この例では、statusに、表ハイパーリンクに関する情報を含む結果が含まれています。

    {
    "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
    }

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

  4. DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_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パラメータは、表ハイパーリンク機能を定義する列のJSON配列のリストを含むJSONです。 このパラメータを使用して、1つ以上のオプションの列を指定: order_by_columns, filter_columns, default_color_columnsまたはgroup_by_columns

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

  5. 結果を確認します。

    この例では、statusに、表ハイパーリンクに関する情報を含む結果が含まれています。

    {
    "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
    }

    列の順序の使用例については、「列のソートによる表形式での表ハイパーリンクの使用」を参照してください。

次のこともできます。

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

リスト表ハイパーリンク

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

DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを実行して、アクティブな表ハイパーリンクをリストします。 たとえば:

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

この例は、次の出力を示しています:

[{"id":"pT36lYHFGA4s3UXSNBCRO13v3D4_example1",
"created_by":"SCOTT",
"service_name":"HIGH",
"expiration_time":"2025-07-28T16:38:02.723Z",
"expiration_count":10,
"access_count":0,
"created":"2025-04-29T16:38:02.977Z",
"inherit_acl":true,
"is_group_url":false,
"group_ids":[null],
"sql_statement":"select * FROM TREE_DATA WHERE COUNTY = :county"}]

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

ノート:

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

表ハイパーリンクの無効化

適切な権限を持つユーザーは、いつでも表ハイパーリンクを無効にできます。

表ハイパーリンクを無効にするには、表ハイパーリンクidが必要です。 DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用して、各表ハイパーリンクおよび関連するidをリストします。

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プロシージャ」を参照してください。

表ハイパーリンク・データを保護するための仮想プライベート・データベース・ポリシーの定義

表ハイパーリンクと共有するデータに対してOracle Virtual Private Database (VPD)ポリシーを定義することで、特定の表ハイパーリンクに対してデータのサブセット(行)のみが表示されるように、ファイングレイン・アクセス制御を提供できます。

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

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

たとえば:

  1. 表ハイパーリンクの生成時に指定したapplication_user_id値を取得します。
  2. 表ハイパーリンクを生成したデータベースで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を参照してください。

表ハイパーリンク使用状況のモニターおよび表示

Autonomous Databaseは、表ハイパーリンクの使用状況をモニターできるビューを提供します。

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

これらのビューでは、経過時間、CPU時間、追加情報など、表ハイパーリンクの使用状況が追跡されます。