XS_SECURITY_CLASSパッケージ
XS_SECURITY_CLASSパッケージには、セキュリティ・クラスおよびその権限を作成、管理および削除するためのプロシージャが含まれます。パッケージには、セキュリティ・クラスの継承を管理するためのプロシージャも含まれます。
XS_SECURITY_CLASSパッケージのセキュリティ・モデル
XS_SECURITY_CLASSパッケージは、SYSスキーマに作成されます。すべてのスキーマのACL、セキュリティ・クラス、セキュリティ・ポリシーなどのスキーマ・オブジェクトを管理できるADMIN_ANY_SEC_POLICYがDBAロールに付与されます。
ユーザーは、スキーマに対するRESOURCEロールを付与されている場合に、自身のスキーマ内のスキーマ・オブジェクトを管理できます。RESOURCEロールおよびXS_RESOURCEアプリケーション・ロールには、アプリケーション内のポリシー管理を達成するために、スキーマ内のスキーマ・オブジェクトの管理および権限付与されたスキーマ内のポリシー・アーティファクトの管理に必要な、ADMIN_SEC_POLICY権限が含まれます。
APPLY_SEC_POLICY権限を付与されたユーザーは、スキーマに対するポリシー強制を管理できます。この権限を持つユーザーは、権限付与されたスキーマ内のポリシー強制を管理して、アプリケーション内のポリシー管理を達成できます。
XS_SECURITY_CLASSサブプログラムの要約
表11-11 XS_SECURITY_CLASSサブプログラムの要約
| サブプログラム | 説明 |
|---|---|
|
新規セキュリティ・クラスを作成します。 |
|
|
指定されたセキュリティ・クラスに1つ以上の親セキュリティ・クラスを追加します。 |
|
|
指定されたセキュリティ・クラスの1つ以上の親セキュリティ・クラスを削除します。 |
|
|
指定されたセキュリティ・クラスに1つ以上の権限を追加します。 |
|
|
指定されたセキュリティ・クラスの1つ以上の権限を削除します。 |
|
|
指定された集約権限に1つ以上の暗黙の権限を追加します。 |
|
|
集約権限から1つ以上の暗黙の権限を削除します。 |
|
|
指定されたセキュリティ・クラスの説明文字列を設定します。 |
|
|
指定されたセキュリティ・クラスを削除します。 |
この項では次のXS_SECURITY_CLASSサブプログラムについて説明します。
CREATE_SECURITY_CLASSプロシージャ
CREATE_SECURITY_CLASSは新規セキュリティ・クラスを作成します。
構文
XS_SECURITY_CLASS.CREATE_SECURITY_CLASS ( name IN VARCHAR2, priv_list IN XS$PRIVILEGE_LIST, parent_list IN XS$NAME_LIST := NULL, description IN VARCHAR2 := NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成するセキュリティ・クラスの名前。 名前は、 |
|
|
セキュリティ・クラスに含める権限のリスト。 |
|
|
セキュリティ・クラスが継承される親セキュリティ・クラスのリスト。これはオプションです。 |
|
|
セキュリティ・クラスのオプションの説明。 |
例
次の例は、HRPRIVSというセキュリティ・クラスを作成します。セキュリティ・クラスには、priv_listで定義されている権限のセットが含まれます。セキュリティ・クラスは、DMLクラスを親セキュリティ・クラスとして使用します。
DECLARE
pr_list XS$PRIVILEGE_LIST;
BEGIN
pr_list :=XS$PRIVILEGE_LIST(
XS$PRIVILEGE(name=>'VIEW_SENSITIVE_INFO'),
XS$PRIVILEGE(name=>'UPDATE_INFO',
implied_priv_list=>XS$NAME_LIST
('"UPDATE"', '"DELETE"', '"INSERT"')));
SYS.XS_SECURITY_CLASS.CREATE_SECURITY_CLASS(
name=>'HRPRIVS',
priv_list=>pr_list,
parent_list=>XS$NAME_LIST('DML'));
END;ADD_PARENTSプロシージャ
ADD_PARENTSプロシージャは、指定されたセキュリティ・クラスに1つ以上の親セキュリティ・クラスを追加します。
構文
XS_SECURITY_CLASS.ADD_PARENTS ( sec_class IN VARCHAR2, parent IN VARCHAR2); XS_SECURITY_CLASS.ADD_PARENTS ( sec_class IN VARCHAR2, parent_list IN XS$NAME_LIST);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
親クラスが追加されるセキュリティ・クラスの名前。 名前は、 |
|
|
追加される親セキュリティ・クラスの名前。 |
|
|
追加する親クラスのリスト。 |
例
次の例は、親セキュリティ・クラスGENPRIVSをHRPRIVSセキュリティ・クラスに追加します。
BEGIN
SYS.XS_SECURITY_CLASS.ADD_PARENTS('HRPRIVS','GENPRIVS');
END;REMOVE_PARENTSプロシージャ
REMOVE_PARENTSプロシージャは、指定されたセキュリティ・クラスの1つ以上の親クラスを削除します。
構文
XS_SECURITY_CLASS.REMOVE_PARENTS ( sec_class IN VARCHAR2); XS_SECURITY_CLASS.REMOVE_PARENTS ( sec_class IN VARCHAR2, parent IN VARCHAR2); XS_SECURITY_CLASS.REMOVE_PARENTS ( sec_class IN VARCHAR2, parent_list IN XS$NAME_LIST);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
親クラスが削除されるセキュリティ・クラスの名前。 名前は、 |
|
|
削除する親セキュリティ・クラス。 |
|
|
削除する親セキュリティ・クラスのリスト。 |
例
次の例は、親セキュリティ・クラスGENPRIVSをHRPRIVSセキュリティ・クラスから削除します。
BEGIN
SYS.XS_SECURITY_CLASS.REMOVE_PARENTS('HRPRIVS','GENPRIVS');
END;ADD_PRIVILEGESプロシージャ
ADD_PRIVILEGESプロシージャは、セキュリティ・クラスに1つ以上の権限を追加します。
構文
XS_SECURITY_CLASS.ADD_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2, implied_priv_list IN XS$NAME_LIST := NULL, description IN VARCHAR2 := NULL); XS_SECURITY_CLASS.ADD_PRIVILEGES ( sec_class IN VARCHAR2, priv_list IN XS$PRIVILEGE_LIST);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
権限が追加されるセキュリティ・クラスの名前。 名前は、 |
|
|
追加する権限の名前。 |
|
|
追加する権限のリスト。 |
|
|
追加される暗黙の権限のオプションのリスト。 |
|
|
追加される権限のオプションの説明。 |
例
次の例は、UPDATE_INFOという集約権限をHRPRIVSセキュリティ・クラスに追加します。集約権限には、暗黙の権限UPDATE、DELETEおよびINSERTが含まれます。
BEGIN
SYS.XS_SECURITY_CLASS.ADD_PRIVILEGES(sec_class=>'HRPRIVS',priv=>'UPDATE_INFO',
implied_priv_list=>XS$NAME_LIST('"UPDATE"',
'"DELETE"', '"INSERT"'));
END;REMOVE_PRIVILEGESプロシージャ
REMOVE_PRIVILEGESプロシージャは、指定されたセキュリティ・クラスから1つ以上の権限を削除します。権限名またはリストが指定されていない場合は、指定されたセキュリティ・クラスからすべての権限が削除されます。
構文
XS_SECURITY_CLASS.REMOVE_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2); XS_SECURITY_CLASS.REMOVE_PRIVILEGES ( sec_class IN VARCHAR2, priv_list IN XS$NAME_LIST); XS_SECURITY_CLASS.REMOVE_PRIVILEGES ( sec_class IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
権限が削除されるセキュリティ・クラスの名前。 名前は、 |
|
|
削除する権限の名前。 |
|
|
削除する権限のリスト。 |
例
次の例は、UPDATE_INFO権限をHRPRIVSセキュリティ・クラスから削除します。
BEGIN
SYS.XS_SECURITY_CLASS.REMOVE_PRIVILEGES('HRPRIVS','UPDATE_INFO');
END;
次の例は、HRPRIVSセキュリティ・クラスからすべての権限を削除します。
BEGIN
SYS.XS_SECURITY_CLASS.REMOVE_PRIVILEGES('HRPRIVS');
END;ADD_IMPLIED_PRIVILEGESプロシージャ
ADD_IMPLIED_PRIVILEGESプロシージャは、集約権限に1つ以上の暗黙の権限を追加します。
構文
XS_SECURITY_CLASS.ADD_IMPLIED_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2, implied_priv IN VARCHAR2); XS_SECURITY_CLASS.ADD_IMPLIED_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2, implied_priv_list IN XS$NAME_LIST);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
権限が追加されるセキュリティ・クラスの名前。 名前は、 |
|
|
暗黙の権限が追加される集約権限の名前。 |
|
|
追加する暗黙の権限。 |
|
|
集約権限に追加する暗黙の権限のリスト。 |
例
次の例は、集約権限UPDATE_INFOの暗黙の権限のリストをHRPRIVSセキュリティ・クラスに追加します。
BEGIN
SYS.XS_SECURITY_CLASS.ADD_IMPLIED_PRIVILEGES(sec_class=>'HRPRIVS', priv=>'UPDATE_INFO', implied_priv_list=>XS$NAME_LIST('"UPDATE"', '"DELETE"', '"INSERT"'));
END;REMOVE_IMPLIED_PRIVILEGESプロシージャ
REMOVE_IMPLIED_PRIVILEGESプロシージャは、集約権限から指定された暗黙の権限を削除します。権限が指定されていない場合は、すべての暗黙の権限が集約権限から削除されます。
構文
XS_SECURITY_CLASS.REMOVE_IMPLIED_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2, implied_priv IN VARCHAR2); XS_SECURITY_CLASS.REMOVE_IMPLIED_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2, implied_priv_list IN XS$NAME_LIST); XS_SECURITY_CLASS.REMOVE_IMPLIED_PRIVILEGES ( sec_class IN VARCHAR2, priv IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
権限が削除されるセキュリティ・クラスの名前。 名前は、 |
|
|
暗黙の権限が削除される集約権限の名前。 |
|
|
集約権限から削除する暗黙の権限。 |
|
|
集約権限から削除する暗黙の権限のリスト。 |
例
次の例は、集約権限UPDATE_INFOの暗黙の権限DELETEをHRPRIVSセキュリティ・クラスから削除します。
BEGIN
SYS.XS_SECURITY_CLASS.REMOVE_IMPLIED_PRIVILEGES('HRPRIVS','UPDATE_INFO','"DELETE"');
END;
次の例は、集約権限UPDATE_INFOのすべての暗黙の権限をHRPRIVSセキュリティ・クラスから削除します。
BEGIN
SYS.XS_SECURITY_CLASS.REMOVE_IMPLIED_PRIVILEGES('HRPRIVS','UPDATE_INFO');
END;SET_DESCRIPTIONプロシージャ
SET_DESCRIPTIONプロシージャは、指定されたセキュリティ・クラスの説明文字列を設定します。
構文
XS_SECURITY_CLASS.SET_DESCRIPTION ( sec_class IN VARCHAR2, description IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
説明を設定するセキュリティ・クラスの名前。 名前は、 |
|
|
指定されたセキュリティ・クラスの説明文字列。 |
例
次の例は、HRPRIVSセキュリティ・クラスの説明文字列を設定します。
BEGIN
SYS.XS_SECURITY_CLASS.SET_DESCRIPTION(
'HRPRIVS','Contains privileges required to manage HR data');
END;DELETE_SECURITY_CLASSプロシージャ
DELETE_SECURITY_CLASSプロシージャは、指定されたセキュリティ・クラスを削除します。
構文
XS_SECURITY_CLASS.DELETE_SECURITY_CLASS ( sec_class IN VARCHAR2, delete_option IN NUMBER:=XS_ADMIN_UTIL.DEFAULT_OPTION);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除するセキュリティ・クラスの名前。 名前は、 |
|
|
使用する削除オプション。次のオプションを使用できます。
|
例
次の例は、デフォルト・オプションを使用してHRPRIVSセキュリティ・クラスを削除します。
BEGIN
SYS.XS_SECURITY_CLASS.DELETE_SECURITY_CLASS('HRPRIVS',XS_ADMIN_UTIL.DEFAULT_OPTION);
END;