XS_DATA_SECURITYパッケージ

XS_DATA_SECURITYパッケージには、データ・セキュリティ・ポリシー、関連データ・レルム制約、列制約およびACLパラメータを作成、管理、削除するためのプロシージャが含まれます。

XS_DATA_SECURITYパッケージのセキュリティ・モデル

XS_DATA_SECURITYパッケージは、SYSスキーマに作成されます。すべてのスキーマのACL、セキュリティ・クラス、セキュリティ・ポリシーなどのスキーマ・オブジェクトを管理できるADMIN_ANY_SEC_POLICYDBAロールに付与されます。また、ADMIN_ANY_SEC_POLICYを付与されているユーザーは、ENABLE_OBJECT_POLICYDISABLE_OBJECT_POLICYAPPLY_OBJECT_POLICYおよびREMOVE_OBJECT_POLICYプロシージャをコールできます。

ユーザーは、スキーマに対するRESOURCEロールを付与されている場合に、自身のスキーマ内のスキーマ・オブジェクトを管理できます。RESOURCEロールおよびXS_RESOURCEアプリケーション・ロールには、アプリケーション内のポリシー管理を達成するために、スキーマ内のスキーマ・オブジェクトの管理および権限付与されたスキーマ内のポリシー・アーティファクトの管理に必要な、ADMIN_SEC_POLICY権限が含まれます。

APPLY_SEC_POLICY権限を付与されたユーザーは、スキーマに対するポリシー強制を管理できます。この権限を持つユーザーは、権限付与されたスキーマ内のポリシー強制を管理して、アプリケーション内のポリシー管理を達成できます。

オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与

このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT文が定義されています。

-- Create a type for key
CREATE OR REPLACE TYPE XS$KEY_TYPE AS OBJECT (
primary_key      VARCHAR2(130),
foreign_key      VARCHAR2(4000),
-- Foreign key type; 1 = col name, 2 = col value
foreign_key_type NUMBER,
-- Constructor function
CONSTRUCTOR FUNCTION XS$KEY_TYPE
                     (primary_key      IN VARCHAR2,
                      foreign_key      IN VARCHAR2,
                      foreign_key_type IN NUMBER)
                      RETURN SELF AS RESULT,

MEMBER FUNCTION GET_PRIMARY_KEY RETURN VARCHAR2,
MEMBER FUNCTION GET_FOREIGN_KEY RETURN VARCHAR2,
MEMBER FUNCTION GET_FOREIGN_KEY_TYPE RETURN NUMBER,
);
CREATE OR REPLACE TYPE XS$KEY_LIST AS VARRAY(1000) OF XS$KEY_TYPE;
CREATE OR REPLACE TYPE XS$REALM_CONSTRAINT_TYPE AS OBJECT (
-- Member variables
realm_type    NUMBER,
-- Member evaluation rule 
realm              VARCHAR2(4000),
-- acl list of instance set
acl_list              XS$NAME_LIST,
-- isStatic variable for instance set. Stored as INTEGER. No boolean datatype 
-- for objects. False is stored as 0 and TRUE is stored as 1
is_static          INTEGER,
-- Indicate if the realm is parameterized.
parameterized      INTEGER,
-- parent schema name for inherited from
parent_schema      VARCHAR2(130),
-- parent object name for inherited from
parent_object      VARCHAR2(130),
-- keys for inherited from
key_list           XS$KEY_LIST,
-- when condition for inherited from
when_condition     VARCHAR2(4000),

-- Constructor function - row_level realm
CONSTRUCTOR FUNCTION XS$REALM_CONSTRAINT_TYPE
                     (realm                  IN VARCHAR2,
                      acl_list               IN XS$NAME_LIST,
                      is_static              IN BOOLEAN := FALSE)
                      RETURN SELF AS RESULT,
 
-- Constructor function - parameterized row_level realm
CONSTRUCTOR FUNCTION XS$REALM_CONSTRAINT_TYPE
                     (realm                  IN VARCHAR2,                      
                      is_static              IN BOOLEAN := FALSE)
                      RETURN SELF AS RESULT,
 
-- Constructor function - master realm
CONSTRUCTOR FUNCTION XS$REALM_CONSTRAINT_TYPE
                     (parent_schema  IN VARCHAR2,
                      parent_object  IN VARCHAR2,
                      key_list       IN XS$KEY_LIST,
                      when_condition IN VARCHAR2:= NULL)
                      RETURN SELF AS RESULT,
 
-- Accessor functions
MEMBER FUNCTION GET_TYPE RETURN NUMBER,
MEMBER FUNCTION GET_REALM RETURN VARCHAR2,
MEMBER FUNCTION GET_ACLS RETURN XS$NAME_LIST,
MEMBER FUNCTION IS_DYNAMIC_REALM RETURN BOOLEAN,
MEMBER FUNCTION IS_STATIC_REALM RETURN BOOLEAN,
MEMBER FUNCTION IS_PARAMETERIZED_REALM RETURN BOOLEAN,
MEMBER FUNCTION GET_KEYS RETURN XS$KEY_LIST,
MEMBER FUNCTION GET_PARENT_SCHEMA RETURN VARCHAR2,
MEMBER FUNCTION GET_PARENT_OBJECT RETURN VARCHAR2,
MEMBER FUNCTION GET_WHEN_CONDITION RETURN VARCHAR2,
MEMBER PROCEDURE SET_REALM(realm IN VARCHAR2),
MEMBER PROCEDURE ADD_ACLS(acl      IN VARCHAR2),
MEMBER PROCEDURE ADD_ACLS(acl_list IN XS$NAME_LIST),
MEMBER PROCEDURE SET_ACLS(acl_list IN XS$NAME_LIST),
MEMBER PROCEDURE SET_DYNAMIC,
MEMBER PROCEDURE SET_STATIC,
MEMBER PROCEDURE ADD_KEYS(key IN XS$KEY_TYPE),
MEMBER PROCEDURE ADD_KEYS(key_list IN XS$KEY_LIST),
MEMBER PROCEDURE SET_KEYS(key_list IN XS$KEY_LIST),
MEMBER PROCEDURE SET_PARENT_SCHEMA(parent_schema IN VARCHAR2),
MEMBER PROCEDURE SET_PARENT_OBJECT(parent_object IN VARCHAR2),
MEMBER PROCEDURE SET_WHEN_CONDITION(when_condition IN VARCHAR2)
);
-- Create a list of realm constraint type
CREATE OR REPLACE TYPE XS$REALM_CONSTRAINT_LIST AS VARRAY(1000)
                       OF XS$REALM_CONSTRAINT_TYPE;
-- Create a type for column(attribute) security
CREATE OR REPLACE TYPE XS$COLUMN_CONSTRAINT_TYPE AS OBJECT (
-- column list
column_list        XS$LIST,
-- privilege for column security
privilege          VARCHAR2(261),
-- Constructor function
CONSTRUCTOR FUNCTION XS$COLUMN_CONSTRAINT_TYPE
                     (column_list  IN XS$LIST,
                      privilege    IN VARCHAR2)
                      return SELF AS RESULT,
MEMBER FUNCTION GET_COLUMNS RETURN XS$LIST,
MEMBER FUNCTION GET_PRIVILEGE RETURN VARCHAR2,
MEMBER PROCEDURE ADD_COLUMNS(column IN VARCHAR2),
MEMBER PROCEDURE ADD_COLUMNS(column_list IN XS$LIST),
MEMBER PROCEDURE SET_COLUMNS(column_list IN XS$LIST),
MEMBER PROCEDURE SET_PRIVILEGE(privilege IN VARCHAR2)
);
-- Create a list of column constraint for column security
CREATE OR REPLACE TYPE XS$COLUMN_CONSTRAINT_LIST
                       IS VARRAY(1000) of XS$COLUMN_CONSTRAINT_TYPE;

XS_DATA_SECURITYサブプログラムの要約

表11-5 XS_DATA_SECURITYサブプログラムの要約

サブプログラム 簡単な説明

CREATE_POLICYプロシージャ

新規データ・セキュリティ・ポリシーを作成します。

APPEND_REALM_CONSTRAINTSプロシージャ

1つ以上のデータ・レルム制約を既存のデータ・セキュリティ・ポリシーに追加します。

REMOVE_REALM_CONSTRAINTSプロシージャ

指定されたデータ・セキュリティ・ポリシーのすべてのデータ・レルム制約を削除します。

ADD_COLUMN_CONSTRAINTSプロシージャ

1つ以上の列制約を指定されたデータ・セキュリティ・ポリシーに追加します。

REMOVE_COLUMN_CONSTRAINTSプロシージャ

データ・セキュリティ・ポリシーからすべての列制約を削除します。

CREATE_ACL_PARAMETERプロシージャ

指定されたデータ・セキュリティ・ポリシーのACLパラメータを作成します。

DELETE_ACL_PARAMETERプロシージャ

指定されたデータ・セキュリティ・ポリシーからACLパラメータを削除します。

SET_DESCRIPTIONプロシージャ

指定されたデータ・セキュリティ・ポリシーの説明文字列を設定します。

DELETE_POLICYプロシージャ

データ・セキュリティ・ポリシーを削除します。

表11-6 表またはビューでデータ・セキュリティ・ポリシーを管理するためのXS_DATA_SECURITYサブプログラムの要約

サブプログラム 簡単な説明

ENABLE_OBJECT_POLICYプロシージャ

指定された表またはビューのデータ・セキュリティ・ポリシーを有効にします。

DISABLE_OBJECT_POLICYプロシージャ

指定された表またはビューのデータ・セキュリティ・ポリシーを無効にします。

REMOVE_OBJECT_POLICYプロシージャ

指定された表またはビューを削除せずに、そこからデータ・セキュリティを削除します。

APPLY_OBJECT_POLICYプロシージャ

指定された表またはビューのデータ・セキュリティ・ポリシーを有効または再度有効にします。

この項では次のXS_DATA_SECURITYサブプログラムについて説明します。

CREATE_POLICYプロシージャ

CREATE_POLICYプロシージャは、新規データ・セキュリティ・ポリシーを作成します。

構文

XS_DATA_SECURITY.CREATE_POLICY ( 
  name                   IN VARCHAR2,
  realm_constraint_list  IN XS$REALM_CONSTRAINT_LIST,
  column_constraint_list IN XS$COLUMN_CONSTRAINT_LIST := NULL,
  description            IN VARCHAR2 :=NULL) ;

パラメータ

パラメータ 説明

name

作成するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

realm_constraint_list

データ・セキュリティ・ポリシーによって保護される行を決定するデータ・レルム制約のリスト。

column_constraint_list

これはオプションです。保護する属性と権限のリスト。

description

データ・セキュリティ・ポリシーのオプションの説明。

次の例は、USER1.EMPLOYEES_DSというデータ・セキュリティ・ポリシーを作成します。データ・レルム制約を使用して、部門番号60および100に関連するデータを保護します。また、SALARY列(属性)へのアクセスは列制約を使用して制限されます。

DECLARE
  realm_cons XS$REALM_CONSTRAINT_LIST;      
  column_cons XS$COLUMN_CONSTRAINT_LIST;
BEGIN  
  realm_cons := 
    XS$REALM_CONSTRAINT_LIST(
      XS$REALM_CONSTRAINT_TYPE(realm=> 'DEPARTMENT_ID in (60, 100)',
                               acl_list=> XS$NAME_LIST('HRACL')));
  
  column_cons := 
    XS$COLUMN_CONSTRAINT_LIST(
      XS$COLUMN_CONSTRAINT_TYPE(column_list=> XS$LIST('SALARY'),
                            privilege=> 'VIEW_SENSITIVE_INFO'));
 
  SYS.XS_DATA_SECURITY.CREATE_POLICY(
          name=>'USER1.EMPLOYEES_DS',
          realm_constraint_list=>realm_cons,
          column_constraint_list=>column_cons);
END;

APPEND_REALM_CONSTRAINTSプロシージャ

APPEND_REALM_CONSTRAINTSプロシージャは、1つ以上のデータ・レルム制約を既存のデータ・セキュリティ・ポリシーに追加します。

構文

XS_DATA_SECURITY.APPEND_REALM_CONSTRAINTS (
  policy           IN VARCHAR2,
  realm_constraint IN XS$REALM_CONSTRAINT_TYPE);

XS_DATA_SECURITY.APPEND_REALM_CONSTRAINTS (
  policy                IN VARCHAR2,
  realm_constraint_list IN XS$REALM_CONSTRAINT_LIST);

パラメータ

パラメータ 説明

policy

データ・レルム制約を追加するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

realm_constraint

データ・セキュリティ・ポリシーに追加するデータ・レルム制約。

realm_constraint_list

データ・セキュリティ・ポリシーに追加するデータ・レルム制約のリスト。

次の例は、新規データ・レルム制約をEMPLOYEES_DSデータ・セキュリティ・ポリシーに追加します。

DECLARE
  realm_cons XS$REALM_CONSTRAINT_TYPE;      
BEGIN  
  realm_cons := 
      XS$REALM_CONSTRAINT_TYPE(realm=> 'DEPARTMENT_ID in (40, 50)',
                               acl_list=> XS$NAME_LIST('HRACL'));
 
  SYS.XS_DATA_SECURITY.APPEND_REALM_CONSTRAINTS(
          policy=>'EMPLOYEES_DS',
          realm_constraint=>realm_cons);
END;

REMOVE_REALM_CONSTRAINTSプロシージャ

REMOVE_REALM_CONSTRAINTSプロシージャは、データ・セキュリティ・ポリシーからすべてのデータ・レルム制約を削除します。

構文

XS_DATA_SECURITY.REMOVE_REALM_CONSTRAINTS (
  policy IN VARCHAR2);

パラメータ

パラメータ 説明

policy

データ・レルム制約を削除するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

次の例は、EMPLOYEES_DSデータ・セキュリティ・ポリシーからすべてのデータ・レルム制約を削除します。

BEGIN 
  SYS.XS_DATA_SECURITY.REMOVE_REALM_CONSTRAINTS('EMPLOYEES_DS');
END; 

ADD_COLUMN_CONSTRAINTSプロシージャ

ADD_COLUMN_CONSTRAINTSプロシージャは、1つ以上の列制約をデータ・セキュリティ・ポリシーに追加します。

構文

XS_DATA_SECURITY.ADD_COLUMN_CONSTRAINTS (
  policy            IN VARCHAR2,
  column_constraint IN XS$COLUMN_CONSTRAINT_TYPE);

XS_DATA_SECURITY.ADD_COLUMN_CONSTRAINTS (
  policy                 IN VARCHAR2,
  column_constraint_list IN XS$COLUMN_CONSTRAINT_LIST);

パラメータ

パラメータ 説明

policy

属性制約を追加するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

column_constraint

追加する列制約。

column_constraint_list

追加する列制約のリスト。

次の例は、COMMISSION_PCT列に対する列制約をEMPLOYEES_DSデータ・セキュリティ・ポリシーに追加します。

DECLARE
  column_cons XS$COLUMN_CONSTRAINT_TYPE;
BEGIN  
  column_cons := 
      XS$COLUMN_CONSTRAINT_TYPE(column_list=> XS$LIST('COMMISSION_PCT'),
                            privilege=> 'VIEW_SENSITIVE_INFO');
 
  SYS.XS_DATA_SECURITY.ADD_COLUMN_CONSTRAINTS(
          policy=>'EMPLOYEES_DS',
          column_constraint=>column_cons);
END;

REMOVE_COLUMN_CONSTRAINTSプロシージャ

REMOVE_COLUMN_CONSTRAINTSプロシージャは、データ・セキュリティ・ポリシーからすべての列制約を削除します。

構文

XS_DATA_SECURITY.REMOVE_COLUMN_CONSTRAINTS (
  policy IN VARCHAR2,);

パラメータ

パラメータ 説明

policy

列制約を削除するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

次の例は、EMPLOYEES_DSデータ・セキュリティ・ポリシーからすべての列制約を削除します。

BEGIN 
  SYS.XS_DATA_SECURITY.REMOVE_COLUMN_CONSTRAINTS('EMPLOYEES_DS');
END; 

CREATE_ACL_PARAMETERプロシージャ

CREATE_ACL_PARAMETERプロシージャは、データ・セキュリティ・ポリシーのACLパラメータを作成します。

構文

XS_DATA_SECURITY.CREATE_ACL_PARAMETER (
  policy     IN VARCHAR2,
  parameter  IN VARCHAR2,
  param_type IN NUMBER);

パラメータ

パラメータ 説明

policy

ACLパラメータを作成する必要のあるデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

parameter

作成するACLパラメータの名前。

param_type

パラメータのデータ型。これは1 (NUMBER)または2 (VARCHAR)です。

次の例は、DEPT_POLICYというACLパラメータをEMPLOYEES_DSデータ・セキュリティ・ポリシーに対して作成します。

BEGIN 
  SYS.XS_DATA_SECURITY.CREATE_ACL_PARAMETER('EMPLOYEES_DS','DEPT_POLICY',1);
END; 

DELETE_ACL_PARAMETERプロシージャ

DELETE_ACL_PARAMETERプロシージャは、データ・セキュリティ・ポリシーのACLパラメータを削除します。

構文

XS_DATA_SECURITY.DELETE_ACL_PARAMETER (
  policy                IN VARCHAR2,
  parameter             IN VARCHAR2,
  delete_option         IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);

パラメータ

パラメータ 説明

policy

ACLパラメータを削除するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

parameter

削除するACLパラメータの名前。

delete_option

使用する削除オプション。次のオプションを使用できます。

  • DEFAULT_OPTION (デフォルト):

    デフォルト・オプションでは、他で参照されていない場合にのみACLパラメータを削除できます。ACLパラメータを参照する他のエンティティがある場合は、ACLパラメータを削除できません。

  • CASCADE_OPTION:

    カスケード・オプションは、ACLパラメータをそれに対する参照とともに削除します。セキュリティ・クラスを削除するユーザーには、これらの参照を削除する権限も必要です。

  • ALLOW_INCONSISTENCIES_OPTION:

    不整合の許可オプションでは、他のエンティティからエンティティへの遅延バインド参照がある場合でもそのエンティティを削除できます。エンティティが前の依存性の一部である場合は、削除が失敗し、エラーが生成されます。

次の例は、デフォルト・オプションを使用してDEPT_POLICY ACLパラメータをEMPLOYEES_DSデータ・セキュリティ・ポリシーから削除します。

BEGIN
  SYS.XS_DATA_SECURITY.DELETE_ACL_PARAMETER('EMPLOYEES_DS','DEPT_POLICY',
                                            XS_ADMIN_UTIL.DEFAULT_OPTION);
END; 

SET_DESCRIPTIONプロシージャ

SET_DESCRPTIONプロシージャは、指定されたデータ・セキュリティ・ポリシーの説明文字列を設定します。

構文

XS_DATA_SECURITY.SET_DESCRIPTION (
  policy         IN VARCHAR2,
  description    IN VARCHAR2);

パラメータ

パラメータ 説明

policy

説明を設定するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

description

指定されたデータ・セキュリティ・ポリシーの説明文字列。

次の例は、EMPLOYEES_DSデータ・セキュリティ・ポリシーの説明文字列を設定します。

BEGIN 
  SYS.XS_DATA_SECURITY.SET_DESCRIPTION('EMPLOYEES_DS',
                                       'Data Security Policy for HR.EMPLOYEES');
END; 

DELETE_POLICYプロシージャ

DELETE_POLICYプロシージャは、データ・セキュリティ・ポリシーを削除します。

構文

XS_DATA_SECURITY.DELETE_POLICY( 
  policy        IN VARCHAR2,
  delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION); 

パラメータ

パラメータ 説明

policy

削除するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

delete_option

使用する削除オプション。セキュリティ・ポリシーに対して、次のオプションの動作は同じです。

  • DEFAULT_OPTION:

    デフォルト・オプションでは、他で参照されていない場合にのみデータ・セキュリティ・ポリシーを削除できます。データ・セキュリティ・ポリシーを参照する他のエンティティがある場合は、データ・セキュリティ・ポリシーを削除できません。

  • CASCADE_OPTION:

    カスケード・オプションは、データ・セキュリティ・ポリシーをそれに対する参照とともに削除します。データ・セキュリティ・ポリシーを削除するユーザーは、これらの参照も削除します。

  • ALLOW_INCONSISTENCIES_OPTION:

    不整合の許可オプションでは、他のエンティティからエンティティへの遅延バインド参照がある場合でもそのエンティティを削除できます。エンティティが前の依存性の一部である場合は、削除が失敗し、エラーが生成されます。

次の例は、デフォルト・オプションを使用してEMPLOYEES_DSデータ・セキュリティ・ポリシーを削除します。

BEGIN
  SYS.XS_DATA_SECURITY.DELETE_POLICY('EMPLOYEES_DS',
                                        XS_ADMIN_UTIL.DEFAULT_OPTION); 
END;

ENABLE_OBJECT_POLICYプロシージャ

ENABLE_OBJECT_POLICYプロシージャは、指定された表またはビューのデータ・セキュリティ・ポリシーを有効にします。ENABLE_OBJECT_POLICYは、表またはビューに対してACLベースの行レベル・データ・セキュリティ・ポリシーを有効にします。

影響する表に対してインポートまたはエクスポートを実行した後で、またはデバッグの目的で、データ・セキュリティ・ポリシーを有効にすることが必要な場合があります。

現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。

ポリシーの強制前に、APPLY_SEC_POLICY権限に対するチェックが実行されます。

構文

XS_DATA_SECURITY.ENABLE_OBJECT_POLICY (
 policy  IN VARCHAR2,
 schema  IN VARCHAR2,
 object  IN VARCHAR2);

パラメータ

パラメータ 説明

policy

有効にするデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

schema

有効にする表またはビューを含むスキーマの名前。

object

データ・セキュリティ・ポリシーを有効にする表またはビューの名前。

次の例は、salesスキーマのproducts表に対してXDSを有効にします。

BEGIN
  SYS.XS_DATA_SECURITY.ENABLE_OBJECT_POLICY(policy =>'CUST_DS', schema=>'sales', object=>'products');
END;

DISABLE_OBJECT_POLICYプロシージャ

DISABLE_OBJECT_POLICYプロシージャは、指定された表またはビューのデータ・セキュリティ・ポリシーを無効にします。DISABLE_OBJECT_POLICYは、表またはビューに対してACLベースの行レベル・データ・セキュリティ・ポリシーを無効にします。

影響する表に対してインポートまたはエクスポートを実行する場合、またはデバッグの目的で、Real Application Securityを無効にすることが必要な場合があります。

現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。

ポリシーの強制前に、APPLY_SEC_POLICY権限に対するチェックが実行されます。

構文

XS_DATA_SECURITY.DISABLE_OBJECT_POLICY (
 policy  IN VARCHAR2,
 schema  IN VARCHAR2,
 object  IN VARCHAR2);

パラメータ

パラメータ 説明

policy

無効にするデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

schema

無効にする表またはビューを含むスキーマの名前。

object

データ・セキュリティ・ポリシーを無効にする表またはビューの名前。

次の例は、salesスキーマのproducts表に対してXDSを無効にします。

BEGIN
  SYS.XS_DATA_SECURITY.DISABLE_OBJECT_POLICY(policy =>'CUST_DS', schema=>'sales', object=>'products');
END;

REMOVE_OBJECT_POLICYプロシージャ

REMOVE_OBJECT_POLICYプロシージャは、指定された表またはビューを削除せずに、そこからデータ・セキュリティ・ポリシーを削除します。REMOVE_OBJECT_POLICYは、静的データ・レルム制約でENABLE_XDSによって作成されたACLマテリアライズド・ビューを削除します。

現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。

ポリシーの強制前に、APPLY_SEC_POLICY権限に対するチェックが実行されます。

構文

XS_DATA_SECURITY.REMOVE_OBJECT_POLICY (
 policy  IN VARCHAR2,
 schema  IN VARCHAR2,
 object  IN VARCHAR2);

パラメータ

パラメータ 説明

policy

削除するデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

schema

データ・セキュリティ・ポリシーを削除する表またはビューを含むスキーマの名前。

object

データ・セキュリティ・ポリシーを削除する表またはビューの名前

次の例は、salesスキーマのproducts表からCUST_DSデータ・セキュリティ・ポリシーを削除します。

BEGIN 
  SYS.XS_DATA_SECURITY.REMOVE_OBJECT_POLICY(policy=>'CUST_DS', schema=>'sales', object=>'products');
END;

APPLY_OBJECT_POLICYプロシージャ

APPLY_OBJECT_POLICYプロシージャは、指定されたデータベース表またはビューのデータ・セキュリティ・ポリシーを有効または再度有効にします。

現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。

ポリシーの強制前に、APPLY_SEC_POLICY権限に対するチェックが実行されます。

構文

XS_DATA_SECURITY.APPLY_OBJECT_POLICY (
 policy          IN VARCHAR2,
 schema          IN VARCHAR2, 
 object          IN VARCHAR2, 
 row_acl         IN BOOLEAN DEFAULT FALSE,
 owner_bypass    IN BOOLEAN DEFAULT FALSE,
 statement_types IN VARCHAR2 DEFAULT NULL,
 aclmv           IN VARCHAR2 DEFAULT NULL );

パラメータ

パラメータ 説明

policy

有効にするデータ・セキュリティ・ポリシーの名前。

名前は、SCOTT.POLICY1のようにスキーマで修飾されます。名前のスキーマ部分がない場合は、現在のセッション・スキーマが想定されます。たとえば、この同じ例では、名前がPOLICY1として指定され、現在のスキーマがSCOTTの場合に、SCOTT.POLICY1に解決されます。

schema

有効または再度有効にするリレーショナル表またはビューを含むスキーマの名前。

object

データ・セキュリティ・ポリシーを有効または再度有効にするリレーショナル表またはビューの名前。

row_acl

デフォルトはFALSEです。TRUEに設定されている場合は、非表示の列SYS_ACLODを作成します。

owner_bypass

オブジェクトの所有者はデータ・セキュリティ・ポリシーをバイパスできます。デフォルトはFALSEです。

statement_types

タイプは、SELECTINSERTUPDATEDELETEおよびINDEXです。

アプリケーション・セキュリティにより、表の行を更新する必要があり、同じ表の特定の列への読取りアクセスも制限される場合は、2つのAPPLY_OBJECT_POLICYプロシージャを使用して各データ・セキュリティ・ポリシーを施行し、各ポリシーを正確に施行する必要があります。たとえば、一方のAPPLY_OBJECT_POLICYプロシージャでは表の行を更新するために必要なDML statement_typesを施行し(INSERTUPDATEDELETEなど)、他方のAPPLY_OBJECT_POLICYプロシージャでは列制約のためにSELECTstatement_typesのみを施行します。

aclmv

静的ACL情報をメンテナンスするユーザー提供のMV名を指定します。MVには、TABLEROWIDACLIDLISTの2つの列があります。aclmvのデフォルト値はNULLです。

次の例は、HRスキーマのEMP表に対してDEPT_POLICYデータ・セキュリティ・ポリシーを有効にします。

BEGIN
  sys.xs_data_security.apply_object_policy(
           policy => 'HR.EMPLOYEES_DS',
           schema => 'HR',
           object => 'EMPLOYEES',
           statement_types => 'SELECT',
           owner_bypass => true);
END;