表のハイパーリンクの作成、管理および監視
表ハイパーリンクを作成、管理およびモニターするステップを示します。
表またはビューの表ハイパーリンクの作成
スキーマ・オブジェクト(表またはビュー)のアクセスを共有するために使用できる表ハイパーリンクを作成するステップを示します。
表ハイパーリンクを実行すると、表ハイパーリンクを生成するデータベース・ユーザーに付与された権限が使用されます。表ハイパーリンクを生成するユーザーには、データへのアクセスを提供するために必要な最小限の権限が必要です。セキュリティを維持するために、OracleではADMINユーザーとしてDBMS_DATA_ACCESS.CREATE_URLを実行しないことをお薦めします。
表のハイパーリンクを使用して、スキーマ・オブジェクト(表またはビュー)としてデータにアクセスできるようにするには:
-
共有する表またはビューを特定します。
使用可能にするデータに制限がある場合は、表ハイパーリンクの生成時に
application_user_idパラメータを使用し、公開するデータを制限するVPDポリシーを作成します。詳細は、「表ハイパーリンク・データを保護するための仮想プライベート・データベース・ポリシーの定義」を参照してください。 -
DBMS_DATA_ACCESS.CREATE_URLを実行して、表ハイパーリンクを生成します。DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'SCOTT', schema_object_name => 'TREE_DATA', expiration_minutes => 360, result => status); dbms_output.put_line(status); END; /expiration_minutesパラメータは、表のハイパーリンクが期限切れになり、360分後に無効になるように指定します。詳細は、CREATE_URLプロシージャを参照してください。
-
結果を確認します。
この例の
statusには、表ハイパーリンクに関する情報を含む結果が含まれています。{ "status" : "SUCCESS", "id" : "wPY0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qHd-m8bqJi-QCahwfwGesG", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Y0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qHhVJUCWm5OEG3fNq2m0HCjaMt8s/data", "expiration_ts" : "2025-08-12T04:30:41.484Z" }
SELECT文を使用した表ハイパーリンクの作成
SQL問合せ文を使用したデータへのアクセスを提供する表ハイパーリンクを作成するステップを示します。
表ハイパーリンクを実行すると、表ハイパーリンクを生成するデータベース・ユーザーに付与された権限が使用されます。表ハイパーリンクを生成するユーザーには、データへのアクセスを提供するために必要な最小限の権限が必要です。セキュリティを維持するために、OracleではADMINユーザーとしてDBMS_DATA_ACCESS.CREATE_URLを実行しないことをお薦めします。
表のハイパーリンクを使用して、任意のSQL問合せ文としてデータにアクセスできるようにするには:
-
共有する情報を含む表またはビューと、使用する表またはビューに対する
SELECT文を特定します。使用可能にするデータに制限がある場合は、表ハイパーリンクの生成時に
application_user_idパラメータを使用し、公開するデータを制限するVPDポリシーを作成します。詳細は、「表ハイパーリンク・データを保護するための仮想プライベート・データベース・ポリシーの定義」を参照してください。 -
DBMS_DATA_ACCESS.CREATE_URLを実行して、表ハイパーリンクを生成します。デフォルトのバインド変数値を含めるかどうかに応じて、2つのオプションがあります(select文にバインド変数を含める場合)。
-
select文を指定し、オプションの
default_bind_valuesパラメータは使用しないでください。たとえば:
DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( sql_statement => 'SELECT species, height FROM TREE_DATA', expiration_minutes => 360, result => status); dbms_output.put_line(status); END; /sql_statement値はSELECT文である必要があります。SELECT文では、バインド変数がサポートされています。SELECT文にバインド変数が含まれている場合は、データにアクセスするときに、生成された表ハイパーリンクに問合せパラメータとしてバインド変数値を追加する必要があります。 -
SELECT文を指定し、
default_bind_valuesパラメータを含めます。たとえば:
DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( sql_statement => 'select * FROM TREE_DATA WHERE COUNTY = :countyNAME', default_bind_values => '{"countyNAME" : "First"}', expiration_minutes => 360, result => status); dbms_output.put_line(status); END; /sql_statementパラメータは、SELECT文である必要があります。SELECT文では、バインド変数がサポートされています。default_bind_valuesパラメータは、sql_statement内の1つ以上のバインド変数の値を指定します。default_bind_valuesがDBMS_DATA_ACCESS.CREATE_URLに含まれている場合:-
default_bind_valuesで指定されたバインド変数の場合、データにアクセスするときにバインド変数値を省略できます。データにアクセスするときに、表ハイパーリンクURLに問合せパラメータとしてオーバーライドが指定されていない場合、指定したバインド変数にデフォルト値が使用されます。 -
データにアクセスするときに、表ハイパーリンクURLにバインド変数値を問合せパラメータとして追加すると、
default_bind_valuesで指定されたデフォルトのバインド変数値をオーバーライドできます。 -
バインド変数がSELECT文に含まれており、バインド変数のデフォルト値が
default_bind_valuesパラメータで指定されていない場合は、データにアクセスするときに、生成された表のハイパーリンクURLにバインド変数値を問合せパラメータとして追加する必要があります。
-
バインド変数のサポートは、
NUMBERおよびVARCHAR2列タイプで使用できます。これらの例では、
expiration_minutesパラメータによって、表のハイパーリンクが期限切れになり、360分後に無効化されることが指定されています。 -
-
結果を確認します。
この例では、
statusに表ハイパーリンクを含む結果が含まれています。{ "status" : "SUCCESS", "id" : "LCvtpALqZgcHGL4Lxyzabcxyza-QVEFngwh1UGhg8jjuFAHOQJLGFi", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/GL4Lxyzabcxyza-QVEFngwh1UGhg8n4GfPaHCgdGoLJl-V1tTUxMDgdQ/data", "expiration_ts" : "2025-08-12T04:33:40.162Z" }
列に指定されている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機能を指定するには:
-
共有する表、ビューまたはSELECT文を識別します。
この例では、表とともに
column_listsパラメータを使用して表ハイパーリンクを生成します。このパラメータは、SELECT文を使用して表ハイパーリンクを生成する場合にも使用できます。詳細は、表またはビューの表ハイパーリンクの作成およびSELECT文を使用した表ハイパーリンクの作成を参照してください。
-
DBMS_DATA_ACCESS.CREATE_URLを実行して表ハイパーリンクを生成し、ブラウザで表示するための「グループ化基準列」オプションを指定します。たとえば、グループ化基準の列を指定するには:
DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'SCOTT', schema_object_name => 'TREE_DATA', expiration_minutes => 360, 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"] }'詳細は、CREATE_URLプロシージャを参照してください。
-
結果を確認します。
この例の
statusには、表ハイパーリンクに関する情報を含む結果が含まれています。{ "status" : "SUCCESS", "id" : "LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV198nGw-3yFYctMNm1p3atJr", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/-P46uQtYRt_yRfTxbcabc_xyzWlANP5RmM9Ys/data", "expiration_ts" : "2025-08-12T04:37:22.190Z" }グループ化列の使用例については、表ハイパーリンクを使用した表形式でのグループ化オプションを使用したデータへのアクセスを参照してください。
-
DBMS_DATA_ACCESS.CREATE_URLを実行して表ハイパーリンクを生成し、UIフォーマット・オプションを指定します。たとえば、ソート可能な列を設定するには、
column_lists order_by_columnsオプションを使用します。DECLARE status CLOB; column_lists CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'SCOTT', schema_object_name => 'TREE_DATA', expiration_minutes => 360, 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)の列を指定します。詳細は、CREATE_URLプロシージャを参照してください。
-
結果を確認します。
この例の
statusには、表ハイパーリンクに関する情報を含む結果が含まれています。{ "status" : "SUCCESS", "id" : "tCz2IRLIaDDymwOe1o105WQMGtyw4Z_0mGwfbv0ARcjI5SPkzR_xyz_abceyMgV", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/yfWQoyYxyz_abcGxQnCx0trQhH72m0HCjaMt8s/data", "expiration_ts" : "2025-08-12T04:41:05.115Z" }列ソートの使用例については、「列ソートでの表形式での表ハイパーリンクの使用」を参照してください。
また、次の操作を行うこともできます。
-
表のハイパーリンクを表示するには、
DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用します。詳細は、表ハイパーリンクおよび表ハイパーリンク・グループのリストを参照してください。 -
DBMS_DATA_ACCESS.EXTEND_URLを使用して、表ハイパーリンクの有効期間を延長します。詳細は、EXTEND_URLプロシージャを参照してください。 -
異なるサービス・レベルの保証およびリソースでサービスされる表ハイパーリンクを生成します。たとえば、オブジェクトまたはSQL文へのアクセスをサービスHIGHまたはMEDIUMにマップし、別のオブジェクトまたはSQL文へのアクセスをLOWサービスにマップできます。詳細は、CREATE_URLプロシージャを参照してください。
パスワード保護表のハイパーリンクの作成
表ハイパーリンクを作成する場合、表ハイパーリンクのパスワードを指定できます。
ユーザーがパスワードで保護された表ハイパーリンクにアクセスする場合は、表ハイパーリンクの作成時に指定されたパスワードを使用して認証する必要があります。これにより、表ハイパーリンクが意図したよりも広いオーディエンスに公開される場合に、悪意のあるアクセスを回避するための追加のセキュリティ・ステップが提供されます。
パスワードで保護された表のハイパーリンクを作成するには:
-
共有するデータの表、ビューまたは問合せ文を識別します。
パスワードで保護された表ハイパーリンクまたは表ハイパーリンク・グループを指定できます。
-
表ハイパーリンクまたは表ハイパーリンク・グループを作成する場合は、
passwordパラメータを指定します。たとえば:
DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'SCOTT', schema_object_name => 'TREE_DATA', password => *passwd*, max_failed_access_attempts => 15, result => status); dbms_output.put_line(status); END; /passwordパラメータは、表ハイパーリンク(または表ハイパーリンク・グループ)へのアクセスに必要なパスワードを指定します。パスワードに加えて、有効期限や有効期限など、表ハイパーリンクに適用されるすべてのセキュリティ保護が、パスワードで保護された表ハイパーリンクにも適用されます。max_failed_access_attemptsパラメータは、連続して失敗したパスワード試行の最大数を指定します。この値を超えると、表ハイパーリンクが無効になります。このパラメータのデフォルト値は10です。ユーザーが正しいパスワードを指定した場合、連続して失敗したアクセス試行の回数を追跡するカウントは0にリセットされます。詳細は、CREATE_URLプロシージャを参照してください。
-
結果を確認します。
この例では、
statusに表ハイパーリンクに関する情報を含む結果が含まれています。{ "status" : "SUCCESS", "id" : "wPY0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qHabc_1", "url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/-pPLdrbUTcLUr1XetvO0tekak4p92m0HCjaMt8s/data", "expiration_ts" : "2025-11-06T22:41:14.779Z" }
DBMS_DATA_ACCESS.CREATE_URLにpasswordパラメータを含める場合は、次の点に注意してください。
-
結果には、表ハイパーリンクURL値を含む
url属性が含まれます。passwordパラメータを指定しない場合、結果属性はpreauth_urlになります。この違いにより、パスワードで保護された表のハイパーリンクを結果で区別できます。 -
パスワードの最小長は12文字で、パスワードには少なくとも1つの大文字、1つの小文字および1つの数字を含める必要があります。これらのルールは、
NULLPVF (パスワード検証ファンクション)に関連付けられたデータベース・ユーザーのパスワード複雑度ルールに適用されるものと同じです。パスワード・パラメータを使用してCREATE_URLが呼び出され、指定されたパスワードがこれらのルールに準拠していない場合(たとえば、パスワードが12文字より短い場合)、URLの作成はエラーで失敗します。詳細は、Autonomous AI Databaseでのパスワード複雑度の管理を参照してください。
-
パスワードの設定後にパスワードを変更またはリセットするオプションは使用できません。
CREATE_URLを実行し、その後保存しなかった場合、または設定したパスワードを記憶できない場合は、新しい表ハイパーリンクを作成する必要があります。 -
パスワードで保護された表ハイパーリンクのパスワードとURLを作成するユーザーのパスワードとの間には、関連付けはありません。ユーザー
SCOTTがCREATE_URLを使用してパスワードで保護された表ハイパーリンクを作成した場合、作成される表ハイパーリンクURLのパスワードとユーザーSCOTTのパスワードは関連付けられません。
アクセス制御リスト(ACL)を使用した表ハイパーリンクの作成
指定したIPアドレスまたはCIDR範囲へのアクセスを制限するアクセス制御リスト(ACL)を含む表ハイパーリンクを作成するステップを示します。このメソッドを使用して、共有スキーマ・オブジェクト(表またはビュー)へのアクセスを許可するクライアントを制御できます。
セキュリティを維持するために、Oracleでは、DBMS_DATA_ACCESS.CREATE_URLをADMINユーザーとして実行しないことをお薦めします。
スキーマ・オブジェクト(表またはビュー)のACL制限を含む表ハイパーリンクを作成するには:
-
共有する表またはビューを特定します。
たとえば、ユーザー
USER1が所有するSTUDENTS_VIEWのようなビューを共有できます。 -
aclパラメータを使用してIPアクセス・ルールを定義します。aclパラメータは、許可されるアクセスを指定する1つ以上のIPアドレスまたはCIDR範囲を含むJSON配列を受け入れます。例:
'["1.1.1.1", "1.1.1.0/24"]'この構成では、特定のIP
1.1.1.1およびサブネット全体1.1.1.0/24からのアクセスのみが許可されます。 -
DBMS_DATA_ACCESS.CREATE_URLを実行して、ACLが設定された表ハイパーリンクを生成します。DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'USER1', schema_object_name => 'STUDENTS_VIEW', expiration_minutes => 120, acl => '["1.1.1.1", "1.1.1.0/24"]', result => status); dbms_output.put_line(status); END; /expiration_minutesパラメータでは、表ハイパーリンクが期限切れになり、120分後に無効になるように指定します。aclパラメータにより、承認されたIPアドレスから接続しているクライアントのみがハイパーリンクを使用できるようになります。パラメータの詳細および使用オプションの詳細は、「CREATE_URLプロシージャ」を参照してください。
-
結果を確認します。
ステータス変数には、生成された表ハイパーリンクに関する情報(ID、URL、有効期限タイムスタンプなど)を含む出力が含まれます。正常な出力は次のようになります。
{ "status" : "SUCCESS", "id" : "example_unique_id_string", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/example_unique_id_string/data", "expiration_ts" : "2025-12-23T04:30:41.484Z" }
生成されたURLを認可された受信者と安全に共有して、時間制限とIPベースの両方のコントロールが公開されたデータに適用されるようにできます。
ACL設定を継承する表ハイパーリンクの作成
親スキーマ・オブジェクト(表またはビュー)から既存のアクセス制御リスト(ACL)設定を継承する表ハイパーリンクを作成するステップを示します。これにより、データの共有時にACLパラメータを手動で指定せずに、一貫したアクセス制御動作が可能になります。
ACL設定を継承する表ハイパーリンクを作成するには:
-
共有する表またはビューを特定します。
たとえば、スキーマ
USER1が所有するSTUDENTS_VIEWという名前のビューを共有できます。 -
ハイパーリンクの有効期限を決定します。
expiration_minutesパラメータを使用して、リンクの有効期限が切れるまでの期間を定義します。この例では、リンクは120 minutesの後に期限切れになります。 -
ACL継承を有効にします。
ソース表またはビューと同じACLを自動的に適用するには、パラメータ
inherit_acl => TRUEを設定します。これにより、ハイパーリンクは、親スキーマ・オブジェクトで構成されたすべての権限を継承します。 -
DBMS_DATA_ACCESS.CREATE_URLを実行して、表ハイパーリンクを生成します。DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'USER1', schema_object_name => 'STUDENTS_VIEW', expiration_minutes => 120, inherit_acl => TRUE, result => status); dbms_output.put_line(status); END; /inherit_aclパラメータは、Oracle Autonomous AI Databaseに、ソース・オブジェクトに定義されているアクセス制御リストを再利用するように指示し、ハイパーリンクにアクセスするすべてのユーザーに対して同じ制限を保持します。 -
結果を確認します。
PL/SQLブロックは、
status変数のJSONレスポンスを返します。このレスポンスには、新しく作成された表ハイパーリンクに関するメタデータ(ステータス、ハイパーリンクID、事前認可済URL、有効期限タイムスタンプなど)が含まれます。次に例を示します。
{ "status" : "SUCCESS", "id" : "hY04uxyx-PoLxnHadiCQrsVQ785xqJs14CIp9M1qHd-m8bqJi-QC7skfwGesG", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/hY04uxyx-PoLxnHadiCQrsVQ785xqJs14CIp9M1qHd/data", "expiration_ts" : "2025-12-22T18:45:41.484Z" }これで、生成された
preauth_urlを認可されたユーザーと安全に共有できます。ハイパーリンクはACL設定を継承するため、基礎となるSTUDENTS_VIEWスキーマ・オブジェクトと同じIP、ユーザーまたはネットワーク制限を自動的に適用します。
表またはビューの整合性のある表ハイパーリンクの作成
一貫性オプションを有効にして表ハイパーリンクを作成するステップを示し、特定の時点でデータの読取り一貫性ビューを生成できます。
スキーマ・オブジェクト(表またはビュー)の一貫性のあるデータ・スナップショットを生成する表ハイパーリンクを作成するには:
-
共有する表またはビューを特定します。
この例では、スキーマ
USER1内のSTUDENTS_VIEWという名前のビューが使用されます。 -
ハイパーリンクの有効期限を決定します。
expiration_minutesパラメータは、ハイパーリンクが有効である期間(分)を指定します。この場合、ハイパーリンクは120分後に期限切れになります。 -
一貫性モードを有効にします。
ハイパーリンクを介して取得されるすべてのデータがソース・オブジェクトの単一のトランザクション・スナップショットを表していることを確認するには、一貫性パラメータを
TRUEに設定します。 -
DBMS_DATA_ACCESS.CREATE_URLを実行して、表ハイパーリンクを作成します。DECLARE status CLOB; BEGIN DBMS_DATA_ACCESS.CREATE_URL( schema_name => 'USER1', schema_object_name => 'STUDENTS_VIEW', expiration_minutes => 120, consistent => TRUE, result => status); dbms_output.put_line(status); END; /一貫性のあるパラメータは、ベース表またはビューで後続の更新が発生した場合でも、このハイパーリンクを介して実行されるすべての読取り操作によって、特定の時点のデータが取得されるようにします。
このプロシージャでサポートされるすべてのパラメータの詳細は、「CREATE_URLプロシージャ」を参照してください。
-
結果を確認します。
ステータス変数には、ハイパーリンク・ステータス、ID、生成されたURL、有効期限タイムスタンプなどの情報を含む操作の出力が含まれます。
例:
{ "status" : "SUCCESS", "id" : "pK80uxyx-GioxJndiQVrVFG585xqJs14CIp9M1qHd-m8bqJi-QCahwfwGesH", "preauth_url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/pK80uxyx-GioxJndiQVrVFG585xqJs14CIp9M1qHd/data", "expiration_ts" : "2025-12-22T23:16:41.484Z" }
これで、生成されたURLを認可されたユーザーと安全に共有できます。一貫性のある設定により、ハイパーリンクにアクセスするすべてのユーザーが、URLが作成された時点でのSTUDENTS_VIEWデータの同じ、トランザクション上一貫性のあるビューを参照できます。
表ハイパーリンクの無効化
適切な権限を持つユーザーは、いつでも表のハイパーリンクを無効にできます。
表ハイパーリンクを無効にするには、表ハイパーリンク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;
/DBMS_DATA_ACCESS.INVALIDATE_URLを使用して、表ハイパーリンク・グループを無効にすることもできます。
詳細は、表ハイパーリンク・グループの無効化および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ポリシーを追加できます。
たとえば:
-
表ハイパーリンクの生成時に指定した
application_user_id値を取得します。 -
表ハイパーリンクを生成したデータベースに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;See [DBMS_RLS](/pls/topic/lookup?ctx=en/cloud/paas/autonomous-database/serverless/adbsb&id=ARPLS-GUID-27507923-FF74-4193-B55D-6ECB11B58FCC) for more information.
-
VPDポリシーを登録します。
BEGIN DBMS_RLS.ADD_POLICY( object_schema => 'HR', object_name => 'EMPLOYEE', policy_name => 'POL', policy_function => 'LIMIT_SAL'); END; /詳細は、DBMS_RLSを参照してください。
詳細は、「Oracle Virtual Private Databaseを使用したデータ・アクセスの制御」を参照してください。
表のハイパーリンク使用状況の監視および表示
Autonomous AI Databaseには、表ハイパーリンクの使用状況をモニターできるビューが用意されています。
| ビュー | 摘要 |
|---|---|
| V$DATA_ACCESS_URL_STATSおよびGV$DATA_ACCESS_URL_STATSビュー | これらのビューは、経過時間、CPU時間、追加情報などの表ハイパーリンクの使用状況を追跡します。 |
表ハイパーリンクまたは表ハイパーリンク・グループの作成に関するノート
DBMS_DATA_ACCESS.CREATE_URLを使用して表ハイパーリンクまたは表ハイパーリンク・グループを作成する際のノート:
-
オプションの
service_nameパラメータを使用して、生成された表ハイパーリンクが特定のサービス・レベルの保証およびリソースでサービスされるように指定できます。たとえば、service_nameパラメータを使用して、SQL文へのアクセスがHIGHサービスにマップされるように指定します。 -
表ハイパーリンク・データへのアクセスを制限する場合は、オプションの
inherit_aclパラメータとaclパラメータのいずれかまたは両方を使用できます。-
inherit_acl: 表ハイパーリンク・データへのアクセスを制限する場合は、オプションのinherit_aclパラメータを使用します。ACLを継承するには、このパラメータをTRUEに設定します。このパラメータの値がTRUEの場合、データへのアクセスを許可する前に、受信表ハイパーリンク・コンシューマのIPアドレスがプロデューサ・データベース上のACLで検証されます。プロデューサ・データベースにACLが構成されていない場合、inherit_acl値は無視され、ACLチェックなしでデータ・アクセスが許可されます。 -
acl: オプションのaclパラメータを使用して、表ハイパーリンクに適用するACLを指定します。パラメータ値は、許可されるIPアドレス、CIDRブロックまたはOCI VCN OCIDsのリストを指定します。aclパラメータが指定されている場合、表ハイパーリンク・コンシューマはACLで指定されたホストのデータにのみアクセスできます。
inherit_aclがTRUEで、aclパラメータがACLを指定するように設定されている場合、表ハイパーリンク・コンシューマは、aclパラメータで指定されたホストまたはAutonomous AI Databaseインスタンスに対して指定されたACLで定義された継承されたホストから、表ハイパーリンクのデータにアクセスできます。詳細は、アクセス制御ルール(ACL)を使用したネットワーク・アクセスの構成を参照してください。
-
-
オプションのパラメータ
consistentをTRUEに設定すると、表ハイパーリンク・プロデューサは異なるページ間で一貫してデータを生成します。これにより、コンシューマは、最初のページのアクセスに関連付けられているSCNと同じデータ・スナップショット(SCN)を使用して、表ハイパーリンクに関連付けられているすべてのページのデータにアクセスできます。このオプションを使用すると、プロデューサは一貫性のあるデータをコンシューマに戻すことができます。コンシューマでは、レスポンスがページ区切りされ、複数のページが返されます(データは、アクセス時にページごとに返されます)。consistentをTRUEに設定し、表ハイパーリンクが別のユーザーのスキーマのスキーマ・オブジェクトを参照する場合、表ハイパーリンクを作成するデータベース・ユーザーには、他のユーザーのスキーマに属する表ハイパーリンクで使用されるすべてのスキーマ・オブジェクトに対するFLASHBACK権限が必要です。たとえば:
GRANT FLASHBACK ON TREE_SCHEMA.TREE_DATA TO SCOTT;ノート: データベース・アクティビティが大量にあり、最初のページの取得と後続のページの取得の間に十分な時間が経過すると、最初のアクセスと一致する後続のデータを取得できない場合があります。この場合、取得はエラーになります。
詳細は、「表ハイパーリンクまたは表ハイパーリンク・グループを使用したデータへのアクセス」を参照してください。
-
プライベート・エンドポイントを含むAutonomous AI Databaseインスタンスに表ハイパーリンクを作成すると、結果には
"https://private-endpoint/adb/p/parurl-token/data"という形式の値を持つprivate_preauth_urlという名前が含まれます。プライベート・エンドポイントを使用してAutonomous AI Databaseインスタンスに表ハイパーリンクを作成し、プライベート・エンドポイントが「パブリック・アクセスの許可」を有効にして構成されている場合、結果にはパブリック・エンドポイントの
preauth_urlとprivate_preauth_urlの両方が含まれます。詳細は、プライベート・エンドポイントの構成およびパブリック・アクセスが許可されたプライベート・エンドポイントの使用を参照してください。
-
表のハイパーリンクを表示するには、
DBMS_DATA_ACCESS.LIST_ACTIVE_URLSを使用します。詳細は、表ハイパーリンクおよび表ハイパーリンク・グループのリストを参照してください。 -
DBMS_DATA_ACCESS.EXTEND_URLを使用して、表ハイパーリンクの有効期間を延長します。詳細は、EXTEND_URLプロシージャを参照してください。