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;