ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

110 DBMS_RLS

DBMS_RLSパッケージには、ファイングレイン・アクセス・コントロールの管理インタフェースが含まれています。このインタフェースを使用して、VPD(Virtual Private Database)を実装します。 DBMS_RLSは、Enterprise Editionでのみ使用できます。


関連項目:

DBMS_RLSの使用方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

この章では、次の項目について説明します。


DBMS_RLSの使用方法


概要

ファイングレイン・アクセス・コントロールをサポートする機能は、動的な述語に基づいています。セキュリティ・ルールはビューに埋め込まれていませんが、元表またはビューがDML文で参照される、文の解析時に取得されます。

表、ビューまたはシノニムに対する動的な述語はPL/SQLファンクションが生成し、PL/SQLインタフェースを介してセキュリティ・ポリシーに関連付けられます。次に例を示します。

DBMS_RLS.ADD_POLICY (
   'hr', 'employees', 'emp_policy', 'hr', 'emp_sec', 'select');

HRスキーマの下にあるEMPLOYEES表が問合せまたは副問合せ(SELECT)で参照されるたびに、サーバーは、EMP_SECファンクション(HRスキーマの下にある)をコールします。 このファンクションは、EMP_POLICYポリシーについて、現行のユーザーに固有の述語を戻します。ポリシー・ファンクションは、ファンクション・コール時に使用可能なセッション環境変数に基づいて述語を生成できます。これらの変数は通常、アプリケーション・コンテキストのフォームで表示されます。ポリシーでは、セキュリティ関連の列と、INDEXSELECT、INSERT、UPDATEDELETEなどの文を自由に組み合せて指定できます。

次に、サーバーは、テキストがある一時ビューを作成します。

SELECT * FROM hr.employees WHERE P1

ここで、P1SAL > 10000や副問合せなど)は、EMP_SECファンクションから戻された述語です。サーバーは、EMPLOYEES表をビューとして処理し、ビューのテキストをデータ・ディクショナリからではなく一時ビューから取得すること以外は、通常のビューと同様にビューの展開を行います。

述語に副問合せがある場合は、ポリシー・ファンクションの所有者(定義者)を使用して副問合せ内のオブジェクトを解決し、そのオブジェクトのセキュリティをチェックします。つまり、ポリシー保護されたオブジェクトへのアクセス権限を持つユーザーには、ポリシーについての知識は不要です。このユーザーには、基礎となるセキュリティ・ポリシーに対するオブジェクト権限の付与は不要です。さらに、サーバーはファンクション定義者の権限でコールを行うため、このユーザーにはポリシー・ファンクションでのEXECUTE権限は不要です。


注意:

一時ビューは、単一表または述語のみを持つビュー(つまり、JOINORDER BYGROUP BYなどがない)から導出されるため、親オブジェクトの更新可能性を保持できます。

DBMS_RLSは、セキュリティ・ポリシーを削除するか使用可能にするためのインタフェースも提供します。 たとえば、EMP_POLICYを削除したり、使用可能にしたりする場合は、次のPL/SQL文を使用します。

DBMS_RLS.DROP_POLICY('hr', 'employees', 'emp_policy');
DBMS_RLS.ENABLE_POLICY('hr', 'employees', 'emp_policy', FALSE);

セキュリティ・モデル

一時ビューが副問合せを使用して作成されると、セキュリティ・チェックが実行されます。ポリシー・ファンクションを持ち、動的な述語を生成するスキーマは、セキュリティ・チェックおよびオブジェクト検索を行う一時ビューの定義者です。


使用上の注意

DBMS_RLSプロシージャは、現行のDMLトランザクションがある場合は、操作前にコミットします。ただし、プロシージャがDDLイベント・トリガーの内部にある場合、プロシージャは最初にコミットを実行しません。 DDLトランザクションでは、DBMS_RLSプロシージャはDDLトランザクションの一部となります。

たとえば、ユーザーはCREATE TABLEのトリガーを作成できます。 トリガー内部で、ALTER TABLEを介して列を追加でき、DBMS_RLSを介してポリシーを追加できます。これらすべての操作は、それぞれがDDL文であっても、CREATE TABLEと同じトランザクション内にあります。CREATE TABLEは、トリガーが正常終了した場合のみ成功します。

現行のカーソルおよび対応する述語のビューはv$vpd_policiesから利用できます。

シノニムが参照できるのは、ビューまたは表のみです。


DBMS_RLSサブプログラムの要約

表110-1 DBMS_RLSパッケージのサブプログラム

サブプログラム 説明

ADD_GROUPED_POLICYプロシージャ


ポリシー・グループに関連付けられたポリシーを追加します。

ADD_POLICYプロシージャ


ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムに追加します。

ADD_POLICY_CONTEXTプロシージャ


アクティブなアプリケーションのコンテキストを追加します。

CREATE_POLICY_GROUPプロシージャ


ポリシー・グループを作成します。

DELETE_POLICY_GROUPプロシージャ


ポリシー・グループを削除します。

DISABLE_GROUPED_POLICYプロシージャ


行レベルのグループ・セキュリティ・ポリシーを使用禁止にします。

DROP_GROUPED_POLICYプロシージャ


ポリシー・グループに関連付けられたポリシーを削除します。

DROP_POLICYプロシージャ


ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムから削除します。

DROP_POLICY_CONTEXTプロシージャ


駆動コンテキストが1つ少なくなるように、オブジェクトから駆動コンテキストを削除します。

ENABLE_GROUPED_POLICYプロシージャ


行レベルのグループ・セキュリティ・ポリシーを使用可能または使用禁止にします。

ENABLE_POLICYプロシージャ


ファイングレイン・アクセス・コントロールのポリシーを使用可能または使用禁止にします。

REFRESH_GROUPED_POLICYプロシージャ


リフレッシュ・ポリシーに関連付けられたSQL文を再解析します。

REFRESH_POLICYプロシージャ


ポリシーに関連付けられているすべてのキャッシュ済の文を再解析します。



ADD_GROUPED_POLICYプロシージャ

このプロシージャは、ポリシー・グループに関連付けられたポリシーを追加します。

構文

DBMS_RLS.ADD_GROUPED_POLICY(
   object_schema         VARCHAR2,
   object_name           VARCHAR2,
   policy_group          VARCHAR2,
   policy_name           VARCHAR2,
   function_schema       VARCHAR2,
   policy_function       VARCHAR2,
   statement_types       VARCHAR2,
   update_check          BOOLEAN,
   enabled               BOOLEAN,
   static_policy         IN BOOLEAN  FALSE,
   policy_type           IN BINARY_INTEGER NULL,
   long_predicate        IN BOOLEAN  FALSE,
   sec_relevant_cols     IN VARCHAR2,
   sec_relevant_cols_opt IN BINARY_INTEGER NULL);

パラメータ

表110-2 ADD_GROUPED_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。

policy_name

ポリシーの名前。同一の表またはビューで一意である必要があります。

function_schema

ポリシー・ファンクションを所有するスキーマ。

policy_function

ポリシーの述語を生成するファンクションの名前。ファンクションがパッケージ内で定義されている場合、パッケージ名は必ず存在する必要があります。

statement_types

ポリシーを適用する文の種類。INDEXSELECTINSERTUPDATEまたはDELETEを任意に組み合せることができます。デフォルトでは、INDEX以外のすべてのタイプが適用されます。

update_check

INSERT文およびUPDATE文の場合にかぎり、update_checkをTRUEに設定すると、サーバーでポリシーがINSERT後またはUPDATE後の値に対してチェックされます。

enable

ポリシーの追加時に、そのポリシーを使用可能にするかどうかを示します。デフォルトはTRUEです。

static_policy

デフォルトはFALSEです。TRUEに設定されている場合は、オブジェクトにアクセスするすべてのユーザー(ただし、SYSまたはEXEMPT ACCESS POLICY権限を持つ特権ユーザーを除く)に対して、静的ポリシーのポリシー・ファンクションが同一の述語文字列を生成するものとサーバーはみなします。

policy_type

デフォルト値のNULLは、policy_typestatic_policyの値によって決定されることを意味します。使用可能なポリシー・タイプは、表110-4のとおりです。この中から指定したポリシー・タイプは、static_policyの値よりも優先されます。

long_predicate

デフォルト値のFALSEは、ポリシー・ファンクションから最大4000バイトの述語が戻されることを意味します。TRUEは、述語のテキスト文字列の長さが最大32Kバイトになることを意味します。このパラメータを使用できる前から存在するポリシーには、32K制限が維持されます。

sec_relevant_cols

列レベルのVPD(Virtual Private Database)を使用可能にします。このVPDによって、機密情報を保持している列が問合せで参照されたときにセキュリティ・ポリシーが実行されます。表およびビューに適用されますが、シノニムには適用されません。ポリシーで保護されたオブジェクトの有効な列名を、カンマ区切りまたはスペース区切りのリスト形式で指定します。このポリシーが実行されるのは、ユーザーのSQL文またはその基であるビュー定義の中で、指定した列が参照されたとき(抽象データ型の列の場合は、その属性が参照されたとき)のみです。デフォルトは、オブジェクトのユーザー定義列すべてです。

sec_relevant_cols_opt

sec_relevant_colsとともに使用し、列レベルのVPDでフィルタ処理をした問合せ(SELECTのみ)に使用する行の中で、機密情報の列がNULLになっているものすべてを表示します。デフォルトではNULLに設定され、sec_relevant_colsで定義したフィルタが有効になります。dbms_rls.ALL_ROWSに設定すると、すべての行が表示されます。ただし、機密情報の列の値を持つ場合は、列の値がsec_relevant_colsでフィルタ処理されるため、NULLが表示されます。このオプションに関する制限および詳細は、「使用上の注意」を参照してください。


使用上の注意


ADD_POLICYプロシージャ

このプロシージャは、ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムに追加します。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。


関連項目:

「使用上の注意」

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.ADD_POLICY (
   object_schema            IN VARCHAR2 NULL,
   object_name              IN VARCHAR2,
   policy_name              IN VARCHAR2,
   function_schema          IN VARCHAR2 NULL,
   policy_function          IN VARCHAR2,
   statement_types          IN VARCHAR2 NULL,
   update_check             IN BOOLEAN  FALSE,
   enable                   IN BOOLEAN  TRUE,
   static_policy            IN BOOLEAN  FALSE,
   policy_type              IN BINARY_INTEGER NULL,
   long_predicate           IN BOOLEAN  FALSE,
   sec_relevant_cols        IN VARCHAR2,
   sec_relevant_cols_opt    IN BINARY_INTEGER NULL);

パラメータ

表110-3 ADD_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。 object_schemaが指定されていない場合は、現在のログオン・ユーザーのスキーマと想定されます。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_name

追加するポリシーの名前。この名前は、表またはビュー内に対して一意である必要があります。

function_schema

ポリシー・ファンクションのスキーマ(NULLの場合は現行のデフォルト・スキーマ)。

policy_function

ポリシーの述語を生成するファンクションの名前。ファンクションがパッケージ内で定義されている場合、パッケージ名は必ず存在する必要があります。

statement_types

ポリシーを適用する文の種類。INDEXSELECTINSERTUPDATEまたはDELETEを任意に組み合せることができます。デフォルトでは、INDEX以外のすべてのタイプが適用されます。

update_check

文タイプINSERTまたはUPDATEに対するオプションの引数。デフォルトはFALSEです。 update_checkTRUEに設定すると、サーバーは、挿入または更新後の値に対してもポリシーをチェックします。

enable

ポリシーの追加時に、そのポリシーを使用可能にするかどうかを示します。デフォルトはTRUEです。

static_policy

デフォルトはFALSEです。TRUEに設定されている場合、サーバーは、静的ポリシーのポリシー・ファンクションによって、オブジェクトにアクセスするすべてのユーザー(ただし、SYSまたはEXEMPT ACCESS POLICY権限を持つ特権ユーザーを除く)に対して同一の述語文字列が生成されるとみなします。

policy_type

デフォルト値のNULLは、policy_typestatic_policyの値によって決定されることを意味します。使用可能なポリシー・タイプは、表110-4のとおりです。この中から指定したポリシー・タイプは、static_policyの値よりも優先されます。

long_predicate

デフォルト値のFALSEは、ポリシー・ファンクションから最大4000バイトの述語が戻されることを意味します。TRUEは、述語のテキスト文字列の長さが最大32Kバイトになることを意味します。このパラメータを使用できる前から存在するポリシーには、32K制限が維持されます。

sec_relevant_cols

列レベルのVPD(Virtual Private Database)を使用可能にします。このVPDによって、機密情報を保持している列が問合せで参照されたときにセキュリティ・ポリシーが実行されます。表およびビューに適用されますが、シノニムには適用されません。ポリシーで保護されたオブジェクトの有効な列名を、カンマ区切りまたはスペース区切りのリスト形式で指定します。このポリシーが実行されるのは、ユーザーのSQL文またはその基であるビュー定義の中で、指定した列が参照されたとき(抽象データ型の列の場合は、その属性が参照されたとき)のみです。デフォルトは、オブジェクトのユーザー定義列すべてです。

sec_relevant_cols_opt

sec_relevant_colsとともに使用し、列レベルのVPDでフィルタ処理をした問合せ(SELECTのみ)に使用する行の中で、機密情報の列がNULLになっているものすべてを表示します。デフォルトではNULLに設定され、sec_relevant_colsで定義したフィルタが有効になります。dbms_rls.ALL_ROWSに設定すると、すべての行が表示されます。ただし、機密情報の列の値を持つ場合は、列の値がsec_relevant_colsでフィルタ処理されるため、NULLが表示されます。このオプションに関する制限および詳細は、「使用上の注意」を参照してください。


表110-4 DBMS_RLS.ADD_POLICYのポリシー・タイプ

ポリシー・タイプ 説明

STATIC

ランタイム環境にかかわらず、述語は同一であると想定されます。静的なポリシー・ファンクションは1回のみ実行され、その後はSGAにキャッシュされます。同じオブジェクトにアクセスする複数の文が、このポリシー・ファンクションを再実行することはありません。 ただし、同じ述語でありながら、同じカーソルを実行するたびに異なる行セットを生成する場合があります。これは、述語がデータに対して、SYS_CONTEXTSYSDATEなどの属性に基づいた様々なフィルタ処理を行うことがあるためです。1つのオブジェクトのみに適用されます。

SHARED_STATIC

STATICと同じです。ただし、サーバーが最初に検索するものが、同じポリシー・タイプの同じポリシー・ファンクションで生成したキャッシュ済の述語である、という点が異なります。複数のオブジェクト間で共有されます。

CONTEXT_SENSITIVE

サーバーは、コンテキストがカーソルの最終使用時とは違っていることを検出した場合、文の実行時にポリシー・ファンクションを再評価します。複数のクライアントがデータベース・セッションを共有するセッション・プーリングの場合は、クライアントの切替え中に中間層でコンテキストをリセットする必要があります。このポリシー・タイプのファンクションの戻り値をサーバーがキャッシュしないことに注意してください。サーバーは、文の解析時、常にポリシー・ファンクションを実行します。1つのオブジェクトのみに適用されます。

SHARED_CONTEXT_SENSITIVE

CONTEXT_SENSITIVEと同じです。ただし、サーバーが最初に検索するものが、同じデータベース・セッション内で同じポリシー・タイプの同じポリシー・ファンクションで生成したキャッシュ済の述語である、という点が異なります。セッション・メモリーで述語が見つかった場合、ポリシー・ファンクションは再実行されず、キャッシュ済の値は、セッションのプライベート・アプリケーション・コンテキストが変更されるまで有効です。複数のオブジェクト間で共有されます。

DYNAMIC

デフォルトのポリシー・タイプ。サーバーでは、どのようなシステム環境やセッション環境においても常になんらかの影響が述語にはあることを想定しているため、文の解析や実行のたびに必ずポリシー・ファンクションを再実行します。1つのオブジェクトのみに適用されます。


使用上の注意

    FUNCTION policy_function (object_schema IN VARCHAR2, object_name VARCHAR2)
        RETURN VARCHAR2
    --- object_schema is the schema owning the table of view.
    --- object_name is the name of table, view, or synonym to which the policy applies.

次に2つの例を示しますが、最初の例では、hr.employee表に適用されるポリシーが作成されます。これは、列レベルのVPDポリシーです。このポリシーは、SELECT文またはINDEX文が表のsalary列、birthdate列、SSN列を明示的に参照するか、ビューを使用して暗黙的に参照した場合にのみ実行されます。 また、CONTEXT_SENSITIVEポリシーでもあるため、サーバーは、解析時にポリシー・ファンクションhr.hrfunを起動します。ただし、実行中にファンクションが起動されるのは、いずれかのセッションのプライベート・コンテキストが文カーソルの最終使用時とは変わっている場合のみです。 long_predicateパラメータはコールの際に使用されないので、ポリシー・ファンクションで生成した述語が4000バイト(デフォルトの制限値)を超えないようにしてください。

BEGIN
dbms_rls.add_policy(object_schema => 'hr',
object_name => 'employee',
policy_name => 'hr_policy',
function_schema =>'hr',
policy_function => 'hrfun',
statement_types =>'select,index',
policy_type => dbms_rls.CONTEXT_SENSITIVE,
sec_relevant_cols=>'salary,birthdate,ssn');
END;
/

2番目の例では、次のコマンドによってホスティング用の同じオブジェクトに適用される別のポリシーが作成されるため、ユーザーは各自のサブスクライバIDに基づくデータのみにアクセスできます。これはSHARED_STATICポリシー・タイプとして定義されるため、サーバーはまずSGAキャッシュ内で述語の検索を試みます。検索できなかった場合、サーバーはポリシー・ファンクションsubfunの起動のみを行います。

BEGIN
dbms_rls.add_policy(object_schema => 'hr',
object_name => 'employee',
policy_name => 'hosting_policy',
function_schema =>'hr',
policy_function => 'subfun',
policy_type => dbms_rls.SHARED_STATIC);
END;
/

ADD_POLICY_CONTEXTプロシージャ

このプロシージャは、アクティブなアプリケーションのコンテキストを追加します。

構文

DBMS_RLS.ADD_POLICY_CONTEXT (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   namespace       VARCHAR2,
   attribute       VARCHAR2);

パラメータ

表110-5 ADD_POLICY_CONTEXTプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

namespace

駆動コンテキストのネームスペース。

attribute

駆動コンテキストの属性。


使用上の注意

次の点に注意してください。


CREATE_POLICY_GROUPプロシージャ

このプロシージャはポリシー・グループを作成します。

構文

DBMS_RLS.CREATE_POLICY_GROUP (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   policy_group    VARCHAR2);

パラメータ

表110-6 CREATE_POLICY_GROUPプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。


使用上の注意

グループは、各表または各ビューで一意である必要があります。


DELETE_POLICY_GROUPプロシージャ

このプロシージャはポリシー・グループを削除します。

構文

DBMS_RLS.DELETE_POLICY_GROUP (
  object_schema   VARCHAR2,
  object_name     VARCHAR2,
  policy_group    VARCHAR2);

パラメータ

表110-7 DELETE_POLICY_GROUPプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。


使用上の注意

次の点に注意してください。


DISABLE_GROUPED_POLICYプロシージャ

このプロシージャは、行レベルのグループ・セキュリティ・ポリシーを使用禁止にします。

構文

DBMS_RLS.DISABLE_GROUPED_POLICY (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   group_name      VARCHAR2,
   policy_name     VARCHAR2);

パラメータ

表110-8 DISABLE_GROUPED_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

group_name

ポリシーのグループの名前。

policy_name

使用可能または使用禁止にするポリシーの名前。


使用上の注意


DROP_GROUPED_POLICYプロシージャ

ポリシー・グループに対応付けられたポリシーを削除します。

構文

DBMS_RLS.DROP_GROUPED_POLICY (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   policy_group    VARCHAR2,
   policy_name     VARCHAR2);

パラメータ

表110-9 DROP_GROUPED_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを削除する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。

policy_name

ポリシー名。



DROP_POLICYプロシージャ

このプロシージャは、ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムから削除します。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。


関連項目:

「使用上の注意」

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.DROP_POLICY (
   object_schema   IN VARCHAR2 NULL,
   object_name     IN VARCHAR2,
   policy_name     IN VARCHAR2);

パラメータ

表110-10 DROP_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ(NULLの場合は現行のデフォルト・スキーマ)。

object_name

ポリシーを削除する表、ビューまたはシノニムの名前。

policy_name

表、ビューまたはシノニムから削除するポリシーの名前。



DROP_POLICY_CONTEXTプロシージャ

このプロシージャは、駆動コンテキストが1つ少なくなるように、オブジェクトから駆動コンテキストを削除します。

構文

DBMS_RLS.DROP_POLICY_CONTEXT (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   namespace       VARCHAR2,
   attribute       VARCHAR2);

パラメータ

表110-11 DROP_POLICY_CONTEXTプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを削除する表、ビューまたはシノニムの名前。

namespace

駆動コンテキストのネームスペース。

attribute

駆動コンテキストの属性。



ENABLE_GROUPED_POLICYプロシージャ

このプロシージャは、行レベルのグループ・セキュリティ・ポリシーを使用可能または使用禁止にします。

構文

DBMS_RLS.ENABLE_GROUPED_POLICY (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   group_name      VARCHAR2,
   policy_name     VARCHAR2,
   enable          BOOLEAN);

パラメータ

表110-12 ENABLE_GROUPED_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

group_name

ポリシーのグループの名前。

policy_name

使用可能または使用禁止にするポリシーの名前。

enable

TRUEに設定するとポリシーが使用可能になり、FALSEに設定すると使用禁止になります。


使用上の注意


ENABLE_POLICYプロシージャ

このプロシージャは、ファイングレイン・アクセス・コントロールのポリシーを使用可能または使用禁止にします。ポリシーは、その作成時に使用可能になっています。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。


関連項目:

「使用上の注意」

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.ENABLE_POLICY (
   object_schema IN VARCHAR2 NULL,
   object_name   IN VARCHAR2,
   policy_name   IN VARCHAR2,
   enable        IN BOOLEAN);

パラメータ

表110-13 ENABLE_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ(NULLの場合は現行のデフォルト・スキーマ)。

object_name

ポリシーが関連付けられている表、ビューまたはシノニムの名前。

policy_name

使用可能または使用禁止にするポリシーの名前。

enable

ポリシーを使用可能にする場合はTRUE、使用禁止にする場合はFALSE



REFRESH_GROUPED_POLICYプロシージャ

このプロシージャは、リフレッシュ・ポリシーに関連付けられたSQL文を再解析します。

構文

DBMS_RLS.REFRESH_GROUPED_POLICY (
   object_schema   VARCHAR2,
   object_name     VARCHAR2,
   group_name      VARCHAR2,
   policy_name     VARCHAR2);

パラメータ

表110-14 REFRESH_GROUPED_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

group_name

ポリシーのグループの名前。

policy_name

ポリシー名。


使用上の注意


REFRESH_POLICYプロシージャ

このプロシージャは、ポリシーに関連付けられたすべてのキャッシュ済の文を再解析します。これにより、ポリシーへの最新の変更内容がプロシージャの実行直後に有効になります。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。


関連項目:

「使用上の注意」

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.REFRESH_POLICY (
   object_schema IN VARCHAR2 NULL,
   object_name   IN VARCHAR2 NULL,
   policy_name   IN VARCHAR2 NULL);

パラメータ

表110-15 REFRESH_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーが関連付けられている表、ビューまたはシノニムの名前。

policy_name

リフレッシュするポリシーの名前。


使用上の注意

使用禁止になっているポリシーをリフレッシュしようとすると、プロシージャはエラーを戻します。