11.8 XS_PRINCIPALパッケージ
XS_PRINCIPALパッケージには、アプリケーション・プリンシパルの作成、管理および削除に使用されるプロシージャが含まれます。これらのアプリケーション・プリンシパルには、アプリケーション・ユーザー、標準アプリケーション・ロールおよび動的アプリケーション・ロールが含まれます。
11.8.2 定数
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 ;
11.8.3 オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび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;
11.8.4 XS_PRINCIPALサブプログラムの要約
表11-10 XS_PRINCIPALサブプログラムの要約
サブプログラム | 説明 |
---|---|
アプリケーション・ユーザーを作成します。 |
|
アプリケーション・ロールを作成します。 |
|
動的アプリケーション・ロールを作成します。 |
|
1つ以上のアプリケーション・ロールをアプリケーション・プリンシパルに付与します。 |
|
1つ以上のロールをアプリケーション・プリンシパルから取り消します。 |
|
ターゲット・アプリケーション・ユーザーのプロキシ・ユーザーを追加します。 |
|
ターゲット・アプリケーション・ユーザーの指定されたプロキシ・ユーザーまたはすべてのプロキシ・ユーザーを削除します。 |
|
データベース・ユーザーにプロキシ・アプリケーション・ユーザーを追加します。 |
|
データベース・ユーザーからプロキシ・アプリケーション・ユーザーを削除します。 |
|
アプリケーション・ユーザーまたはロールの有効日を設定または変更します。 |
|
動的アプリケーション・ロールの期間(分単位)を設定または変更します。 |
|
|
|
アプリケーション・ロールを有効または無効にします。 |
|
指定されたユーザーに直接付与されているすべてのロールを有効または無効にします。 |
|
アプリケーション・ユーザーのデータベース・スキーマを設定します。 |
|
外部ユーザーまたはロールのGUIDを設定します。 |
|
アプリケーション・ユーザーまたは動的ロールにReal Application Securityセッション権限を設定します。 |
|
アプリケーション・ユーザーのプロファイルを設定します。Real Application Securityアプリケーション・ユーザーのデータベース使用率やデータベース・インスタンス・リソースを制限する、一連のリソース制限およびパスワード・パラメータです。 |
|
|
|
アプリケーション・ユーザー・アカウントのパスワードを設定または変更します。 |
|
アプリケーション・ユーザー・アカウントの検証機能を設定または変更します。 |
|
アプリケーション・ユーザーまたはロールの説明文字列を設定します。 |
|
アプリケーション・ユーザーまたはロールを削除します。 |
この項では次のXS_PRINCIPALサブプログラムについて説明します。
11.8.4.1 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;
11.8.4.2 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;
11.8.4.3 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;
11.8.4.4 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');
11.8.4.5 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;
11.8.4.6 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;
11.8.4.7 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;
11.8.4.8 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;
11.8.4.9 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;
11.8.4.10 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;
11.8.4.11 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;
11.8.4.12 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;
11.8.4.13 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;
11.8.4.14 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;
11.8.4.15 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;
11.8.4.16 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;
11.8.4.17 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;
11.8.4.18 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;
11.8.4.19 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;
11.8.4.20 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;
11.8.4.21 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
に設定された検証値と検証機能タイプと同じであることに注意してください。
11.8.4.22 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;
11.8.4.23 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;