Autonomous Databaseでの読取り専用データ・アクセスに対する事前認証済リクエストURLの使用

Autonomous Database上のデータの事前認証済リクエスト(PAR) URLを生成および管理できます。

PAR URLを使用すると、データにアクセスするためのPAR URL以外の追加情報を指定することなく、データベースからデータを簡単に取得できます。ユーザーは、ブラウザでPAR URLを指定するか、RESTクライアントを使用して、データベースによって強制されるセキュリティ制御に従ってデータにアクセスできます。ユーザーは、PAR URLに問合せパラメータを追加して、ブラウザから取得したデータを表形式で表示できます。

Autonomous Databaseでの事前認証済リクエスト(PAR) URLについて

PAR URLは、事前認証済リクエスト(PAR) URLの生成方法に応じて、表またはビューのデータ、またはSQL問合せの実行によるデータへのアクセスを提供します。

PAR URLを生成する際、有効期限として(たとえば、PAR URLを120分後に期限切れにするように設定したり、有効期限として(たとえば、PAR URLが10回使用された後にPAR URLが期限切れに)指定します。

PAR URLには次のものがあります。

  • パブリック・アクセス: PAR URLを使用すると、パブリック・インターネット上のデータ受信者は、データがプライベート・サブネットのAutonomous Databaseインスタンス上にあるときにデータにアクセスできます。

  • 有効期限: データ・プロバイダは、PAR URLの有効期限を指定します。つまり、PAR URLの有効期限が切れるまでの期間に制限されます(最大90日間)。

  • 有効期限使用数の制限: データ・プロバイダは、受信者がPAR URLを使用してデータにアクセスできる回数に関する制限を指定できます。

  • エンドポイントの透過性: データ・プロバイダは、PAR URLに表示されないようにAutonomous Database名を非表示にできます。

PAR URLのユースケース

PAR URLの生成および提供では、次のユースケースがサポートされます。

使用例 説明

組織コラボレーション内

PAR URLは、緊急データ・アクセスに使用できます。クリティカルなインシデント調査中など、迅速な対応が必要な状況では、新しいデータベース・アカウントの作成や既存の権限の変更を必要とせずに、特定のデータへの即時および一時的なアクセスを許可するPAR URLを指定します。

BB(Business to Business)アプリケーション

ビジネス・パートナはデータに簡単にアクセスできます。PAR URLを使用すると、ビジネス・パートナにデータやレポートに簡単にアクセスできる方法を提供できます。これにより、手動のレポート生成や電子メール配信が不要になります。

サードパーティの監査とレビュー

外部監査者またはレビュー担当者が特定のデータへのアクセスを期間限定する必要がある場合、データベースの全体的なセキュリティを損なうことなく、PAR URLによって必要なアクセス権を付与できます。

製品としてのデータ(デジタル・コマース)

ベンダーは、PAR URLを使用して、購入したコンテンツやデータへのアクセスを限定的または1回のみ許可できます。アクセスすると、URLは期限切れになり、製品の排他性が保護され、効率的で安全な配信が保証されます。

PAR URLのセキュリティ・ベスト・プラクティス

PAR URLを生成および使用するためのベスト・プラクティスを次に示します。

  • 短い有効期限の設定: PAR URLは、必要な最小時間のみ有効である必要があります。有効期間が短いほど、PAR URLが危険にさらされるリスクは低くなります。

  • PAR無効化: PAR URLが不要になったらすぐに無効化します。

  • 適切な権限の使用: PAR URLは、PAR URLを生成するデータベース・ユーザーに付与された権限を使用して実行されます。PAR URLを生成するユーザーは、データへのアクセスを提供するために必要な最小限の権限を持っている必要があります。

  • コンテンツ・セキュリティ: 意図しない動的データを共有するリスクを軽減するには:

    • PAR URLで共有するデータの上にビューを作成し、ビュー定義が最新であることを監視します。

    • 必要に応じて、PAR URLの生成時にVPDポリシーを作成します。VPDポリシーを使用して、PAR URLユーザーに表示される行を制限できます。

  • ロード・モニタリング: PerfHubおよびSQLモニタリングを使用してPAR URL問合せロードをモニターします。

    コンピュート自動スケーリングを有効にし、データ・セット・サイズおよびPAR URL問合せロードに対してCPU数が適切にサイズ設定されていることを確認します。

表またはビューの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":"Vd1Px7QWASdqDbnndiuwTA_example",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Vdtv..._example_wxd0PN/data",
    "expiration_ts":"2023-12-04T23:51:35.334Z"
    }
    また、次のこともできます:
    • 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":"xA6iRGexmapleARc_zz",
       "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/XA2_example_m4s/data",
       "expiration_ts":"2024-05-16T17:01:08.226Z",
       "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プロシージャを参照してください。

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をリストでき、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;
/

詳細は、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データは、JSON形式で取得および返され、ページ区切りされます。

データには、ブラウザでPAR URLを使用するか、任意のRESTクライアントを使用してアクセスできます。返されるデータは、一度に最大100レコードにアクセスできるようにページ区切りで、レスポンスの合計データ・サイズは1MBに制限されます。limit問合せパラメータを指定して、フェッチされるレコード数を制限できます。PAR URL認証が失敗した場合、またはリクエストされたPAR URLの有効期限が切れている場合、PAR URLデータの取得はブロックされます。

人間が読みやすくするために、ブラウザからアクセスしたときに返されるデータを表形式で表示でき、問合せパラメータがPAR URLに追加されます。手順については、PAR URLを使用した表形式のデータおよび表示へのアクセスを参照してください。

たとえば、PAR URLを使用します。

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data

データに複数のページが含まれる場合、PAR URLレスポンスには、前または次のページのリンクが含まれます。これにより、データのフェッチ中にどちらの方向にもナビゲートできます。JSONには、現在のページを指すselfリンクと、フェッチできるデータがさらにあるかどうかを示すhasMore属性も含まれています。

レスポンス形式は次のとおりです。

{
    "items": [],                 <-- Array of records from database
    "hasMore": true OR false,    <-- Indicates if there are more records to fetch or not
    "limit": Number,             <-- Indicates number of records in the page. Maximum allowed number is 100.
    "offset": Number,            <-- Offset indicating the start of the current page
    "count": Number,             <-- Count of records in the current page
    "links": [
        {
            "rel": "self",
            "href": "{Link to preauth url for the current page}"
        },
        {
            "rel": "previous",
            "href": "{Link to preauth url for the previous page}"
        },
        {
            "rel": "next",
            "href": "{Link to preauth url for the next page}"
        }
    ]
}

たとえば、PAR URLからのサンプル・レスポンスを次に示します(わかりやすくするために改行が追加されています)。

{"items":[
{"COUNTY":"Main","SPECIES":"Alder","HEIGHT":45},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51},{"COUNTY":"Main","SPECIES":"Hemlock","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Douglas-fir","HEIGHT":34},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":12},
{"COUNTY":"Main","SPECIES":"Cedar","HEIGHT":21},{"COUNTY":"First","SPECIES":"Douglas-fir","HEIGHT":10},
{"COUNTY":"Main","SPECIES":"Yew","HEIGHT":11},{"COUNTY":"First","SPECIES":"Willow","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Pine","HEIGHT":29},{"COUNTY":"First","SPECIES":"Pine","HEIGHT":16},
{"COUNTY":"First","SPECIES":"Spruce","HEIGHT":6},{"COUNTY":"Main","SPECIES":"Spruce","HEIGHT":8},
{"COUNTY":"First","SPECIES":"Hawthorn","HEIGHT":19},{"COUNTY":"First","SPECIES":"Maple","HEIGHT":16},
{"COUNTY":"Main","SPECIES":"Aspen","HEIGHT":35},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":27},
{"COUNTY":"First","SPECIES":"Cherry","HEIGHT":20},{"COUNTY":"Main","SPECIES":"Pine","HEIGHT":37},
{"COUNTY":"Main","SPECIES":"Redwood","HEIGHT":78},{"COUNTY":"Main","SPECIES":"Alder","HEIGHT":45},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51},{"COUNTY":"Main","SPECIES":"Hemlock","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Douglas-fir","HEIGHT":34},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":12},
{"COUNTY":"Main","SPECIES":"Cedar","HEIGHT":21},{"COUNTY":"First","SPECIES":"Douglas-fir","HEIGHT":10},
{"COUNTY":"Main","SPECIES":"Redwood","HEIGHT":78}],

"hasMore":false,
"limit":100,
"offset":0,
"count":30,
"links":
[
{"rel":"self",
"href":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data"}
]}

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

たとえば、次のSQL文を使用してPAR URLが生成されます。

sql_statement = 'SELECT * FROM TREE_DATA WHERE COUNTY = :COUNTY'

生成されたPAR URLを、データにアクセスするための追加問合せパラメータとしてバインド変数値とともに使用します。

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data?COUNTY=MAIN

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

PAR URLを使用したデータへのアクセスおよび表形式での表示

事前認証済リクエスト(PAR) URLデータは、ブラウザから表形式で取得および表示されます。

ブラウザでPAR URLを使用してデータにアクセスし、返されるデータをデータベース表形式で表示できます。表形式では、セル値のスクロール、ソート、フィルタリングおよび色付けがサポートされています。表形式でデータを返すには、?view=table問合せパラメータを任意のPAR URLに追加します。
たとえば、ブラウザから、?view=tableが付加されたPAR URLを使用します。
https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table

?view=tableが追加されたPAR URLへのサンプル・レスポンスを次に示します:

par_url_ui_default.pngの説明が続きます

列データのソート

列は、昇順または降順にソートできます。これを行うには、列ドロップダウン矢印をクリックし、「昇順ソート」または「降順ソート」を選択します。

次に、HEIGHT列が降順にソートされたサンプル表のスクリーンショットを示します。

par_url_ui_descending.pngの説明が続きます

列データのフィルタ処理

列値をフィルタできます。列をフィルタするには、列ドロップダウン矢印をクリックし、入力テキスト・ボックスにフィルタ・テキストを入力して、[Enter]をクリックします。

スプルース・ツリーのデータのみを表示するようにフィルタされたSPECIES列を含むサンプル表のスクリーンショットを次に示します。

par_url_ui_filtered.pngの説明が続きます

「入力」をクリックすると、スプルース・ツリーの行のみが表示されます:par_url_ui_spruce.pngの説明が続きます

カラムデータの着色

デフォルトでは、どの列も色付けされていません。カラム値に基づいて、事前に設定された色で色を付けるカラムを選択できます。色を付ける列を指定するには、colored_column_names問合せパラメータとして列名を指定します。

たとえば、column1およびcolumn2に色を付けるには:
https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table&colored_column_names=column1,column2

次に、PAR URLのサンプルと結果表の一部のスクリーンショットを示します。結果の表には、COUNTY列およびSPECIES列の色付きデータがあります。「SPECIES」列は、アルファベットの昇順でソートされます。

https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table&colored_column_names=COUNTY,SPECIES

par_url_ui_colored.pngの説明が続きます

カラムデータタイプの着色

colored_column_types問合せパラメータとしてデータ型を指定することで、色付けする特定の列データ型を選択することもできます。

このパラメータでは、すべての文字列(VARCHAR)列を色付けするcolored_column_types=VARCHARと、データ型を色付けしないcolored_column_types=NONEがサポートされます。

たとえば、次のとおりです。

https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table&colored_column_types=VARCHAR

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使用状況の監視および表示

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

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

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

PAR URLを使用したデータの共有に関するノート

Autonomous DatabaseでのPAR URLの使用に関するノートを提供します。

  • sql_statementパラメータを指定してDBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLプロシージャを実行する場合、SQL文はSELECT文である必要があります。

  • Autonomous Databaseインスタンスには、128のアクティブPAR URLの制限があります。