XS_ACLパッケージ
XS_ACLパッケージは、アクセス制御リスト(ACL)を作成および管理するプロシージャを作成します。
XS_ACLパッケージのセキュリティ・モデル
すべてのスキーマのACL、セキュリティ・クラス、セキュリティ・ポリシーなどのスキーマ・オブジェクトを管理できるADMIN_ANY_SEC_POLICY権限がDBAロールに付与されます。
ユーザーは、スキーマに対するRESOURCEロールを付与されている場合に、自身のスキーマ内のスキーマ・オブジェクトを管理できます。RESOURCEロールおよびXS_RESOURCEアプリケーション・ロールには、アプリケーション内のポリシー管理を達成するために、スキーマ内のスキーマ・オブジェクトの管理および権限付与されたスキーマ内のポリシー・アーティファクトの管理に必要な、ADMIN_SEC_POLICY権限が含まれます。
APPLY_SEC_POLICY権限を付与されたユーザーは、スキーマに対するポリシー強制を管理できます。この権限を持つユーザーは、権限付与されたスキーマ内のポリシー強制を管理して、アプリケーション内のポリシー管理を達成できます。
定数
EXTENDED CONSTANT PLS_INTEGER := 1; CONSTRAINED CONSTANT PLS_INTEGER := 2;
次の定数はプリンシパルのタイプを定義します。
PTYPE_XS CONSTANT PLS_INTEGER := 1; PTYPE_DB CONSTANT PLS_INTEGER := 2; PTYPE_DN CONSTANT PLS_INTEGER := 3; PTYPE_EXTERNAL CONSTANT PLS_INTEGER := 4;
次の定数はパラメータの値タイプを定義します。
TYPE_NUMBER CONSTANT PLS_INTEGER := 1; TYPE_VARCHAR CONSTANT PLS_INTEGER := 2;
オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT文が定義されています。
-- Type definition for ACE
CREATE OR REPLACE TYPE XS$ACE_TYPE AS OBJECT (
-- Member Variables
privilege_list XS$NAME_LIST,
is_grant_ace NUMBER,
is_invert_principal NUMBER,
principal_name VARCHAR2(130),
principal_type NUMBER,
start_date TIMESTAMP WITH TIME ZONE,
end_date TIMESTAMP WITH TIME ZONE,
CONSTRUCTOR FUNCTION XS$ACE_TYPE (
privilege_list IN XS$NAME_LIST,
granted IN BOOLEAN := TRUE,
inverted IN BOOLEAN := FALSE,
principal_name IN VARCHAR2,
principal_type IN PLS_INTEGER := 1,
start_date IN TIMESTAMP WITH TIME ZONE := NULL,
end_date IN TIMESTAMP WITH TIME ZONE := NULL)
RETURN SELF AS RESULT,
MEMBER PROCEDURE set_privileges(privilege_list IN XS$NAME_LIST),
MEMBER FUNCTION get_privileges RETURN XS$NAME_LIST,
MEMBER PROCEDURE set_grant(granted IN BOOLEAN),
MEMBER FUNCTION is_granted RETURN BOOLEAN,
MEMBER PROCEDURE set_inverted_principal(inverted IN BOOLEAN),
MEMBER FUNCTION is_inverted_principal RETURN BOOLEAN,
MEMBER PROCEDURE set_principal(principal_name IN VARCHAR2),
MEMBER FUNCTION get_principal RETURN VARCHAR2,
MEMBER PROCEDURE set_principal_type (principal_type IN PLS_INTEGER),
MEMBER FUNCTION get_principal_type RETURN PLS_INTEGER,
MEMBER PROCEDURE set_start_date(start_date IN TIMESTAMP WITH TIME ZONE),
MEMBER FUNCTION get_start_date RETURN TIMESTAMP WITH TIME ZONE,
MEMBER PROCEDURE set_end_date(end_date IN TIMESTAMP WITH TIME ZONE),
MEMBER FUNCTION get_end_date RETURN TIMESTAMP WITH TIME ZONE
);
CREATE OR REPLACE TYPE XS$ACE_LIST AS VARRAY(1000) OF XS$ACE_TYPE;
XS_ACLサブプログラムの要約
表11-3 XS_ACLサブプログラムの要約
| サブプログラム | 説明 |
|---|---|
|
アクセス制御リスト(ACL)を作成します。 |
|
|
1つ以上のアクセス制御エントリ(ACE)を既存のACLに追加します。 |
|
|
ACLからすべてのACEを削除します。 |
|
|
ACLのセキュリティ・クラスを設定または変更します。 |
|
|
ACLの親ACLを設定または変更します。 |
|
|
データ・セキュリティ・ポリシーのACLパラメータ値を追加します。 |
|
|
ACLのACLパラメータと値を削除します。 |
|
|
ACLの説明文字列を設定します。 |
|
|
指定されたACLを削除します。 |
この項では次のXS_ACLサブプログラムについて説明します。
CREATE_ACLプロシージャ
CREATE_ACLプロシージャは、新しいアクセス制御リスト(ACL)を作成します。
構文
XS_ACL.CREATE_ACL ( name IN VARCHAR2, ace_list IN XS$ACE_LIST, sec_class IN VARCHAR2 := NULL, parent IN VARCHAR2 := NULL, inherit_mode IN PLS_INTEGER := NULL, description IN VARCHAR2 := NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成するACLの名前。 名前は、 |
|
|
ACL内のアクセス制御エントリ(ACE)のリスト。 |
|
|
ACLのスコープまたはタイプを指定するセキュリティ・クラスの名前。セキュリティ・クラスが指定されていない場合は、 名前は、 |
|
|
親ACL名(存在する場合)。 名前は、 |
|
|
親ACLが指定されている場合に継承モード。使用できる値は |
|
|
ACLのオプションの説明。 |
例
次の例は、HRACLというACLを作成します。このACLには、ace_listに格納されたACEが含まれます。ace_listで使用される権限は、HRPRIVSセキュリティ・クラスの一部です。
DECLARE
ace_list XS$ACE_LIST;
BEGIN
ace_list := XS$ACE_LIST(
XS$ACE_TYPE(privilege_list=>XS$NAME_LIST('"SELECT"','VIEW_SENSITIVE_INFO'),
granted=>true,
principal_name=>'HRREP'),
XS$ACE_TYPE(privilege_list=>XS$NAME_LIST('UPDATE_INFO'),
granted=>true,
principal_name=>'HRMGR'));
SYS.XS_ACL.CREATE_ACL(name=>'HRACL',
ace_list=>ace_list,
sec_class=>'HRPRIVS',
description=>'HR Representative Access');
END;APPEND_ACESプロシージャ
APPEND_ACESプロシージャは、1つ以上のACEを既存のACLに追加します。
構文
XS_ACL.APPEND_ACES ( acl IN VARCHAR2, ace IN XS$ACE_TYPE); XS.ACL.APPEND_ACES ( acl IN VARCHAR2, ace_list IN XS$ACE_LIST);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ACEを追加するACLの名前。 名前は、 |
|
|
ACLに追加するACE。 |
|
|
ACLに追加するACEのリスト。 |
例
次の例は、HRACL ACLにACEを追加します。ACEによって、SELECT権限がDB_HRデータベース・ユーザーに付与されます。
DECLARE
ace_entry XS$ACE_TYPE;
BEGIN
ace_entry := XS$ACE_TYPE(privilege_list=>XS$NAME_LIST('"SELECT"'),
granted=>true,
principal_name=>'DB_HR',
principal_type=>XS_ACL.PTYPE_DB);
SYS.XS_ACL.APPEND_ACES('HRACL',ace_entry);
END;REMOVE_ACESプロシージャ
REMOVE_ACESプロシージャは、ACLからすべてのACEを削除します。
構文
XS_ACL.REMOVE_ACES ( acl IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ACEを削除するACLの名前。 名前は、 |
例
次の例は、HRACLというACLからすべてのACEを削除します。
BEGIN
SYS.XS_ACL.REMOVE_ACES('HRACL');
END;SET_SECURITY_CLASSプロシージャ
SET_SECURITY_CLASSプロシージャは、ACLのセキュリティ・クラスを設定または変更します。
構文
XS_ACL.SET_SECURITY_CLASS ( acl IN VARCHAR2, sec_class IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
セキュリティ・クラスを設定するACLの名前。 名前は、 |
|
|
ACLのスコープまたはタイプを定義するセキュリティ・クラスの名前。 名前は、 |
例
次の例は、HRPRIVSセキュリティ・クラスをHRACL ACLに関連付けます。
BEGIN
SYS.XS_ACL.SET_SECURITY_CLASS('HRACL','HRPRIVS');
END;SET_PARENT_ACLプロシージャ
SET_PARENT_ACLは、ACLの親ACLを設定または変更します。
構文
XS_ACL.SET_PARENT_ACL( acl IN VARCHAR2, parent IN VARCHAR2, inherit_mode IN PLS_INTEGER);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
親を設定する必要があるACLの名前。 名前は、 |
|
|
親ACLの名前。 名前は、 |
|
|
継承モード。これは、次のいずれかの値です。
|
例
次の例では、AllDepACL ACLをHRACL ACLの親のACLとして設定しています。継承タイプはEXTENDEDに設定されます。
BEGIN
SYS.XS_ACL.SET_PARENT_ACL('HRACL','AllDepACL',XS_ACL.EXTENDED);
END;ADD_ACL_PARAMETERプロシージャ
ADD_ACL_PARAMETERは、データ・セキュリティ・ポリシーのACLパラメータ値を追加します。
構文
XS_ACL.ADD_ACL_PARAMETER ( acl IN VARCHAR2, policy IN VARCHAR2, parameter IN VARCHAR2, value IN NUMBER); XS_ACL.ADD_ACL_PARAMETER ( acl IN VARCHAR2, policy IN VARCHAR2, parameter IN VARCHAR2, value IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
パラメータを追加するACLの名前。 名前は、 |
|
|
ACLパラメータが作成されたデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
|
データ・セキュリティ・ポリシーで定義されているACLパラメータの名前。 |
|
|
使用するACLパラメータの値。 |
例
次の例は、ACL1のREGIONパラメータを追加します。ACLパラメータが作成されるデータ・セキュリティ・ポリシーの名前はTEST_DSです。REGIONパラメータの値はWESTです。
BEGIN
SYS.XS_ACL.ADD_ACL_PARAMETER('ACL1','TEST_DS','REGION', 'WEST');
END;REMOVE_ACL_PARAMETERSプロシージャ
REMOVE_ACL_PARAMETERSは、ACLの指定されたACLパラメータを削除します。パラメータ名が指定されていない場合は、ACLのすべてのACLパラメータが削除されます。
構文
XS_ACL.REMOVE_ACL_PARAMETERS ( acl IN VARCHAR2, parameter IN VARCHAR2); XS_ACL.REMOVE_ACL_PARAMETERS ( acl IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
パラメータを削除するACLの名前。 名前は、 |
|
|
ACLから削除する必要のあるパラメータの名前。 |
例
次の例は、ACL1 ACLからREGIONパラメータを削除します。
BEGIN
XS_ACL.REMOVE_ACL_PARAMETERS('ACL1', 'REGION');
END;
次の例は、ACL1のすべてのACLパラメータを削除します。
BEGIN
SYS.XS_ACL.REMOVE_ACL_PARAMETERS('ACL1');
END;SET_DESCRIPTIONプロシージャ
SET_DESCRIPTIONプロシージャは、ACLの説明文字列を設定します。
構文
XS_ACL.SET_DESCRIPTION ( acl IN VARCHAR2, description IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
説明を設定するACLの名前。 名前は、 |
|
|
ACLの説明文字列。 |
例
次の例は、HRACL ACLの説明を設定します。
BEGIN
SYS.XS_ACL.SET_DESCRIPTION('HRACL','Grants privileges to HR representatives and
managers.');
END;DELETE_ACLプロシージャ
DELETE_ACLプロシージャは、指定されたACLを削除します。
構文
XS_ACL.DELETE_ACL ( acl IN VARCHAR2, delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除するACLの名前。 名前は、 |
|
|
使用する削除オプション。データ・セキュリティ・ポリシーに対して、次のオプションの動作は同じです。
|
例
次の例は、デフォルトの削除オプションを使用してHRACL ACLを削除します。
BEGIN
SYS.XS_ACL.DELETE_ACL('HRACL');
END;