PAR URLデータを保護するための仮想プライベート・データベース・ポリシーの定義 PAR URLと共有するデータに対してOracle Virtual Private Database (VPD)ポリシーを定義することで、特定のPAR URLに対してデータのサブセット(行)のみが表示されるように、きめ細かいアクセス制御を提供できます。
PAR URLを実行すると、PAR URLを生成するデータベース・ユーザーに付与された権限が使用されます。PAR URLを生成するユーザーは、データへのアクセスを提供するために必要な最小限の権限を持っている必要があります。セキュリティを維持するために、OracleではADMINユーザーとしてDBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLを実行しないことをお薦めします。
PAR URLを使用してデータへのアクセスをスキーマ・オブジェクト(表またはビュー)として提供するには:
PAR URLを実行すると、PAR URLを生成するデータベース・ユーザーに付与された権限が使用されます。PAR URLを生成するユーザーは、データへのアクセスを提供するために必要な最小限の権限を持っている必要があります。セキュリティを維持するために、OracleではADMINユーザーとしてDBMS_DATA_ACCESS.GET_PREAUTHENTICATED_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;
/
PAR URLを使用してデータを読み取るためのアクセス権を付与されたユーザーは、データ(表、ビューまたはselect文で提供されるデータ)にアクセスして使用できます。PAR URLを生成したデータベースでVPDポリシーを定義することで、SYS_CONTEXTルールのapplication_user_id値を使用して、より詳細な制御を提供できます。PAR URLを使用してデータを使用できる例を考えてみます。一部のデータへのアクセスを制限する場合は、VPDポリシーを追加できます。
たとえば:
PAR URLの生成時に指定したapplication_user_id値を取得します。
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;