XS_PRINCIPALパッケージ
XS_PRINCIPALパッケージには、アプリケーション・プリンシパルの作成、管理および削除に使用されるプロシージャが含まれます。これらのアプリケーション・プリンシパルには、アプリケーション・ユーザー、標準アプリケーション・ロールおよび動的アプリケーション・ロールが含まれます。
定数
ACTIVE CONSTANT PLS_INTEGER := 1; INACTIVE CONSTANT PLS_INTEGER := 2; UNLOCKED CONSTANT PLS_INTEGER := 3; EXPIRED CONSTANT PLS_INTEGER := 4; LOCKED CONSTANT PLS_INTEGER := 5;
次の定数は動的ロール・スコープを定義します。
SESSION_SCOPE CONSTANT PLS_INTEGER := 0; REQUEST_SCOPE CONSTANT PLS_INTEGER := 1;
次の定数は検証機能のタイプを定義します。
XS_SHA512 CONSTANT PLS_INTEGER := 2 ; XS_SALTED_SHA1 CONSTANT PLS_INTEGER := 1 ;
オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT文が定義されています。
-- Type definition for roles granted to the principals
CREATE OR REPLACE TYPE XS$ROLE_GRANT_TYPE AS OBJECT (
-- Member Variables
-- Constants defined in other packages cannot be recognized in a type.
-- e.g. XS_ADMIN_UTIL.XSNAME_MAXLEN
-- name VARCHAR2(XS_ADMIN_UTIL.XSNAME_MAXLEN),
name VARCHAR2(130),
-- Start date of the effective date
start_date TIMESTAMP WITH TIME ZONE,
-- End date of the effective date
end_date TIMESTAMP WITH TIME ZONE,
CONSTRUCTOR FUNCTION XS$ROLE_GRANT_TYPE (
name IN VARCHAR2,
start_date IN TIMESTAMP WITH TIME ZONE:= NULL,
end_date IN TIMESTAMP WITH TIME ZONE:= NULL)
RETURN SELF AS RESULT,
MEMBER FUNCTION get_role_name RETURN VARCHAR2,
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$ROLE_GRANT_LIST AS VARRAY(1000) OF XS$ROLE_GRANT_TYPE;
XS_PRINCIPALサブプログラムの要約
表11-10 XS_PRINCIPALサブプログラムの要約
| サブプログラム | 説明 |
|---|---|
|
アプリケーション・ユーザーを作成します。 |
|
|
アプリケーション・ロールを作成します。 |
|
|
動的アプリケーション・ロールを作成します。 |
|
|
1つ以上のアプリケーション・ロールをアプリケーション・プリンシパルに付与します。 |
|
|
1つ以上のロールをアプリケーション・プリンシパルから取り消します。 |
|
|
ターゲット・アプリケーション・ユーザーのプロキシ・ユーザーを追加します。 |
|
|
ターゲット・アプリケーション・ユーザーの指定されたプロキシ・ユーザーまたはすべてのプロキシ・ユーザーを削除します。 |
|
|
データベース・ユーザーにプロキシ・アプリケーション・ユーザーを追加します。 |
|
|
データベース・ユーザーからプロキシ・アプリケーション・ユーザーを削除します。 |
|
|
アプリケーション・ユーザーまたはロールの有効日を設定または変更します。 |
|
|
動的アプリケーション・ロールの期間(分単位)を設定または変更します。 |
|
|
|
|
|
アプリケーション・ロールを有効または無効にします。 |
|
|
指定されたユーザーに直接付与されているすべてのロールを有効または無効にします。 |
|
|
アプリケーション・ユーザーのデータベース・スキーマを設定します。 |
|
|
外部ユーザーまたはロールのGUIDを設定します。 |
|
|
アプリケーション・ユーザーまたは動的ロールにReal Application Securityセッション権限を設定します。 |
|
|
アプリケーション・ユーザーのプロファイルを設定します。Real Application Securityアプリケーション・ユーザーのデータベース使用率やデータベース・インスタンス・リソースを制限する、一連のリソース制限およびパスワード・パラメータです。 |
|
|
|
|
|
アプリケーション・ユーザー・アカウントのパスワードを設定または変更します。 |
|
|
アプリケーション・ユーザー・アカウントの検証機能を設定または変更します。 |
|
|
アプリケーション・ユーザーまたはロールの説明文字列を設定します。 |
|
|
アプリケーション・ユーザーまたはロールを削除します。 |
この項では次のXS_PRINCIPALサブプログラムについて説明します。
CREATE_USERプロシージャ
CREATE_USERプロシージャは、新規アプリケーション・ユーザーを作成します。アプリケーション・ユーザーを作成するにはCREATE USERシステム権限が必要です。
DBA_XS_USERSデータ・ディクショナリ・ビューを使用して、すべてのアプリケーション・ユーザーのリストを取得できます。
構文
CREATE_USER ( name IN VARCHAR2, schema IN VARCHAR2 := NULL, status IN PLS_INTEGER := ACTIVE, start_date IN TIMESTAMP WITH TIME ZONE := NULL, end_date IN TIMESTAMP WITH TIME ZONE := NULL, guid IN RAW := NULL, external_source IN VARCHAR2 := NULL, description IN VARCHAR2 := NULL, acl IN VARCHAR2 := NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成するアプリケーション・ユーザーの名前。 |
|
|
作成時のユーザーのステータス。これは、次のいずれかの値です。
デフォルト値は 値 |
|
|
ユーザーに関連付けるデータベース・スキーマ。これはオプションです。 |
|
|
ユーザー・アカウントが有効になる日付。これはオプションです。 |
|
|
ユーザー・アカウントが無効になる日付。これはオプションです。
|
|
|
ユーザーのGUID。これは外部ユーザーに対してのみ有効です。 |
|
|
このユーザーのソースであるシステムの名前。これはオプションです。 |
|
|
ユーザー・アカウントの説明。これはオプションです。 |
|
|
Real Application Securityセッション権限。デフォルト値はプリンシパルにACLが設定されないことを意味する プリンシパルに設定するReal Application Securityセッション権限は、Real Application Securityオブジェクトの命名規則に従っている必要があり、プロシージャのコール前に存在している必要があります。 セッション権限は、セッション操作に関与しているReal Application Securityアプリケーション・ユーザーに設定されているACLに従って強制されます。たとえば、セッションの作成操作の場合、コール元でReal Application Securityアプリケーション・ユーザーに設定されているACLに プリンシパル固有のACL権限付与は、既存のシステムレベル・セッション権限付与より優先されます。権限チェックは、最初にプリンシパルに関連するACLで実行され、成功した場合は操作が続行します。権限チェックで拒否された場合、操作は権限不足エラーで失敗します。付与にも拒否にもならなかった場合、 |
例
次の例は、ユーザーを作成します。
BEGIN
SYS.XS_PRINCIPAL.CREATE_USER('TEST1');
END;
次の例は、ユーザーを作成し、ユーザーのスキーマおよび開始日も指定します。
DECLARE
st_date TIMESTAMP WITH TIME ZONE;
BEGIN
st_date := TO_TIMESTAMP_TZ('2010-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
TZH:TZM');
SYS.XS_PRINCIPAL.CREATE_USER(name=>'u2',
schema=>'scott',
start_date=>st_date);
END;CREATE_ROLEプロシージャ
CREATE_ROLEプロシージャは、新規アプリケーション・ロールを作成します。標準アプリケーション・ロールを作成するにはCREATE ROLEシステム権限が必要です。
DBA_XS_ROLESデータ・ディクショナリ・ビューを使用して、アプリケーション・ロールのリストを開始日や終了日などの属性とともに取得できます
構文
CREATE_ROLE ( name IN VARCHAR2, enabled IN BOOLEAN := FALSE, start_date IN TIMESTAMP WITH TIME ZONE := NULL, end_date IN TIMESTAMP WITH TIME ZONE := NULL, guid IN RAW := NULL, external_source IN VARCHAR2 := NULL, description IN VARCHAR2 := NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成するアプリケーション・ロールの名前。 |
|
|
作成時にロールを有効にするかどうかを指定します。デフォルト値は |
|
|
ロールが有効になる日付。これはオプションです。 |
|
|
ロールが無効になる日付。これはオプションです。
|
|
|
ロールのGUID。これは外部ロールに対してのみ適用されます。 |
|
|
このロールのソースであるシステムの名前。これはオプションです。 |
|
|
ロールの説明(オプション)。 |
例
次の例は、hrmgrというアプリケーション・ロールを作成します。
BEGIN
SYS.XS_PRINCIPAL.CREATE_ROLE('hrmgr');
END;
次の例は、hrrepというアプリケーション・ロールを作成します。また、ロールを有効にし、現在の日付をロールの開始日として割り当てます。
DECLARE
st_date TIMESTAMP WITH TIME ZONE;
BEGIN
st_date := SYSTIMESTAMP;
SYS.XS_PRINCIPAL.CREATE_ROLE(name=>'hrrep',
enabled=>true,
start_date=>st_date);
END;CREATE_DYNAMIC_ROLEプロシージャ
CREATE_DYNAMIC_ROLEプロシージャは、新しい動的アプリケーション・ロールを作成します。動的アプリケーション・ロールは、アプリケーションで定義された基準に基づいて、アプリケーションによって動的に有効または無効にできます。動的アプリケーション・ロールを作成するにはCREATE ROLEシステム権限が必要です。
DBA_XS_DYNAMIC_ROLESデータ・ディクショナリ・ビューを使用して、すべての動的アプリケーション・ロールのリストを期間などの属性とともに取得できます。
構文
CREATE_DYNAMIC_ROLE ( name IN VARCHAR2, duration IN PLS_INTEGER := NULL, scope IN PLS_INTEGER := XS_PRINCIPAL.SESSION_SCOPE, description IN VARCHAR2 := NULL, acl IN VARCHAR2 := NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成する動的アプリケーション・ロールの名前。 |
|
|
動的アプリケーション・ロールの期間(分単位)。これはオプションの属性です。 |
|
|
動的アプリケーション・ロールのスコープ属性。可能な値は |
|
|
動的アプリケーション・ロールのオプションの説明。 |
|
|
Real Application Securityセッション権限。デフォルト値はプリンシパルにACLが設定されないことを意味する プリンシパルに設定するReal Application Securityセッション権限は、Real Application Securityオブジェクトの命名規則に従っている必要があり、プロシージャのコール前に存在している必要があります。 セッション権限は、セッション操作に関与しているReal Application Security動的ロールに設定されているACLに従って強制されます。たとえば、動的ロールでの連結操作の場合、動的ロールに設定されるACLに プリンシパル固有のACL権限付与は、既存のシステムレベル・セッション権限付与より優先されます。権限チェックは、最初にプリンシパルに関連するACLで実行され、成功した場合は操作が続行します。権限チェックで拒否された場合、操作は権限不足エラーで失敗します。付与にも拒否にもならなかった場合、 |
例
次の例は、sslroleという動的アプリケーション・ロールを作成します。
BEGIN
SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE('sslrole');
END;
次の例は、reproleという動的アプリケーション・ロールを作成します。また、ロールの期間を100分として指定し、ロールのリクエスト・スコープを選択します。
BEGIN
SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE(name=>'reprole',
duration=>100,
scope=>XS_PRINCIPAL.REQUEST_SCOPE);
END;GRANT_ROLESプロシージャ
GRANT_ROLESプロシージャは、1つ以上のアプリケーション・ロールをアプリケーション・プリンシパルに付与します。アプリケーション・ロールを付与するにはGRANT ANY ROLEシステム権限が必要です。
DBA_XS_ROLE_GRANTSデータ・ディクショナリ・ビューを使用して、すべてのロール付与のリストを開始日や終了日などの詳細とともに取得できます。
構文
GRANT_ROLES ( grantee IN VARCHAR2, role IN VARCHAR2, start_date IN TIMESTAMP WITH TIME ZONE:= NULL, end_date IN TIMESTAMP WITH TIME ZONE:= NULL,); GRANT_ROLES ( grantee IN VARCHAR2, role_list IN XS$ROLE_GRANT_LIST);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ロールが付与されるプリンシパルの名前。 |
|
|
付与されるロールの名前。 |
|
|
付与するロールのリスト。 |
|
|
付与が有効になる日付。これはオプションのパラメータです。 |
|
|
付与が有効な期間の最終日。これはオプションのパラメータです。 |
例
次の例は、開始日と終了日を指定してHRREPロールをユーザーSMAVRISに付与します。
DECLARE
st_date TIMESTAMP WITH TIME ZONE;
end_date TIMESTAMP WITH TIME ZONE;
BEGIN
st_date := TO_TIMESTAMP_TZ('2010-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
TZH:TZM');
end_date := TO_TIMESTAMP_Tz('2011-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
TZH:TZM');
SYS.XS_PRINCIPAL.GRANT_ROLES('SMAVRIS', 'HRREP', st_date, end_date);
END;
次の例は、HRREPおよびHRMGRロールをユーザーSMAVRISに付与します。
DECLARE
rg_list XS$ROLE_GRANT_LIST;
BEGIN
rg_list := XS$ROLE_GRANT_LIST(XS$ROLE_GRANT_TYPE('HRREP'),
XS$ROLE_GRANT_TYPE('HRMGR'));
SYS.XS_PRINCIPAL.GRANT_ROLES('SMAVRIS', rg_list);
END;次の例では、ロールXSCONNECTをユーザーXSUSERに付与する方法を示します。この権限付与によって、ユーザーはパスワードを使用してデータベースに接続できるようになります。
XSUSER
EXEC SYS.XS_PRINCIPAL.GRANT_ROLES('XSUSER', 'XSCONNECT');REVOKE_ROLESプロシージャ
REVOKE_ROLESプロシージャは、指定された権限受領者から指定したロールを取り消します。ロールが指定されていない場合は、権限受領者からすべてのアプリケーション・ロールが取り消されます。ロールを付与または取り消すにはGRANT ANY ROLEシステム権限が必要です。
DBA_XS_ROLE_GRANTSデータ・ディクショナリ・ビューを使用して、すべてのロール付与のリストを開始日や終了日などの詳細とともに取得できます。
構文
REVOKE_ROLES ( grantee IN VARCHAR2, role IN VARCHAR2); REVOKE_ROLES ( grantee IN VARCHAR2, role_list IN XS$NAME_LIST); REVOKE_ROLES ( grantee IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ロールが取り消されるアプリケーション・プリンシパル。 |
|
|
取り消すアプリケーション・ロールの名前。 |
|
|
取り消すロール名のリスト。 |
例
次の例は、ユーザーSMAVRISからHRREPロールを取り消します。
BEGIN
XS_PRINCIPAL.REVOKE_ROLES('SMAVRIS','HRREP');
END;
次の例は、ユーザーSMAVRISからHRREPおよびHRMGRロールを取り消します。
DECLARE
role_list XS$NAME_LIST;
BEGIN
role_list := XS$NAME_LIST('HRREP','HRMGR');
SYS.XS_PRINCIPAL.REVOKE_ROLES('SMAVRIS', role_list);
END;
次の例は、付与されているすべてのロールをユーザーSMAVRISから取り消します。
BEGIN
SYS.XS_PRINCIPAL.REVOKE_ROLES('SMAVRIS');
END;ADD_PROXY_USERプロシージャ
ADD_PROXY_USERは、指定されたアプリケーション・ユーザーのターゲット・ユーザーを追加します。これにより、アプリケーション・ユーザーがターゲット・ユーザーのプロキシとして機能できます。このプロシージャには2つのシグネチャがあります。最初のシグネチャでは、target_rolesパラメータを使用して、プロキシ・ユーザーに割り当てるターゲット・ユーザーのロールのサブセットを指定できます。2番目のシグネチャでは、target_rolesパラメータがないため、ターゲット・ユーザーのすべてのロールがプロキシ・ユーザーに割り当てられます。
プロキシ・ユーザーを追加または削除するにはALTER USERシステム権限が必要です。
構文
ADD_PROXY_USER ( target_user IN VARCHAR2, proxy_user IN VARCHAR2, target_roles IN XS$NAME_LIST); ADD_PROXY_USER ( target_user IN VARCHAR2, proxy_user IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
プロキシとして機能できる対象のターゲット・アプリケーション・ユーザーの名前。 |
|
|
プロキシ・アプリケーション・ユーザーの名前。 |
|
|
プロキシ・ユーザーがプロキシとして機能できるターゲット・ユーザー・ロールのリスト。このパラメータは必須です。明示的な |
例
次の例は、ユーザーDJONESがターゲット・ユーザーSMAVRISのプロキシとして機能できるようにします。DJONESに付与されるターゲット・ロールはHRREPおよびHRMGRです。
DECLARE
pxy_roles XS$NAME_LIST;
BEGIN
pxy_roles := XS$NAME_LIST('HRREP','HRMGR');
SYS.XS_PRINCIPAL.ADD_PROXY_USER('SMAVRIS','DJONES', pxy_roles);
END;
次の例は、ターゲット・ロールに対して明示的なNULL値を渡します。つまり、ターゲット・ユーザー'SMAVRIS'のロールをプロキシ・ユーザー'DJONES'に割り当てません。
BEGIN
SYS.XS_PRINCIPAL.ADD_PROXY_USER('SMAVRIS','DJONES', NULL);
END;
次の例は、ターゲット・ユーザー'SMAVRIS'のすべてのロールをプロキシ・ユーザー'DJONES'に割り当てます。
BEGIN
SYS.XS_PRINCIPAL.ADD_PROXY_USER('SMAVRIS','DJONES');
END;
REMOVE_PROXY_USERSプロシージャ
REMOVE_PROXY_USERSプロシージャは、ターゲット・アプリケーション・ユーザーの1つまたはすべてのプロキシ・ユーザーの関連付けを解除します。関連付けられたプロキシ・ロールは、プロキシ・ユーザーに対して自動的に削除されます。
プロキシ・ユーザーを追加または削除するにはALTER USERシステム権限が必要です。
構文
REMOVE_PROXY_USERS ( target_user IN VARCHAR2); REMOVE_PROXY_USERS ( target_user IN VARCHAR2, proxy_user IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
プロキシの関連付けが解除されるターゲット・アプリケーション・ユーザー。 |
|
|
ターゲット・ユーザーから関連付けを解除する必要のあるプロキシ・アプリケーション・ユーザー。 |
例
次の例は、ターゲット・ユーザーSMAVRISのすべてのプロキシ・ユーザーを削除します。
BEGIN
SYS.XS_PRINCIPAL.REMOVE_PROXY_USERS('SMAVRIS');
END;
次の例は、プロキシ・ユーザーDJONESをターゲット・ユーザーSMAVRISから関連付け解除します。
BEGIN
SYS.XS_PRINCIPAL.REMOVE_PROXY_USERS('SMAVRIS','DJONES');
END;ADD_PROXY_TO_DBUSER
ADD_PROXY_TO_DBUSERは、指定されたターゲット・プロキシ・アプリケーション・ユーザーを指定されたデータベース・ユーザーに追加します。アプリケーション・ユーザーは直接ログオン・ユーザーである必要があります。これにより、アプリケーション・ユーザーがターゲット・データベース・ユーザーのプロキシとして機能できます。デフォルトでは、ターゲット・ユーザーに割り当てられているすべてのロールをプロキシ・ユーザーが使用できます。Oracleデータベースと同様に、ターゲット・データベース・ユーザーのデフォルト・ロールは接続後に有効になります。ターゲット・データベース・ユーザーに割り当てられているその他のロールはSET ROLE文を使用して設定できます。
プロキシ・ユーザーをデータベース・ユーザーに追加するにはALTER USERシステム権限が必要です。
構文
ADD_PROXY_TO_DBUSER ( database_user IN VARCHAR2, proxy_user IN VARCHAR2, is_external IN BOOLEAN := FALSE);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
プロキシとして機能できる対象のターゲット・データベース・ユーザーの名前。 |
|
|
プロキシ・アプリケーション・ユーザーの名前。 |
|
|
ユーザーが外部ユーザーであるか標準のReal Application Securityアプリケーション・ユーザーであるかを指定するパラメータ。 |
例
次の例は、アプリケーション・ユーザーDJONESがターゲット・データベース・ユーザーSMAVRISのプロキシとして機能できるようにします。
BEGIN
SYS.XS_PRINCIPAL.ADD_PROXY_TO_DBUSER('SMAVRIS','DJONES', TRUE);
END;REMOVE_PROXY_FROM_DBUSERプロシージャ
REMOVE_PROXY_FROM_DBUSERプロシージャは、データベース・ユーザーからプロキシ・アプリケーション・ユーザーを関連付け解除します。関連付けられたプロキシ・ロールは、アプリケーション・ユーザーから自動的に削除されます。
プロキシ・ユーザーをデータベース・ユーザーから削除するにはALTER USERシステム権限が必要です。
構文
REMOVE_PROXY_FROM_DBUSER ( database_user IN VARCHAR2, proxy_user IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
プロキシの関連付けが解除されるターゲット・データベース・ユーザー。 |
|
|
ターゲット・データベース・ユーザーから関連付けを解除する必要のあるプロキシ・アプリケーション・ユーザー。 |
例
次の例は、プロキシ・ユーザーDJONESをターゲット・データベース・ユーザーSMAVRISから関連付け解除します。
BEGIN
SYS.XS_PRINCIPAL.REMOVE_PROXY_FROM_DBUSER('SMAVRIS','DJONES');
END;SET_EFFECTIVE_DATESプロシージャ
SET_EFFECTIVE_DATESプロシージャは、アプリケーション・ユーザーまたはロールの有効日を設定または変更します。start_dateおよびend_dateの値がデフォルトでNULLとして指定されている場合、そのアプリケーション・ユーザーは現在有効ではないため、この特定のアプリケーション・ユーザーのセッションを作成することはできません。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはALTER ANY ROLEシステム権限が必要です。
構文
SET_EFFECTIVE_DATES ( principal IN VARCHAR2, start_date IN TIMESTAMP WITH TIME ZONE:= NULL, end_date IN TIMESTAMP WITH TIME ZONE:= NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
有効日を設定するアプリケーション・ユーザーまたはロールの名前。 |
|
|
有効期間の開始日。 |
|
|
有効期間の終了日。 |
例
次の例は、ユーザーDJONESの有効日を設定します。
DECLARE
st_date TIMESTAMP WITH TIME ZONE;
end_date TIMESTAMP WITH TIME ZONE;
BEGIN
st_date := TO_TIMESTAMP_TZ('2010-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
TZH:TZM');
end_date := TO_TIMESTAMP_Tz('2011-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS
TZH:TZM');
SYS.XS_PRINCIPAL.SET_EFFECTIVE_DATES(principal=>'DJONES',
start_date=>st_date,end_date=>end_date);
END;SET_DYNAMIC_ROLE_DURATIONプロシージャ
SET_DYNAMIC_ROLE_DURATIONプロシージャは、動的アプリケーション・ロールの期間を設定または変更します。期間は分で指定します。
ロールを変更するにはALTER ANY ROLEシステム権限が必要です。
構文
SET_DYNAMIC_ROLE_DURATION ( role IN VARCHAR2, duration IN PLS_INTEGER);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
動的アプリケーション・ロールの名前。 |
|
|
動的アプリケーション・ロールの期間(分単位)。この値を負の値に設定することはできません。 |
例
次の例は、reprole動的アプリケーション・ロールの期間を60分に設定します。
BEGIN
SYS.XS_PRINCIPAL.SET_DYNAMIC_ROLE_DURATION('reprole',60);
END;SET_DYNAMIC_ROLE_SCOPEプロシージャ
SET_DYNAMIC_ROLE_SCOPEプロシージャは、動的アプリケーション・ロールのスコープを設定または変更します。セッション(SESSION_SCOPE)またはリクエスト(REQUEST_SCOPE)スコープを選択できます。
ロールを変更するにはALTER ANY ROLEシステム権限が必要です。
構文
SET_DYNAMIC_ROLE_SCOPE ( role IN VARCHAR2, scope IN PLS_INTEGER);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
動的アプリケーション・ロールの名前。 |
|
|
設定する動的アプリケーション・ロールのスコープ。使用できる値は |
例
次の例は、reprole動的アプリケーション・ロールのスコープをリクエスト・スコープに設定します。
begin
SYS.XS_PRINCIPAL.SET_DYNAMIC_ROLE_SCOPE('reprole',XS_PRINCIPAL.REQUEST_SCOPE);
end;ENABLE_BY_DEFAULTプロシージャ
ENABLE_BY_DEFAULTプロシージャは、標準アプリケーション・ロールを有効または無効にします。
有効になっている場合、アプリケーション・ロールは付与先のプリンシパルに対して自動的に有効になります。無効になっている場合、アプリケーション・ロールに関連付けられている権限は、アプリケーション・ロールがプリンシパルに付与されている場合でも有効になりません。
アプリケーション・ロールを変更するにはALTER ANY ROLEシステム権限が必要です。
構文
ENABLE_BY_DEFAULT ( role IN VARCHAR2, enabled IN BOOLEAN := TRUE);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
標準アプリケーション・ロールの名前。 |
|
|
アプリケーション・ロールの |
例
次の例は、HRREPアプリケーション・ロールのenabled属性をTRUEに設定します。
BEGIN
SYS.XS_PRINCIPAL.ENABLE_BY_DEFAULT('HRREP',TRUE);
END;ENABLE_ROLES_BY_DEFAULTプロシージャ
ENABLE_ROLES_BY_DEFAULTプロシージャは、アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールを有効または無効にします。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。
構文
ENABLE_ROLES_BY_DEFAULT ( user IN VARCHAR2, enabled IN BOOLEAN := TRUE);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
アプリケーション・ユーザーの名前。 |
|
|
アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールの enabled属性を enabled属性を |
例
次の例は、アプリケーション・ユーザーSMAVRISに直接付与されているすべてのロールを有効にします。
BEGIN
SYS.XS_PRINCIPAL.ENABLE_ROLES_BY_DEFAULT('SMAVRIS',TRUE);
END;SET_USER_SCHEMAプロシージャ
SET_USER_SCHEMAプロシージャは、アプリケーション・ユーザーのデータベース・スキーマを設定します。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。
構文
SET_USER_SCHEMA ( user IN VARCHAR2, schema IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
アプリケーション・ユーザーの名前。 |
|
|
ユーザーに関連付けるデータベース・スキーマの名前。これを |
例
次の例は、HRスキーマをユーザーDJONESに関連付けます。
BEGIN
SYS.XS_PRINCIPAL.SET_USER_SCHEMA('DJONES','HR');
END;SET_GUIDプロシージャ
SET_GUIDプロシージャは、プリンシパルのGUIDを設定します。プリンシパルは外部ユーザーまたはロールである必要があり、現在のGUIDはNULLである必要があります。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはALTER ANY ROLEシステム権限が必要です。
注意:
SET_GUIDが機能するためにはユーザーのexternal_source属性が設定されている必要があります。
構文
SET_GUID ( principal IN VARCHAR2, guid IN RAW);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
外部ユーザーまたはロールの名前。 |
|
|
外部ユーザーまたはロールのGUID。 |
例
次の例は、ユーザーAlexのGUIDを設定します。
BEGIN
SYS.XS_PRINCIPAL.SET_GUID('ALEX','7b6cb3a98f8a4e20ac31a37419cc7fa3');
END;SET_ACLプロシージャ
目的
SET_ACLプロシージャは、指定されたアプリケーション・ユーザーまたは動的ロールにACLを設定します。
このプロシージャは、コール元が最小権限としてReal Application SecurityのPROVISION権限を持っていることを必要とします。プリンシパルがアプリケーション・ユーザーである場合、データベースのALTER USER権限を持つユーザーもまた、このプロシージャをコールできます。プリンシパルが動的ロールである場合、データベース・ロールのALTER ROLE権限を持つユーザーもまた、このプロシージャをコールできます。
構文
SET_ACL(principal IN VARCHAR2,
acl IN VARCHAR2);パラメータ
| パラメータ | 説明 |
|---|---|
principal |
ACLが設定されるアプリケーション・ユーザーまたは動的ロール。 |
acl |
Real Application Securityセッション権限。 |
使用上の注意
ACLはSYSスキーマで作成する必要があります。
アプリケーション・ユーザーまたは動的ロールに設定されたACLは、システム全体のACLをオーバーライドします。
セッション権限は、セッション操作に関与しているReal Application Securityのアプリケーション・ユーザーまたは動的ロールに設定されているACLに従って強制されます。たとえば、セッションの作成操作の場合、コール元でReal Application Securityアプリケーション・ユーザーに設定されているACLにCREATE_SESSION権限が指定されている必要があります。または、動的ロールでの連結操作の場合、動的ロールに設定されているACLにENABLE_DYNAMIC_ROLE権限が指定されている必要があります。
プリンシパル固有のACL権限付与は、既存のシステムレベル・セッション権限付与より優先されます。権限チェックは、最初にプリンシパルに関連するACLで実行され、成功した場合は操作が続行します。権限チェックで拒否された場合、操作は権限不足エラーで失敗します。付与にも拒否にもならなかった場合、SESSION_SCセキュリティ・クラスに関連付けられたシステムACLでのチェックが実行され、この権限チェックの結果に基づいて操作が成功または失敗します。
例
例11-1 アプリケーション・ユーザーTEST1へのACL権限CREATE_SESSIONの設定
次の例では、ACL権限CREATE_SESSIONを指定したアプリケーション・ユーザーtest1に設定します。
BEGIN
SYS.XS_PRINCIPAL.SET_ACL('test1','CREATE_SESSION');
END;SET_PROFILEプロシージャ
SET_PROFILEプロシージャは、アプリケーション・ユーザーのプロファイルを設定します。プロファイルは、Real Application Securityアプリケーション・ユーザーのデータベース使用率やデータベース・インスタンス・リソースを制限する、一連のリソース制限およびパスワード・パラメータです。アプリケーション・ユーザーとプロファイルは両方とも、既存のエンティティである必要があります。
このプロシージャを実行するユーザーは、ALTER_USER権限を持っている必要があります。
アプリケーション・ユーザーに割り当てられているプロファイルがカスケード・オプションを使用して削除されると、そのユーザーのデフォルト・プロファイルが自動的に有効になります。
構文
SET_PROFILE ( user IN VARCHAR2, profile IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
Real Application Securityアプリケーション・ユーザーの名前。既存のアプリケーション・ユーザーである必要があります。 |
|
|
プロファイルの名前。 |
例
次の例では、profというプロファイルを作成し、profというプロファイルをxsuserというアプリケーション・ユーザーに設定します。
CREATE PROFILE prof LIMIT PASSWORD_REUSE_TIME 1/1440 PASSWORD_REUSE_MAX 3 PASSWORD_VERIFY_FUNCTION Verify_Pass;
BEGIN
SYS.XS_PRINCIPAL.SET_PROFILE('xsuser','prof');
END;SET_USER_STATUSプロシージャ
SET_USER_STATUSプロシージャは、アプリケーション・ユーザー・アカウントのステータスを設定または変更します。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER_USER権限が必要です。
構文
SET_USER_STATUS ( user IN VARCHAR2, status IN PLS_INTEGER);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ステータスを設定または更新する必要のあるユーザー・アカウントの名前。 |
|
|
Real Application Securityユーザー・アカウントの新規ステータス。ステータスの値は複数のクラスに分けることができます。
パラメータ |
例
次の例は、ユーザーDJONESのユーザー・ステータスをLOCKEDに設定します。
BEGIN
SYS.XS_PRINCIPAL.SET_USER_STATUS('DJONES',XS_PRINCIPAL.LOCKED);
END;SET_PASSWORDプロシージャ
SET_PASSWORDプロシージャは、アプリケーション・ユーザー・アカウントのパスワードを設定または変更します。SET_PASSWORDプロシージャを使用すると、パスワードおよびtypeパラメータに基づいて検証機能が作成され、検証機能とtypeパラメータの値がディクショナリ表に挿入されます。
直接ログインReal Application Securityユーザーは、oldpassパラメータを使用して値を指定することで、自分のパスワードを変更できます。旧パスワードの値が間違っている場合、試行するたびにログイン失敗回数が増加し、ORA-28008: 旧パスワードが正しくありませんエラーが返されます。正しい旧パスワードを指定するまで、新規パスワードは設定されません。
アプリケーション・ユーザーに対してこのプロシージャを実行するには、または他のReal Application Securityユーザーのパスワードを変更するには、ALTER_USER権限が必要です。
外部IDストアから同期されたネイティブのReal Application Securityユーザーは、自分のパスワードを変更できません。これらのユーザーは、元のIDストアで自分のパスワードを変更する必要があります。たとえば、Oracle Internet Directory 11gリリース1 (11.1.1)が外部ストアの場合、エンドユーザー・セルフサービスには、Oracle Identity Managerが提供するOracle Identity Self Serviceインタフェースを使用してパスワードを管理してください。詳細は、『Fusion Middleware Oracle Identity Managerでのセルフ・サービス・タスクの実行』を参照してください。ネイティブReal Application Securityユーザーが外部IDストアと同期されているかを判断するには、セキュリティ管理者に連絡してください。同期されている場合には、ディレクトリ・サーバー環境にパスワード管理がエンドユーザー・セルフサービス用に提供されているかを確認してください。
ロジカル・スタンバイ・データベースでは、SET_PASSWORD操作とSQL*Plus PASSWORDコマンドは両方ともブロックされます。
構文
SET_PASSWORD ( user IN VARCHAR2, password IN VARCHAR2, type IN PLS_INTEGER := XS_SHA512, opassword IN VARCHAR2 :=NULL);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
パスワードを設定するアプリケーション・ユーザー・アカウントの名前。 |
|
|
設定するパスワード。 |
|
|
パスワードに使用する検索機能のタイプ。デフォルト値は
|
|
|
旧パスワード。Real Application Securityユーザーが自分のパスワードを変更する場合、このパラメータが必要です。指定されていない場合、ユーザーは自分のパスワードを変更するのに必要な権限を持っている必要があります。 |
例
次の例は、アプリケーション・ユーザーSMAVRISのパスワードを設定します。パスワードのXS_SHA512検証機能タイプも指定します。
BEGIN
SYS.XS_PRINCIPAL.SET_PASSWORD('SMAVRIS','2Hrd2Guess',XS_PRINCIPAL.XS_SHA512);
END;SET_VERIFIERプロシージャ
SET_VERIFIERプロシージャは、アプリケーション・ユーザー・アカウントの検証機能を設定または変更します。SET_VERIFIERプロシージャを使用すると、検証機能とtypeパラメータの値がディクショナリ表XS$VERIFIERSに挿入されます。これにより、管理者はパスワードではなく検証機能の知識があればユーザーをReal Application Securityに移行できます。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER_USER権限が必要です。
ロジカル・スタンバイ・データベースでは、SET_VERIFIER操作とSQL*Plus PASSWORDコマンドは両方ともブロックされます。
構文
set_verifier ( user IN VARCHAR2, verifier IN VARCHAR2, type IN PLS_INTEGER := XS_SHA512);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
検証機能の設定対象のアプリケーション・ユーザーの名前。 |
|
|
検証機能として使用する文字列。 |
|
|
使用する検索機能のタイプ。これは、次のいずれかです。
|
例
LWUSER3という名前のユーザーが作成され、パスワードが検証機能タイプXS_SALTED_SHA1で設定されているとします。
次に、DBA_XS_OBJECTSビューを問い合せて、ユーザーLWUSER3のID値を取得します。
SQL> column name format A10;
SQL> column owner format A6;
SQL> select NAME, OWNER, ID, TYPE, STATUS from DBA_XS_OBJECTS where NAME = 'LWUSER3';
NAME OWNER ID TYPE STATUS
---------- ------ ---------- ------------------ --------
LWUSER3 SYS 2147493770 PRINCIPAL VALID次に、IDが2147493770であるユーザーLWUSER3のXS$VERIFIERSディクショナリ表を問い合せます。
SQL> column user# format 9999999999;
SQL> column type# format 99;
SQL> column verifier format A62;
SQL> select USER#, VERIFIER, TYPE# from XS$VERIFIERS where USER# = '2147493770';
USER# VERIFIER TYPE#
----------- -------------------------------------------------------------- -----
2147493770 S:14DC0F5ABB72FC869549B1F845C548E0BEF7B863A116DB24DFAE22F0501E 1検証機能の値には、タイプが値"S"で含まれ、その後にコロン(:)が続き、XS_SALTED_SHA1の検証機能タイプであることを示します。これはタイプ#1であることも示されます。
"S:"を含む検証値全体を使用して、ユーザーLWUSER3の検証を設定します。
BEGIN
SYS.XS_PRINCIPAL.SET_VERIFIER('lwuser3','S:14DC0F5ABB72FC869549B1F845C548E0BEF7B863A116DB24DFAE22F0501E',
XS_PRINCIPAL.XS_SALTED_SHA1);
END;
/ 2 3 4 5
PL/SQL procedure successfully completed.
この手順を正常に完了するには、検証の値とタイプの両方が、検証が設定されているユーザーのXS$VERIFIERSディクショナリ表のVERIFIER列の情報と一致している必要があります。アプリケーション・ユーザーのパスワードを変更すると、検証機能タイプを変更するオプションで自動的に検証値が変更されます。
前の例では、検証をまったく同じ値に設定して、含まれる手順を表示します。検証値が設定した検証機能タイプと一致するかぎり、XS$VERIFIERSディクショナリ表を問い合せたときにアプリケーション・ユーザーに表示される任意の検証値にパスワードの検証を設定するオプションがあります。たとえば、検証値と検証機能タイプをXS_SHA512に変更する場合は、次の手順を実行します。
SQL> BEGIN
SYS.XS_PRINCIPAL.SET_VERIFIER('lwuser3','T:9BA95FEF2C2630A2BAACF2E7C5E41B0D50CDC7B0B6
0C88AD4FE81F8155D002F99EEAF9D95477E4749870C67FDE870E154ED17809C359777F979E269010823FB
981B2A998915EB1439FE3C6C1542A239C',
XS_PRINCIPAL.XS_SHA512);
END;
/ 2 3 4
PL/SQL procedure successfully completed.
これは、「直接アプリケーション・ユーザー・アカウントのためのパスワード検証の設定」で示しているアプリケーション・ユーザーLWUSER1に設定された検証値と検証機能タイプと同じであることに注意してください。
SET_DESCRIPTIONプロシージャ
SET_DESCRIPTIONプロシージャを使用して、アプリケーション・プリンシパルの説明を設定します。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはALTER ANY ROLEシステム権限が必要です。
構文
SET_DESCRIPTION ( principal IN VARCHAR2, description IN VARCHAR2);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
説明を設定するプリンシパルの名前。 |
|
|
プリンシパルに関する説明文字列。 |
例
次の例は、アプリケーション・ロールHRREPの説明を設定します。
BEGIN
SYS.XS_PRINCIPAL.SET_DESCRIPTION('HRREP','HR Representative role');
END;DELETE_PRINCIPALプロシージャ
DELETE_PRINCIPALプロシージャは、アプリケーション・ユーザーまたはアプリケーション・ロールを削除します。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはDROP USERシステム権限が必要です。アプリケーション・ロールに対してこのプロシージャを実行するにはDROP ANY ROLEシステム権限が必要です。
構文
delete_principal ( principal IN VARCHAR2, delete_option IN PLS_INTEGER:=XS_ADMIN_UTIL.DEFAULT_OPTION);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除するアプリケーション・ユーザーまたはアプリケーション・ロールの名前。 |
|
|
使用する削除オプション。次のオプションを使用できます。
|
例
次の例は、DEFAULT_OPTIONを使用してユーザーSMAVRISを削除します。
BEGIN
SYS.XS_PRINCIPAL.DELETE_PRINCIPAL('SMAVRIS');
END;