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;