この章では、Oracle Database Real Application Securityで使用可能なPL/SQLパッケージについて説明します。
表11-1にこれらのパッケージを示します。各パッケージの詳細情報は、この表の後にあります。
表11-1 Oracle Database Real Application Security PL/SQLパッケージ
PL/SQLパッケージ | 説明 |
---|---|
アプリケーション・セッションを管理するサブプログラムを含みます。 |
|
アクセス制御リスト(ACL)の作成、管理、削除、およびパラメータ値の追加と削除を行うためのサブプログラムが含まれます。 |
|
ヘルパー・サブプログラムが含まれます。 |
|
データ・セキュリティ・ポリシー、関連データ・レルム制約、列制約およびACLパラメータを作成、管理、削除するためのサブプログラムが含まれます。 |
|
ユーザー表への静的ACLの自動リフレッシュをスケジュール、およびACLリフレッシュ・モードをコミット時またはオンデマンド・リフレッシュに変更するためのサブプログラムが含まれます。 |
|
Real Application Securityオブジェクトの潜在的な問題を診断し、識別された矛盾をレポートするためのサブプログラムが含まれます。 |
|
ネームスペース・テンプレートおよび属性を作成、管理および削除するためのサブプログラムが含まれます。 |
|
アプリケーション・ユーザーおよびロールを作成、管理および削除するためのサブプログラムが含まれます。 |
|
セキュリティ・クラスおよびその権限を作成、管理および削除するためのサブプログラムが含まれます。セキュリティ・クラスの継承を管理するためのサブプログラムも含まれます。 |
次の定数は、ネームスペース・イベント処理ファンクションに渡される操作コードを定義します。
attribute_first_read_operation CONSTANT PLS_INTEGER := 1; modify_attribute_operation CONSTANT PLS_INTEGER := 2;
次の定数は、イベント処理ファンクションを持つネームスペース内の特定の属性の対象イベントを識別するビット値を表します。
attribute_first_read_event CONSTANT PLS_INTEGER := 1; modify_attribute_event CONSTANT PLS_INTEGER := 2;
次の定数は、ネームスペース・イベント処理ファンクションによって戻される可能性のある戻りコードを定義します。
event_handling_succeeded CONSTANT PLS_INTEGER := 0; event_handling_failed CONSTANT PLS_INTEGER := 1;
次の定数は、ADD_GLOBAL_CALLBACK
、DELETE_GLOBAL_CALLBACK
およびENABLE_GLOBAL_CALLBACK
プロシージャへの入力として使用されます。
create_session_event CONSTANT PLS_INTEGER := 1; attach_session_event CONSTANT PLS_INTEGER := 2; guest_to_user_event CONSTANT PLS_INTEGER := 3; proxy_to_user_event CONSTANT PLS_INTEGER := 4; revert_to_user_event CONSTANT PLS_INTEGER := 5; enable_role_event CONSTANT PLS_INTEGER := 6; disable_role_event CONSTANT PLS_INTEGER := 7; enable_dynamic_role_event CONSTANT PLS_INTEGER := 8; disable_dynamic_role_event CONSTANT PLS_INTEGER := 9; detach_session_event CONSTANT PLS_INTEGER := 10; terminate_session_event CONSTANT PLS_INTEGER := 11; direct_login_event CONSTANT PLS_INTEGER := 12; direct_logoff_event CONSTANT PLS_INTEGER := 13;
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT
文が定義されています。
CREATE OR REPLACE TYPE DBMS_XS_NSATTR AS OBJECT ( --- Member variables namespace varchar2(130), attribute varchar2(4000), attribute_value varchar2(4000), --- Constructor for DBMS_XS_NSATTR type --- Only namespace name is mandatory CONSTRUCTOR FUNCTION DBMS_XS_NSATTR( namespace IN VARCHAR2, attribute IN VARCHAR2 DEFAULT NULL, attribute_value IN VARCHAR2 DEFAULT NULL) RETURN SELF AS RESULT); CREATE OR REPLACE PUBLIC SYNONYM DBMS_XS_NSATTR FOR SYS.DBMS_XS_NSATTR; CREATE OR REPLACE TYPE DBMS_XS_NSATTRLIST AS VARRAY(1000) OF DBMS_XS_NSATTR; CREATE OR REPLACE PUBLIC SYNONYM DBMS_XS_NSATTRLIST FOR SYS.DBMS_XS_NSATTRLIST; GRANT EXECUTE ON DBMS_XS_NSATTR TO PUBLIC; GRANT EXECUTE ON DBMS_XS_NSATTRLIST TO PUBLIC; CREATE OR REPLACE PUBLIC SYNONYM DBMS_XS_SESSIONS FOR SYS.DBMS_XS_SESSIONS; GRANT EXECUTE ON DBMS_XS_SESSIONS TO PUBLIC;
表11-2 DBMS_XS_SESSIONSサブプログラムの要約
サブプログラム | 説明 |
---|---|
指定されたアプリケーション・ユーザー名の新規アプリケーション・セッションを作成します。 |
|
現在の従来型データベース・セッションを、セッションIDで識別されるアプリケーション・セッションに連結します。 |
|
指定されたユーザーを現在連結されている匿名Real Application Securityセッションに割り当てます。 |
|
現在連結されているセッションのアプリケーション・ユーザーを切り替えます。 |
|
現在連結されているアプリケーション・セッションに新規アプリケーション・ネームスペースを作成します。 |
|
現在連結されているアプリケーション・セッションの指定されたアプリケーション・ネームスペースに新規カスタム属性を作成します。 |
|
現在連結されているアプリケーション・セッションのネームスペース内の指定された属性に新しい値を設定します。 |
|
現在連結されているアプリケーション・セッションのネームスペース内の属性の値を取得します。 |
|
現在連結されているアプリケーション・セッションの指定したネームスペース内のアプリケーション・ネームスペース属性を元の値にリセットします。 |
|
現在連結されているアプリケーションの指定したネームスペースから指定した属性を削除します。 |
|
現在連結されているアプリケーション・セッションから指定されたネームスペースおよびその属性を削除します。 |
|
現在連結されているアプリケーション・セッションで実際のアプリケーション・ロールを有効にします。 |
|
現在連結されているアプリケーション・セッションから実際のアプリケーション・ロールを無効にします。 |
|
指定されたセッションIDで新しいCookie値を設定します。 |
|
指定されたセッションIDで識別されるセッションの最終認証時刻を更新します。 |
|
指定されたセッションの非アクティブ・タイムアウト値を分単位で設定します。 |
|
現在連結されているセッションで実行された変更を保存または永続化します。 |
|
現在の従来型データベース・セッションを、連結先のアプリケーション・セッションから連結解除します。 |
|
セッションIDで指定されたセッションを破棄または終了します。 |
|
既存のイベント・ハンドラをデータベースに登録します。 |
|
|
|
既存のグローバル・コールバック・アソシエーションを削除します。 |
CREATE_SESSION
プロシージャは、指定されたユーザー名の新規アプリケーション・セッションを作成します。将来のコールでセッションを参照するために使用できるセッション識別子を戻します。
セッションは、標準アプリケーション・ユーザーまたは外部アプリケーション・ユーザーで作成できます。セッションは信頼モードまたはセキュア・モードで作成できます。信頼モードでは、データ・セキュリティ・チェックがバイパスされます。セキュア・モードでは、データセキュリティ・チェックが施行されます。
信頼モードでの標準セッションの組合せはサポートされません。その他の組合せ、つまりセキュア・モードでの標準セッション、信頼モードでの外部セッション、またはセキュア・モードでの外部セッションはサポートされます。
namespaces
パラメータは、作成するネームスペース、作成する属性および設定する属性値の3つのリストです。これは、オプションのパラメータです。デフォルト値はNULL
です。XS$GLOBAL_VAR
およびXS$SESSION
ネームスペースとその属性は常にセッションで使用可能です。
このファンクションは、現在の従来型セッションを新規に作成されたアプリケーション・セッションに連結しません。このタスクを実行するにはATTACH_SESSIONプロシージャを使用します。
プロシージャを実行するユーザーには、username
パラメータで指定されたアプリケーション・ユーザーに対するCREATE_SESSION
アプリケーション権限が必要です。セッションの作成時に作成されるネームスペースのリストも指定できます。セッションの作成時にネームスペースを指定した場合、コール元にはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
が付与されているか、ADMIN_NAMESPACE
システム権限が付与されている必要があります。
構文
CREATE_SESSION ( username IN VARCHAR2, sessionid OUT NOCOPY RAW, is_external IN BOOLEAN DEFAULT FALSE, is_trusted IN BOOLEAN DEFAULT FALSE, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL, cookie IN VARCHAR2 DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションを作成する標準アプリケーション・ユーザーまたは外部アプリケーション・ユーザーの名前。 現在のセッションのユーザー名およびアプリケーション・ロールのリストを検索するには、DBA_XS_USERSデータ・ディクショナリ・ビューを問い合せます。すべてのアプリケーション・ユーザーおよびロールを検索するには、DBA_XS_PRINCIPALSデータ・ディクショナリ・ビューを次のように問い合せます。 ユーザー: SELECT NAME FROM DBA_XS_USERS; ロール: SELECT NAME FROM DBA_XS_ROLES; SELECT NAME FROM DBA_XS_DYNAMIC_ROLES; |
|
新規に作成したアプリケーション・セッションのセッションID。次のいずれかの方法を使用して、セッションIDを取得できます。
|
|
セッションを外部プリンシパル・セッションとして作成するかどうか指定します。これは、オプションのパラメータです。デフォルト値は |
|
セッションを信頼モードとセキュア・モードのどちらで作成するかを指定します。信頼モードでは、データ・セキュリティ・チェックがバイパスされます。セキュア・モードでは、データセキュリティ・チェックが施行されます。これは、オプションのパラメータです。デフォルト値は |
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
|
セッションに対して設定するサーバーCookieを指定します。これは、オプションのパラメータです。デフォルト値は |
例
DECLARE
nsList DBMS_XS_NSATTRLIST;
sessionid RAW(16);
BEGIN
nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DBMS_XS_NSATTR('ns2'));
SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid, FALSE, FALSE, nsList);
END;
ATTACH_SESSION
プロシージャは、現在の従来型データベース・セッションをセッションID (session_id
)で識別されるアプリケーション・セッションに連結します。連結されたセッションにより、セッションを作成したアプリケーション・ユーザーに(直接または間接的に)付与されているロールおよびこのセッションの最後の連結解除まで有効だったセッション・スコープの動的アプリケーション・ロールが有効になります。オプションのパラメータenable_dynamic_roles
を使用して動的アプリケーション・ロールのリストでATTACH_SESSION
を実行した場合、提供されている動的アプリケーション・ロールがセッションに対して有効になります。動的ロールのリストを無効にするには、オプションのパラメータdisable_dynamic_roles
を使用してリストを指定します。
連結操作中に3つの値(ネームスペース、属性、属性値)のリストを指定できます。ネームスペースおよび属性が作成され、属性値が設定されます。これは、セッションに存在するネームスペースおよび属性に加えて作成されます。
このプロシージャを実行するには、従来のセッション・ユーザーにATTACH_SESSION
アプリケーション権限が必要です。ネームスペースを指定する場合、ユーザーにはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
、あるいはADMIN_NAMESPACE
システム権限が付与されている必要があります。
明示的に連結されているセッション(JavaのATTACH_SESSION
プロシージャまたはattachSession()
メソッドを使用して連結されているセッション)から呼び出された場合、セッションにALTER_USER
権限が必要であり、PASSWORD
コマンドにユーザー名が指定されていれば、SQL*Plus PASSWORD
コマンドを使用してセルフ・パスワード変更を行うことができます。
構文
ATTACH_SESSION ( sessionid IN RAW, enable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, disable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, external_roles IN XS$NAME_LIST DEFAULT NULL, authentication_time IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションのセッションID。次のいずれかの方法を使用して、セッションIDを取得できます。
|
|
アプリケーション・セッションで有効にする、付与する動的ロールのリスト。これは、オプションのパラメータです。指定されたいずれかの動的ロールが存在しない場合は、セッションの連結が失敗します。セッションが外部プリンシパル・セッションの場合は、有効にする外部ロールのリストを指定できます。これらのロールは連結解除されるまで有効なままになり、次の連結でデフォルトでは有効になりません。 現在のセッションのアプリケーション・ロールのリストを検索するには、DBA_XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべての動的アプリケーション・ロールのリストを検索するには、DBA_XS_PRINCIPALSデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME, TYPE FROM DBA_XS_PRINCIPALS; |
|
セッションで無効にする動的ロールのリスト。これは、オプションのパラメータです。 |
|
セッションが外部プリンシパル・セッションの場合に外部ロールのリスト。これは、オプションのパラメータです。これらの外部ロールは連結解除操作まで有効なままになり、次の連結でデフォルトでは再度有効になりません。 |
|
セッションに対して更新された認証時刻。これは、オプションのパラメータです。時刻は次の形式で指定する必要があります。
|
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
例
DECLARE
nsList DBMS_XS_NSATTRLIST;
sessionid RAW(16);
BEGIN
nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DBMS_XS_NSATTR('ns2'));
SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid);
SYS.DBMS_XS_SESSIONS.ATTACH_SESSION(sessionid, NULL, NULL, NULL, NULL, nsList);
END;
ASSIGN_USER
プロシージャは、指定されたアプリケーション・ユーザーを現在連結されている匿名アプリケーション・セッションに割り当てます。
現在のセッションで有効になっているロールは、この操作後も保持されます。オプションのパラメータenable_dynamic_roles
およびdisable_dynamic_roles
は、有効または無効にする動的ロールの追加リストを指定します。割り当てられたユーザーが外部の場合は、有効にする外部ロールのリストを指定できます。
割当て操作中に3つの値(ネームスペース、属性、属性値)のリストを指定できます。セッションにネームスペースおよび属性が作成され、属性値が設定されます。これは、セッションにすでに存在するネームスペースおよび属性に加えて作成されます。
このプロシージャを実行するには、ディスパッチャまたは接続ユーザーにASSIGN_USER
アプリケーション権限が必要です。ネームスペースを指定する場合、ユーザーにはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
、あるいはADMIN_NAMESPACE
システム権限が付与されている必要があります。
構文
DBMS_XS_SESSIONS.ASSIGN_USER ( username IN VARCHAR2, is_external IN BOOLEAN DEFAULT FALSE, enable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, disable_dynamic_roles IN XS$NAME_LIST DEFAULT NULL, external_roles IN XS$NAME_LIST DEFAULT NULL, authentication_time IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
実際のアプリケーション・ユーザーの名前。 既存のアプリケーション・ユーザーのリストを検索するには、DBA_XS_PRINCIPALSデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME FROM DBA_XS_PRINCIPALS; |
|
指定されたアプリケーション・ユーザーが外部ユーザーかどうかを指定します。これは、オプションのパラメータです。デフォルト値は |
|
アプリケーション・セッションで有効にする動的ロールのリスト。これは、オプションのパラメータです。 現在のセッションのアプリケーション・ロールのリストを検索するには、V$XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべての動的アプリケーション・ロールのリストを検索するには、DBA_XS_DYNAMIC_ROLESデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME FROM DBA_XS_DYNAMIC_ROLES; |
|
セッションで無効にする動的ロールのリスト。これは、オプションのパラメータです。 |
|
アプリケーション・ユーザーが外部アプリケーション・ユーザーの場合に外部ロールのリスト。これは、オプションのパラメータです。 |
|
セッションに対して更新された認証時刻。これは、オプションのパラメータです。時刻は次の形式で指定する必要があります。
|
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
例
DECLARE nsList DBMS_XS_NSATTRLIST; sessionid RAW(16); BEGIN nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DB); SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.ATTACH_SESSION(sessionid); SYS.DBMS_XS_SESSIONS.ASSIGN_USER(username => 'lwuser2', namespaces => nsList); END;
SWITCH_USER
プロシージャは、現在連結されているセッションのアプリケーション・ユーザーを切り替えます。XS_PRINCIPAL.ADD_PROXY_USER
PL/SQL APIを使用して別のアプリケーション・ユーザー権限のプロキシを取得することで切替え操作を実行する前に、現在のアプリケーション・ユーザーがターゲット・アプリケーション・ユーザーのプロキシ・ユーザーになっている必要があります。ターゲット・ユーザーのフィルタリング・アプリケーション・ロールのリストがセッションで有効になります。
セッションの現在のアプリケーション・ネームスペースを保持または破棄できます。切替え後に作成するネームスペースおよび設定する属性値のリストも指定できます。ネームスペースを指定する場合、ユーザーにはネームスペースに対するアプリケーション権限MODIFY_NAMESPACE
またはMODIFY_ATTRIBUTE
、あるいはADMIN_NAMESPACE
システム権限が付与されている必要があります。
構文
SWITCH_USER ( username IN VARCHAR2, keep_state IN BOOLEAN DEFAULT FALSE, namespaces IN DBMS_XS_NSATTRLIST DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
切替え先のセキュリティ・コンテキストを持つユーザーのユーザー名。 既存のアプリケーション・ユーザーのリストを検索するには、DBA_XS_USERSデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT NAME FROM DBA_XS_USERS; |
|
アプリケーション・ネームスペースが保持されるかどうかを制御します。 可能な値は次のとおりです。
|
|
名前、属性および属性値の3つのリスト。ネームスペースがセッションからアクセスできないか、このようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。 |
例
DECLARE nsList := DBMS_XS_NSATTRLIST(DBMS_XS_NSATTR('ns1'),DBMS_XS_NSATTR('ns2')); sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.ATTACH_SESSION(sessionid); SYS.DBMS_XS_SESSIONS.SWITCH_USER(username => 'lwuser2', keep_state => TRUE, namespaces => nsList); END;
CREATE_NAMESPACE
プロシージャは、現在連結されているアプリケーション・セッションに新規ネームスペースを作成します。ネームスペースに対応するネームスペース・テンプレートがシステムに存在する必要があり、存在しないと、この操作はエラーをスローします。この操作の後、ネームスペースおよびテンプレートに作成されたその属性がセッションで使用可能になります。
コール元のユーザーには、MODIFY_NAMESPACE
アプリケーション権限が必要です。
構文
CREATE_NAMESPACE( namespace IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
作成するネームスペースの名前。この名前の既存のネームスペース・テンプレート・ドキュメントが必要です。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
例
BEGIN SYS.DBMS_XS_SESSIONS.CREATE_NAMESPACE('J_NS1'); END;
CREATE_ATTRIBUTE
プロシージャは、現在連結されているアプリケーション・セッションの指定されたネームスペースに新規カスタム属性を作成します。ネームスペースがセッションですでに使用可能でないかこのようなネームスペース・テンプレートが存在しない場合は、エラーがスローされます。
コール元ユーザーにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
PROCEDURE create_attribute( namespace IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2 DEFAULT NULL, eventreg IN PLS_INTEGER DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
属性が作成されるネームスペース。セッションにネームスペースが存在しない場合は、エラーがスローされます。大/小文字を区別する文字列の最大サイズは128文字です。 |
|
作成する属性の名前。大/小文字を区別する文字列の最大サイズは4000文字です。 |
|
属性のデフォルト値。大/小文字を区別する文字列の最大サイズは4000文字です。 |
|
属性に対してハンドラが実行されるイベント。これは、オプションのパラメータです。このパラメータの値は、次のいずれかです。
属性が最初の読取りイベントに対して登録されている場合、ハンドラは、値を戻す前に属性が初期化されていない場合に実行されます。更新イベントが登録されている場合は、属性が変更されるたびにハンドラがコールされます。イベントは、ネームスペースにイベント・ハンドラがある場合にのみ登録でき、それ以外の場合はエラーがスローされます。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.CREATE_ATTRIBUTE('NS1','NS1CUSTOM','NS1CUSTOMDEFAULT'); END; -- Example with firstRead event set BEGIN SYS.DBMS_XS_SESSIONS.create_Attribute('ns1','attr4',NULL, DBMS_XS_SESSIONS.attribute_first_read_event); END;
SET_ATTRIBUTE
プロシージャは、現在連結されているセッションに関連付けられているネームスペースの指定された属性に新しい値を設定します。ハンドラ・ファンクションは、属性に対してupdate
イベントが設定されている場合にコールされます。ネームスペースが存在しないか削除されている場合は、エラーがスローされます。存在するネームスペースに対応するテンプレートがない場合は、エラーがスローされます。
コール元ユーザーにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
SET_ATTRIBUTE ( namespace IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
属性に関連付けられているネームスペースの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
|
既存のネームスペース内の既存の属性の名前。 既存のネームスペース属性のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
|
属性の新規の値。大/小文字を区別する文字列の最大サイズは4000文字です。 属性に関連付けられている既存の値のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.SET_ATTRIBUTE('J_NS','JohnNSAttr1','John bio'); END;
GET_ATTRIBUTE
プロシージャは、現在連結されているセッションのネームスペースの指定された属性の値を取得します。ネームスペースに対応するテンプレートが存在しない場合は、エラーがスローされます。指定された属性が存在しない場合は、空の文字列が戻されます。
属性値がNULL
で、firstRead
イベントが設定され、このとき初めて属性値がフェッチされる場合は、属性のハンドラ・ファンクションがコールされます。
コール元ユーザーには、どの権限も付与されている必要はありません。
構文
GET_ATTRIBUTE ( namespace IN VARCHAR2, attribute IN VARCHAR2, value OUT NOCOPY VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
取得する属性のネームスペース。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に |
|
取得する属性の名前。大/小文字を区別する文字列の最大サイズは4000文字です。使用可能な属性のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
|
取得する属性の値。 使用可能な属性値のリストを検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
例
DECLARE attrVal VARCHAR2(4000);
BEGIN SYS.DBMS_XS_SESSIONS.GET_ATTRIBUTE('J_NS1','JohnNS1Attr1',attrVal); END;
RESET_ATTRIBUTE
プロシージャは、現在連結されているセッションのネームスペース内で属性の値をデフォルト値(存在する場合)またはNULL
にリセットします。属性にデフォルト値が指定されている場合、値はデフォルト値にリセットされます。属性がデフォルト値なしで作成され、attribute_first_read_event
でマークされている場合は、値がNULL
に設定され、未初期化としてマークされます。属性がデフォルト値なしで作成され、attribute_first_read_event
でマークされていない場合は、値がNULL
に設定されます。
コール元ユーザーにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
PROCEDURE reset_attribute( namespace IN VARCHAR2, attribute IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
属性を含むネームスペースの名前。大/小文字を区別する文字列の最大サイズは128文字です。 |
|
リセットする属性の名前。大/小文字を区別する文字列の最大サイズは4000文字です。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.RESET_ATTRIBUTE('ns2','attr1'); END;
DELETE_ATTRIBUTE
プロシージャは、現在連結されているセッションの指定されたネームスペースから指定された属性および関連付けられている値を削除します。カスタム属性のみ削除できます。テンプレート属性は削除できません。指定された属性が存在しない場合は、エラーがスローされます。
コール元アプリケーションにはMODIFY_ATTRIBUTE
アプリケーション権限が付与されている必要があります。
構文
DELETE_ATTRIBUTE ( namespace IN VARCHAR2, attribute IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
削除する属性に関連付けられているネームスペース。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
|
削除する属性。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に |
例
BEGIN SYS.DBMS_XS_SESSIONS.DELETE_ATTRIBUTE('JohnNS1','JohnNS1Attr1'); END;
DELETE_NAMESPACE
プロシージャは、ネームスペースおよびその属性を現在連結されているアプリケーション・セッションから削除します。
コール元のユーザーには、MODIFY_NAMESPACE
アプリケーション権限が必要です。
構文
DELETE_NAMESPACE ( namespace IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
削除するネームスペースの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションの既存のネームスペースのリストを検索するには、連結後に
|
例
BEGIN SYS.DBMS_XS_SESSIONS.DELETE_NAMESPACE('JohnNS1'); END;
ENABLE_ROLE
プロシージャは、現在連結されているアプリケーション・セッションで実際のアプリケーション・ロールを有効にします。ロールがすでに有効になっている場合、ENABLE_ROLE
プロシージャはアクションを実行しません。このプロシージャは、現在のアプリケーション・ユーザーに直接付与されている標準アプリケーション・ロールのみ有効にします。動的アプリケーション・ロールは有効にできません。
この操作では、コール元ユーザーにアプリケーション権限は不要です。
構文
ENABLE_ROLE ( role IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
有効にするロールの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションのアプリケーション・ロールのリストを検索するには、V$XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべてのアプリケーション・ロールを検索するには、DBA_XS_SESSION_ROLESデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT ROLE_NAME FROM V$XS_SESSION_ROLES; SELECT SESSIONID, ROLE FROM DBA_XS_SESSION_ROLES; |
例
BEGIN SYS.DBMS_XS_SESSIONS.ENABLE_ROLE('auth2_role'); END;
DISABLE_ROLE
プロシージャは、指定されたアプリケーション・セッションから実際のアプリケーション・ロールを無効にします。現在連結されているアプリケーション・セッションでロールがすでに無効になっているか有効になっていない場合、DISABLE_ROLE
はアクションを実行しません。動的アプリケーション・ロールは無効にできません。セッションを作成したアプリケーション・ユーザーに直接付与されている標準アプリケーション・ロールのみ無効にできます。
この操作では、コール元ユーザーにアプリケーション権限は不要です。
構文
DISABLE_ROLE ( role IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
無効にするロールの名前。大/小文字を区別する文字列の最大サイズは128文字です。 現在のセッションのアプリケーション・ロールのリストを検索するには、V$XS_SESSION_ROLESデータ・ディクショナリ・ビューを問い合せます。すべてのアプリケーション・ロールを検索するには、DBA_XS_SESSION_ROLESデータ・ディクショナリ・ビューを次のように問い合せます。 SELECT ROLE_NAME FROM V$XS_SESSION_ROLES; SELECT SESSIONID, ROLE FROM DBA_XS_SESSION_ROLES; |
例
BEGIN SYS.DBMS_XS_SESSIONS.DISABLE_ROLE('auth1_role'); END;
SET_SESSION_COOKIE
プロシージャは、指定されたセッションIDで新しいCookie値を設定します。指定されたセッションが存在しないかCookie名がすべてのユーザー・アプリケーション・セッション間で一意でない場合は、エラーがスローされます。
このプロシージャを実行するには、ユーザーにMODIFY_SESSION
アプリケーション権限が付与されている必要があります。
構文
SET_SESSION_COOKIE ( cookie IN VARCHAR2, sessionid IN RAW DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
新規Cookieの名前。Cookieに対して許可される最大長は1024文字です。Cookie名は一意にする必要があります。 現在のセッションの既存のCookiesのリストを検索するには、 |
|
アプリケーション・セッションのセッションID。デフォルト値は
セッションIDを指定しないか |
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.SET_SESSION_COOKIE('cookie1', sessionid); END;
REAUTH_SESSION
プロシージャは、指定されたセッションIDの最終認証時刻を現在の時刻で更新します。アプリケーションは、アプリケーション・ユーザーを再認証したときにこのプロシージャをコールする必要があります。
REAUTH_SESSION
プロシージャを使用して、アプリケーションまたは中間層サーバーで最近認証されていないためタイムアウトになったロールを有効にします。reauthSession
Javaメソッドをコールすることもできます。
このファンクションを実行するには、ユーザーにMODIFY_SESSION
アプリケーション権限が付与されている必要があります。
構文
REAUTH_SESSION ( sessionid IN RAW DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションのセッションID。このパラメータはオプションです。デフォルト値は
セッションIDを指定しないか |
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.REAUTH_SESSION(sessionid); END;
SET_INACTIVITY_TIMEOUT
プロシージャは、現在連結されているセッションの非アクティブ・タイムアウト値を分単位で設定します。非アクティブ・タイムアウト値は、Oracleデータベースがアプリケーション・セッションを終了し、リソースが解放される前に許容される最大非アクティブ期間を表します。time
パラメータに負の値を設定しようとすると、エラーがスローされます。無効なセッションIDが指定されるかセッションが存在しない場合は、エラーがスローされます。
タイムアウト値を設定する別の方法は、setInactivityTimeout
Javaメソッドを使用することです。xmlconfig.xml
構成ファイルでデフォルトのグローバル・タイムアウト値を設定できます。240 (4時間)をお薦めします。
アプリケーション・セッションは、従来のセッションが連結されている間は非アクティブになるため、タイムアウトにできません。最終アクセス時刻は、従来のセッションがアプリケーション・セッションに連結するたびに更新されます。
このプロシージャを実行するには、コール元ユーザーにMODIFY_SESSION
アプリケーション権限が付与されている必要があります。
構文
SET_INACTIVITY_TIMEOUT ( time IN NUMBER, sessionid IN RAW DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
分単位での非アクティブ・タイムアウト値。 |
|
アプリケーション・セッションのセッションID。デフォルト値は
セッションIDを指定しないか |
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwuser1', sessionid); SYS.DBMS_XS_SESSIONS.SET_INACTIVITY_TIMEOUT (300, sessionid); END; /
DETACH_SESSION
プロシージャは、現在の従来型データベース・セッションを、連結先のアプリケーション・セッションから連結解除します。データベース・セッションは、アプリケーション・セッションに連結する前のコンテキストに戻ります。操作を実行するために権限は必要ないため、任意のユーザーがこのプロシージャを実行できます。
構文
DETACH_SESSION (abort IN BOOLEAN DEFAULT FALSE);
パラメータ
パラメータ | 説明 |
---|---|
|
|
例
BEGIN SYS.DBMS_XS_SESSIONS.DETACH_SESSION; END;
DESTROY_SESSION
プロシージャは、指定されたセッションを破棄します。このプロシージャは、アプリケーション・セッションからすべての従来のセッションも暗黙的に連結解除します。セッションが破棄された後は、セッションに対してそれ以上連結を実行できません。この操作では、アプリケーション・ユーザーの直接ログオンを通じて作成されたセッションは破棄できません。
このプロシージャを実行するには、ユーザーにTERMINATE_SESSION
アプリケーション権限が必要です。
構文
DESTROY_SESSION ( sessionid IN RAW, force IN BOOLEAN DEFAULT FALSE);
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・セッションのセッションID。次のいずれかの方法を使用して、セッションIDを取得できます。
セッションIDを指定しないか |
|
|
例
DECLARE sessionid RAW(16); BEGIN SYS.DBMS_XS_SESSIONS.CREATE_SESSION('lwtSession1', sessionid); SYS.DBMS_XS_SESSIONS.DESTROY_SESSION (sessionid); END;
ADD_GLOBAL_CALLBACK
プロシージャは、既存のPL/SQLプロシージャをevent_type
パラメータで指定されたセッション操作にイベント・ハンドラとして登録します。関連付けられたイベントの発生時に実行するために同じセッション操作に対して複数のイベント・ハンドラを追加できます。グローバル・コールバック・プロシージャを追加すると、コールバック・プロシージャの実行が自動的に有効になります。同じセッション・イベントに対して複数のコールバックが追加されている場合、それらは登録順序に従って実行されます。つまり、最初に登録されたコールバック・プロシージャが最初に実行されます。このプロシージャは、無効なイベント・タイプが指定されている場合、またはコールバック・プロシージャが存在しない場合にエラーをスローします。
このプロシージャを正常に実行するには、CALLBACK
アプリケーション権限が必要です。このロールは、PROVISIONER
データベース・ロールを通じて取得できます。
構文
ADD_GLOBAL_CALLBACK( event_type IN PLS_INTEGER, callback_schema IN VARCHAR2, callback_package IN VARCHAR2, callback_procedure IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
次のイベント・タイプから選択します。
|
|
コールバック・プロシージャが作成されたスキーマの名前を入力します。 |
|
コールバック・プロシージャが作成されたパッケージの名前を入力します。コールバック・プロシージャがスタンドアロンの場合は、 |
|
グローバル・コールバックを定義するプロシージャの名前を入力します。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.ADD_GLOBAL_CALLBACK ( DBMS_XS_SESSIONS.CREATE_SESSION_EVENT, 'APPS1_SCHEMA','APPS2_PKG','CREATE_SESSION_CB'); END;
ENABLE_GLOBAL_CALLBACK
プロシージャは、グローバル・コールバック・プロシージャの実行を有効または無効にします。このイベントに関連付けられているコールバック・プロシージャが指定されていない場合は、このグローバル・コールバックに関連付けられているすべてのコールバック・プロシージャが有効または無効になります。無効なイベント・タイプが指定されているか無効なコールバック・プロシージャが指定されている場合は、エラーがスローされます。
構文
ENABLE_GLOBAL_CALLBACK( event_type IN PLS_INTEGER, enable IN BOOLEAN DEFAULT TRUE, callback_schema IN VARCHAR2 DEFAULT NULL, callback_package IN VARCHAR2 DEFAULT NULL, callback_procedure IN VARCHAR2 DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
次のイベント・タイプから選択します。
|
|
グローバル・コールバックを有効にするか無効にするかを指定します。デフォルト値は |
|
グローバル・コールバックが作成されたスキーマの名前を入力します。 |
|
グローバル・コールバックが作成されたパッケージの名前を入力します。 |
|
グローバル・コールバックを定義するプロシージャの名前を入力します。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.ENABLE_GLOBAL_CALLBACK ( DBMS_XS_SESSIONS.CREATE_SESSION_EVENT, TRUE, 'APPS1_SCHEMA','APPS2_PKG','CREATE_SESSION_CB'); END;
DELETE_GLOBAL_CALLBACK
プロシージャは、グローバル・コールバックを登録から削除します。(グローバル・コールバック自体は削除しません。)コールバック・プロシージャが指定されていない場合は、このグローバル・コールバックに関連付けられているすべてのコールバック・プロシージャが削除されます。無効なイベント・タイプが指定されている場合は、エラーがスローされます。
構文
DELETE_GLOBAL_CALLBACK( event_type IN PLS_INTEGER, callback_schema IN VARCHAR2 DEFAULT NULL, callback_package IN VARCHAR2 DEFAULT NULL, callback_procedure IN VARCHAR2 DEFAULT NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
次のイベント・タイプから選択します。
|
|
グローバル・コールバックが作成されたスキーマの名前を入力します。 |
|
グローバル・コールバックが作成されたパッケージの名前を入力します。 |
|
グローバル・コールバックを定義するプロシージャの名前を入力します。 |
例
BEGIN SYS.DBMS_XS_SESSIONS.DELETE_GLOBAL_CALLBACK ( DBMS_XS_SESSIONS.CREATE_SESSION_EVENT, 'APPS1_SCHEMA','APPS2_PKG','CREATE_SESSION_CB'); END;
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび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;
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;
表11-3 XS_ACLサブプログラムの要約
サブプログラム | 説明 |
---|---|
アクセス制御リスト(ACL)を作成します。 |
|
1つ以上のアクセス制御エントリ(ACE)を既存のACLに追加します。 |
|
ACLからすべてのACEを削除します。 |
|
ACLのセキュリティ・クラスを設定または変更します。 |
|
ACLの親ACLを設定または変更します。 |
|
データ・セキュリティ・ポリシーのACLパラメータ値を追加します。 |
|
ACLのACLパラメータと値を削除します。 |
|
ACLの説明文字列を設定します。 |
|
指定された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
プロシージャは、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
プロシージャは、ACLからすべてのACEを削除します。
構文
XS_ACL.REMOVE_ACES ( acl IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
ACEを削除するACLの名前。 名前は、 |
例
次の例は、HRACL
というACLからすべてのACEを削除します。
BEGIN SYS.XS_ACL.REMOVE_ACES('HRACL'); END;
構文
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
は、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;
構文
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
は、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
プロシージャは、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
プロシージャは、指定された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;
DEFAULT_OPTION CONSTANT PLS_INTEGER := 1; CASCADE_OPTION CONSTANT PLS_INTEGER := 2; ALLOW_INCONSISTENCIES_OPTION CONSTANT PLS_INTEGER := 3;
次の定数はプリンシパルのタイプを定義します。
PTYPE_XS CONSTANT PLS_INTEGER := 1; PTYPE_DB CONSTANT PLS_INTEGER := 2; PTYPE_DN CONSTANT PLS_INTEGER := 3; PTYPE_EXTERNAL CONSTANT PLS_INTEGER := 4;
表11-4 XS_ADMIN_UTILサブプログラムの要約
サブプログラム | 簡単な説明 |
---|---|
ユーザーまたはロールにReal Application Securityシステム権限を付与します。 |
|
ユーザーまたはロールからReal Application Securityシステム権限を取り消します。 |
GRANT_SYSTEM_PRIVILEGE
プロシージャを使用して、ユーザーまたはロールにReal Application Securityセキュリティ・クラス権限を付与します。SYS
権限を持つユーザーのみがこの操作を実行できます。
構文
XS_ADMIN_UTIL.GRANT_SYSTEM_PRIVILEGE ( priv_name IN VARCHAR2, user_name IN VARCHAR2, user_type IN PLS_INTEGER := XS_ADMIN_UTIL.PTYPE_DB);
パラメータ
パラメータ | 説明 |
---|---|
|
付与するReal Application Securityセキュリティ・クラス権限の名前を指定します。 |
|
Real Application Securityセキュリティ・クラス権限を付与するユーザーまたはロールの名前を指定します。 |
|
ユーザーのタイプ。デフォルトではデータベース・ユーザーです。 |
例
次の例では、データベース・ユーザーdbuser1
を作成して、このデータベース・ユーザーにReal Application Security権限ADMINISTER_SESSION
を付与し、user_type
としてデフォルトのXS_ADMIN_UTIL.PTYPE_DB
を指定しますが、これはデフォルト値であるため指定は不要です。
SQL> CREATE USER dbuser1 identified by password;
SQL> EXEC SYS.XS_ADMIN_UTIL.GRANT_SYSTEM_PRIVILEGE('ADMINISTER_SESSION', 'dbuser1', XS_ADMIN_UTIL.PTYPE_DB);
次の例では、アプリケーション・ユーザーuser1
を作成して、このアプリケーション・ユーザーにReal Application Security権限ADMINISTER_SESSION
を付与し、user_type
としてデフォルトのXS_ADMIN_UTIL.PTYPE_XS
を指定します。
SQL> EXEC SYS.XS_PRINCIPAL.CREATE_USER('user1','HR1');
SQL> EXEC SYS.XS_PRINCIPAL.SET_PASSWORD('user1', 'password');
SQL> EXEC SYS.XS_ADMIN_UTIL.GRANT_SYSTEM_PRIVILEGE('ADMINISTER_SESSION', 'user1', XS_ADMIN_UTIL.PTYPE_XS);
REVOKE_SYSTEM_PRIVILEGE
を使用して、ユーザーまたはロールからReal Application Securityセキュリティ・クラス権限を取り消します。SYS
権限を持つユーザーのみがこの操作を実行できます。
構文
XS_ADMIN_UTIL.REVOKE_SYSTEM_PRIVILEGE ( priv_name IN VARCHAR2, user_name IN VARCHAR2, user_type IN PLS_INTEGER := XS_ADMIN_UTIL.PTYPE_DB);
パラメータ
パラメータ | 説明 |
---|---|
|
取り消すReal Application Securityセキュリティ・クラス権限の名前を指定します。 |
|
Real Application Securityセキュリティ・クラス権限を取り消すユーザーまたはロールの名前を指定します。 |
|
ユーザーのタイプ。デフォルトではデータベース・ユーザーです。 |
例
次の例では、データベース・ユーザーdbuser1
を作成して、このデータベース・ユーザーからReal Application Security権限ADMINISTER_SESSION
を取り消し、user_type
としてデフォルトのXS_ADMIN_UTIL.PTYPE_DB
を指定しますが、これはデフォルト値であるため指定は不要です。
CREATE USER dbuser1 identified by password;
SYS.XS_ADMIN_UTIL.REVOKE_SYSTEM_PRIVILEGE('ADMINISTER_SESSION','dbuser1', XS_ADMIN_UTIL.PTYPE_DB);
次の例では、アプリケーション・ユーザーuser1
を作成して、このアプリケーション・ユーザーからReal Application Security権限ADMINISTER_SESSION
を取り消し、user_type
としてデフォルトのXS_ADMIN_UTIL.PTYPE_XS
を指定します。
SQL> EXEC SYS.XS_PRINCIPAL.CREATE_USER('user1','HR1');
SQL> EXEC SYS.XS_PRINCIPAL.SET_PASSWORD('user1', 'password');
SQL> EXEC SYS.XS_ADMIN_UTIL.REVOKE_SYSTEM_PRIVILEGE('ADMINISTER_SESSION','user1', XS_ADMIN_UTIL.PTYPE_XS);
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT
文が定義されています。
-- Create a type for key CREATE OR REPLACE TYPE XS$KEY_TYPE AS OBJECT ( primary_key VARCHAR2(130), foreign_key VARCHAR2(4000), -- Foreign key type; 1 = col name, 2 = col value foreign_key_type NUMBER, -- Constructor function CONSTRUCTOR FUNCTION XS$KEY_TYPE (primary_key IN VARCHAR2, foreign_key IN VARCHAR2, foreign_key_type IN NUMBER) RETURN SELF AS RESULT, MEMBER FUNCTION GET_PRIMARY_KEY RETURN VARCHAR2, MEMBER FUNCTION GET_FOREIGN_KEY RETURN VARCHAR2, MEMBER FUNCTION GET_FOREIGN_KEY_TYPE RETURN NUMBER, ); CREATE OR REPLACE TYPE XS$KEY_LIST AS VARRAY(1000) OF XS$KEY_TYPE; CREATE OR REPLACE TYPE XS$REALM_CONSTRAINT_TYPE AS OBJECT ( -- Member variables realm_type NUMBER, -- Member evaluation rule realm VARCHAR2(4000), -- acl list of instance set acl_list XS$NAME_LIST, -- isStatic variable for instance set. Stored as INTEGER. No boolean datatype -- for objects. False is stored as 0 and TRUE is stored as 1 is_static INTEGER, -- Indicate if the realm is parameterized. parameterized INTEGER, -- parent schema name for inherited from parent_schema VARCHAR2(130), -- parent object name for inherited from parent_object VARCHAR2(130), -- keys for inherited from key_list XS$KEY_LIST, -- when condition for inherited from when_condition VARCHAR2(4000), -- Constructor function - row_level realm CONSTRUCTOR FUNCTION XS$REALM_CONSTRAINT_TYPE (realm IN VARCHAR2, acl_list IN XS$NAME_LIST, is_static IN BOOLEAN := FALSE) RETURN SELF AS RESULT, -- Constructor function - parameterized row_level realm CONSTRUCTOR FUNCTION XS$REALM_CONSTRAINT_TYPE (realm IN VARCHAR2, is_static IN BOOLEAN := FALSE) RETURN SELF AS RESULT, -- Constructor function - master realm CONSTRUCTOR FUNCTION XS$REALM_CONSTRAINT_TYPE (parent_schema IN VARCHAR2, parent_object IN VARCHAR2, key_list IN XS$KEY_LIST, when_condition IN VARCHAR2:= NULL) RETURN SELF AS RESULT, -- Accessor functions MEMBER FUNCTION GET_TYPE RETURN NUMBER, MEMBER FUNCTION GET_REALM RETURN VARCHAR2, MEMBER FUNCTION GET_ACLS RETURN XS$NAME_LIST, MEMBER FUNCTION IS_DYNAMIC_REALM RETURN BOOLEAN, MEMBER FUNCTION IS_STATIC_REALM RETURN BOOLEAN, MEMBER FUNCTION IS_PARAMETERIZED_REALM RETURN BOOLEAN, MEMBER FUNCTION GET_KEYS RETURN XS$KEY_LIST, MEMBER FUNCTION GET_PARENT_SCHEMA RETURN VARCHAR2, MEMBER FUNCTION GET_PARENT_OBJECT RETURN VARCHAR2, MEMBER FUNCTION GET_WHEN_CONDITION RETURN VARCHAR2, MEMBER PROCEDURE SET_REALM(realm IN VARCHAR2), MEMBER PROCEDURE ADD_ACLS(acl IN VARCHAR2), MEMBER PROCEDURE ADD_ACLS(acl_list IN XS$NAME_LIST), MEMBER PROCEDURE SET_ACLS(acl_list IN XS$NAME_LIST), MEMBER PROCEDURE SET_DYNAMIC, MEMBER PROCEDURE SET_STATIC, MEMBER PROCEDURE ADD_KEYS(key IN XS$KEY_TYPE), MEMBER PROCEDURE ADD_KEYS(key_list IN XS$KEY_LIST), MEMBER PROCEDURE SET_KEYS(key_list IN XS$KEY_LIST), MEMBER PROCEDURE SET_PARENT_SCHEMA(parent_schema IN VARCHAR2), MEMBER PROCEDURE SET_PARENT_OBJECT(parent_object IN VARCHAR2), MEMBER PROCEDURE SET_WHEN_CONDITION(when_condition IN VARCHAR2) ); -- Create a list of realm constraint type CREATE OR REPLACE TYPE XS$REALM_CONSTRAINT_LIST AS VARRAY(1000) OF XS$REALM_CONSTRAINT_TYPE; -- Create a type for column(attribute) security CREATE OR REPLACE TYPE XS$COLUMN_CONSTRAINT_TYPE AS OBJECT ( -- column list column_list XS$LIST, -- privilege for column security privilege VARCHAR2(261), -- Constructor function CONSTRUCTOR FUNCTION XS$COLUMN_CONSTRAINT_TYPE (column_list IN XS$LIST, privilege IN VARCHAR2) return SELF AS RESULT, MEMBER FUNCTION GET_COLUMNS RETURN XS$LIST, MEMBER FUNCTION GET_PRIVILEGE RETURN VARCHAR2, MEMBER PROCEDURE ADD_COLUMNS(column IN VARCHAR2), MEMBER PROCEDURE ADD_COLUMNS(column_list IN XS$LIST), MEMBER PROCEDURE SET_COLUMNS(column_list IN XS$LIST), MEMBER PROCEDURE SET_PRIVILEGE(privilege IN VARCHAR2) ); -- Create a list of column constraint for column security CREATE OR REPLACE TYPE XS$COLUMN_CONSTRAINT_LIST IS VARRAY(1000) of XS$COLUMN_CONSTRAINT_TYPE;
XS_DATA_SECURITY
パッケージは、SYS
スキーマに作成されます。すべてのスキーマのACL、セキュリティ・クラス、セキュリティ・ポリシーなどのスキーマ・オブジェクトを管理できるADMIN_ANY_SEC_POLICY
がDBA
ロールに付与されます。また、ADMIN_ANY_SEC_POLICY
を付与されているユーザーは、ENABLE_OBJECT_POLICY
、DISABLE_OBJECT_POLICY
、APPLY_OBJECT_POLICY
およびREMOVE_OBJECT_POLICY
プロシージャをコールできます。
ユーザーは、スキーマに対するRESOURCE
ロールを付与されている場合に、自身のスキーマ内のスキーマ・オブジェクトを管理できます。RESOURCE
ロールおよびXS_RESOURCE
アプリケーション・ロールには、スキーマ内のスキーマ・オブジェクトの管理に必要なADMIN_SEC_POLICY
権限が含まれます。
表11-5 XS_DATA_SECURITYサブプログラムの要約
サブプログラム | 簡単な説明 |
---|---|
新規データ・セキュリティ・ポリシーを作成します。 |
|
1つ以上のデータ・レルム制約を既存のデータ・セキュリティ・ポリシーに追加します。 |
|
指定されたデータ・セキュリティ・ポリシーのすべてのデータ・レルム制約を削除します。 |
|
1つ以上の列制約を指定されたデータ・セキュリティ・ポリシーに追加します。 |
|
データ・セキュリティ・ポリシーからすべての列制約を削除します。 |
|
指定されたデータ・セキュリティ・ポリシーのACLパラメータを作成します。 |
|
指定されたデータ・セキュリティ・ポリシーからACLパラメータを削除します。 |
|
指定されたデータ・セキュリティ・ポリシーの説明文字列を設定します。 |
|
データ・セキュリティ・ポリシーを削除します。 |
表11-6 表またはビューでデータ・セキュリティ・ポリシーを管理するためのXS_DATA_SECURITYサブプログラムの要約
サブプログラム | 簡単な説明 |
---|---|
指定された表またはビューのデータ・セキュリティ・ポリシーを有効にします。 |
|
指定された表またはビューのデータ・セキュリティ・ポリシーを無効にします。 |
|
指定された表またはビューを削除せずに、そこからデータ・セキュリティを削除します。 |
|
指定された表またはビューのデータ・セキュリティ・ポリシーを有効または再度有効にします。 |
CREATE_POLICY
プロシージャは、新規データ・セキュリティ・ポリシーを作成します。
構文
XS_DATA_SECURITY.CREATE_POLICY ( name IN VARCHAR2, realm_constraint_list IN XS$REALM_CONSTRAINT_LIST, column_constraint_list IN XS$COLUMN_CONSTRAINT_LIST := NULL, description IN VARCHAR2 :=NULL) ;
パラメータ
パラメータ | 説明 |
---|---|
|
作成するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
データ・セキュリティ・ポリシーによって保護される行を決定するデータ・レルム制約のリスト。 |
|
これはオプションです。保護する属性と権限のリスト。 |
|
データ・セキュリティ・ポリシーのオプションの説明。 |
例
次の例は、USER1.EMPLOYEES_DS
というデータ・セキュリティ・ポリシーを作成します。データ・レルム制約を使用して、部門番号60
および100
に関連するデータを保護します。また、SALARY
列(属性)へのアクセスは列制約を使用して制限されます。
DECLARE realm_cons XS$REALM_CONSTRAINT_LIST; column_cons XS$COLUMN_CONSTRAINT_LIST; BEGIN realm_cons := XS$REALM_CONSTRAINT_LIST( XS$REALM_CONSTRAINT_TYPE(realm=> 'DEPARTMENT_ID in (60, 100)', acl_list=> XS$NAME_LIST('HRACL'))); column_cons := XS$COLUMN_CONSTRAINT_LIST( XS$COLUMN_CONSTRAINT_TYPE(column_list=> XS$LIST('SALARY'), privilege=> 'VIEW_SENSITIVE_INFO')); SYS.XS_DATA_SECURITY.CREATE_POLICY( name=>'USER1.EMPLOYEES_DS', realm_constraint_list=>realm_cons, column_constraint_list=>column_cons); END;
APPEND_REALM_CONSTRAINTS
プロシージャは、1つ以上のデータ・レルム制約を既存のデータ・セキュリティ・ポリシーに追加します。
構文
XS_DATA_SECURITY.APPEND_REALM_CONSTRAINTS ( policy IN VARCHAR2, realm_constraint IN XS$REALM_CONSTRAINT_TYPE); XS_DATA_SECURITY.APPEND_REALM_CONSTRAINTS ( policy IN VARCHAR2, realm_constraint_list IN XS$REALM_CONSTRAINT_LIST);
パラメータ
パラメータ | 説明 |
---|---|
|
データ・レルム制約を追加するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
データ・セキュリティ・ポリシーに追加するデータ・レルム制約。 |
|
データ・セキュリティ・ポリシーに追加するデータ・レルム制約のリスト。 |
例
次の例は、新規データ・レルム制約をEMPLOYEES_DS
データ・セキュリティ・ポリシーに追加します。
DECLARE realm_cons XS$REALM_CONSTRAINT_TYPE; BEGIN realm_cons := XS$REALM_CONSTRAINT_TYPE(realm=> 'DEPARTMENT_ID in (40, 50)', acl_list=> XS$NAME_LIST('HRACL')); SYS.XS_DATA_SECURITY.APPEND_REALM_CONSTRAINTS( policy=>'EMPLOYEES_DS', realm_constraint=>realm_cons); END;
REMOVE_REALM_CONSTRAINTS
プロシージャは、データ・セキュリティ・ポリシーからすべてのデータ・レルム制約を削除します。
構文
XS_DATA_SECURITY.REMOVE_REALM_CONSTRAINTS ( policy IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
データ・レルム制約を削除するデータ・セキュリティ・ポリシーの名前。 名前は、 |
例
次の例は、EMPLOYEES_DS
データ・セキュリティ・ポリシーからすべてのデータ・レルム制約を削除します。
BEGIN SYS.XS_DATA_SECURITY.REMOVE_REALM_CONSTRAINTS('EMPLOYEES_DS'); END;
ADD_COLUMN_CONSTRAINTS
プロシージャは、1つ以上の列制約をデータ・セキュリティ・ポリシーに追加します。
構文
XS_DATA_SECURITY.ADD_COLUMN_CONSTRAINTS ( policy IN VARCHAR2, column_constraint IN XS$COLUMN_CONSTRAINT_TYPE); XS_DATA_SECURITY.ADD_COLUMN_CONSTRAINTS ( policy IN VARCHAR2, column_constraint_list IN XS$COLUMN_CONSTRAINT_LIST);
パラメータ
パラメータ | 説明 |
---|---|
|
属性制約を追加するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
追加する列制約。 |
|
追加する列制約のリスト。 |
例
次の例は、COMMISSION_PCT
列に対する列制約をEMPLOYEES_DS
データ・セキュリティ・ポリシーに追加します。
DECLARE column_cons XS$COLUMN_CONSTRAINT_TYPE; BEGIN column_cons := XS$COLUMN_CONSTRAINT_TYPE(column_list=> XS$LIST('COMMISSION_PCT'), privilege=> 'VIEW_SENSITIVE_INFO'); SYS.XS_DATA_SECURITY.ADD_COLUMN_CONSTRAINTS( policy=>'EMPLOYEES_DS', column_constraint=>column_cons); END;
REMOVE_COLUMN_CONSTRAINTS
プロシージャは、データ・セキュリティ・ポリシーからすべての列制約を削除します。
構文
XS_DATA_SECURITY.REMOVE_COLUMN_CONSTRAINTS ( policy IN VARCHAR2,);
パラメータ
パラメータ | 説明 |
---|---|
|
列制約を削除するデータ・セキュリティ・ポリシーの名前。 名前は、 |
例
次の例は、EMPLOYEES_DS
データ・セキュリティ・ポリシーからすべての列制約を削除します。
BEGIN SYS.XS_DATA_SECURITY.REMOVE_COLUMN_CONSTRAINTS('EMPLOYEES_DS'); END;
CREATE_ACL_PARAMETER
プロシージャは、データ・セキュリティ・ポリシーのACLパラメータを作成します。
構文
XS_DATA_SECURITY.CREATE_ACL_PARAMETER ( policy IN VARCHAR2, parameter IN VARCHAR2, param_type IN NUMBER);
パラメータ
パラメータ | 説明 |
---|---|
|
ACLパラメータを作成する必要のあるデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
作成するACLパラメータの名前。 |
|
パラメータのデータ型。これは |
例
次の例は、DEPT_POLICY
というACLパラメータをEMPLOYEES_DS
データ・セキュリティ・ポリシーに対して作成します。
BEGIN SYS.XS_DATA_SECURITY.CREATE_ACL_PARAMETER('EMPLOYEES_DS','DEPT_POLICY',1); END;
DELETE_ACL_PARAMETER
プロシージャは、データ・セキュリティ・ポリシーのACLパラメータを削除します。
構文
XS_DATA_SECURITY.DELETE_ACL_PARAMETER ( policy IN VARCHAR2, parameter IN VARCHAR2, delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);
パラメータ
パラメータ | 説明 |
---|---|
|
ACLパラメータを削除するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
削除するACLパラメータの名前。 |
|
使用する削除オプション。次のオプションがあります。
|
例
次の例は、デフォルト・オプションを使用してDEPT_POLICY
ACLパラメータをEMPLOYEES_DS
データ・セキュリティ・ポリシーから削除します。
BEGIN SYS.XS_DATA_SECURITY.DELETE_ACL_PARAMETER('EMPLOYEES_DS','DEPT_POLICY', XS_ADMIN_UTIL.DEFAULT_OPTION); END;
SET_DESCRPTION
プロシージャは、指定されたデータ・セキュリティ・ポリシーの説明文字列を設定します。
構文
XS_DATA_SECURITY.SET_DESCRIPTION ( policy IN VARCHAR2, description IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
説明を設定するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
指定されたデータ・セキュリティ・ポリシーの説明文字列。 |
例
次の例は、EMPLOYEES_DS
データ・セキュリティ・ポリシーの説明文字列を設定します。
BEGIN SYS.XS_DATA_SECURITY.SET_DESCRIPTION('EMPLOYEES_DS', 'Data Security Policy for HR.EMPLOYEES'); END;
DELETE_POLICY
プロシージャは、データ・セキュリティ・ポリシーを削除します。
構文
XS_DATA_SECURITY.DELETE_POLICY( policy IN VARCHAR2, delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);
パラメータ
パラメータ | 説明 |
---|---|
|
削除するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
使用する削除オプション。セキュリティ・ポリシーに対して、次のオプションの動作は同じです。
|
例
次の例は、デフォルト・オプションを使用してEMPLOYEES_DS
データ・セキュリティ・ポリシーを削除します。
BEGIN SYS.XS_DATA_SECURITY.DELETE_POLICY('EMPLOYEES_DS', XS_ADMIN_UTIL.DEFAULT_OPTION); END;
ENABLE_OBJECT_POLICY
プロシージャは、指定された表またはビューのデータ・セキュリティ・ポリシーを有効にします。ENABLE_OBJECT_POLICY
は、表またはビューに対してACLベースの行レベル・データ・セキュリティ・ポリシーを有効にします。
影響する表に対してインポートまたはエクスポートを実行した後で、またはデバッグの目的で、データ・セキュリティ・ポリシーを有効にすることが必要な場合があります。
現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。
構文
XS_DATA_SECURITY.ENABLE_OBJECT_POLICY ( policy IN VARCHAR2, schema IN VARCHAR2, object IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
有効にするデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
有効にする表またはビューを含むスキーマの名前。 |
|
データ・セキュリティ・ポリシーを有効にする表またはビューの名前。 |
例
次の例は、sales
スキーマのproducts
表に対してXDSを有効にします。
BEGIN SYS.XS_DATA_SECURITY.ENABLE_OBJECT_POLICY(policy =>'CUST_DS', schema=>'sales', object=>'products'); END;
DISABLE_OBJECT_POLICY
プロシージャは、指定された表またはビューのデータ・セキュリティ・ポリシーを無効にします。DISABLE_OBJECT_POLICY
は、表またはビューに対してACLベースの行レベル・データ・セキュリティ・ポリシーを無効にします。
影響する表に対してインポートまたはエクスポートを実行する場合、またはデバッグの目的で、Real Application Securityを無効にすることが必要な場合があります。
現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。
構文
XS_DATA_SECURITY.DISABLE_OBJECT_POLICY ( policy IN VARCHAR2, schema IN VARCHAR2, object IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
無効にするデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
無効にする表またはビューを含むスキーマの名前。 |
|
データ・セキュリティ・ポリシーを無効にする表またはビューの名前。 |
例
次の例は、sales
スキーマのproducts
表に対してXDSを無効にします。
BEGIN SYS.XS_DATA_SECURITY.DISABLE_OBJECT_POLICY(policy =>'CUST_DS', schema=>'sales', object=>'products'); END;
REMOVE_OBJECT_POLICY
プロシージャは、指定された表またはビューを削除せずに、そこからデータ・セキュリティ・ポリシーを削除します。REMOVE_OBJECT_POLICY
は、静的データ・レルム制約でENABLE_XDS
によって作成されたACLマテリアライズド・ビューを削除します。
現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。
構文
XS_DATA_SECURITY.REMOVE_OBJECT_POLICY ( policy IN VARCHAR2, schema IN VARCHAR2, object IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
削除するデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
データ・セキュリティ・ポリシーを削除する表またはビューを含むスキーマの名前。 |
|
データ・セキュリティ・ポリシーを削除する表またはビューの名前 |
例
次の例は、sales
スキーマのproducts
表からCUST_DS
データ・セキュリティ・ポリシーを削除します。
BEGIN SYS.XS_DATA_SECURITY.REMOVE_OBJECT_POLICY(policy=>'CUST_DS', schema=>'sales', object=>'products'); END;
APPLY_OBJECT_POLICY
プロシージャは、指定されたデータベース表またはビューのデータ・セキュリティ・ポリシーを有効または再度有効にします。
現在のユーザーが使用可能な表またはビューのデータ・セキュリティ・ポリシーのステータスを調べるには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。
構文
XS_DATA_SECURITY.APPLY_OBJECT_POLICY ( policy IN VARCHAR2, schema IN VARCHAR2, object IN VARCHAR2, row_acl IN BOOLEAN DEFAULT FALSE, owner_bypass IN BOOLEAN DEFAULT FALSE, statement_types IN VARCHAR2 DEFAULT NULL, aclmv IN VARCHAR2 DEFAULT NULL );
パラメータ
パラメータ | 説明 |
---|---|
|
有効にするデータ・セキュリティ・ポリシーの名前。 名前は、 |
|
有効または再度有効にするリレーショナル表またはビューを含むスキーマの名前。 |
|
データ・セキュリティ・ポリシーを有効または再度有効にするリレーショナル表またはビューの名前。 |
|
デフォルトは |
|
オブジェクトの所有者はデータ・セキュリティ・ポリシーをバイパスできます。デフォルトは |
|
タイプは、 アプリケーション・セキュリティにより、表の行を更新する必要があり、同じ表の特定の列への読取りアクセスも制限される場合は、2つの |
|
静的ACL情報をメンテナンスするユーザー提供のMV名を指定します。MVには、 |
例
次の例は、HR
スキーマのEMP
表に対してDEPT_POLICY
データ・セキュリティ・ポリシーを有効にします。
BEGIN sys.xs_data_security.apply_object_policy( policy => 'HR.EMPLOYEES_DS', schema => 'HR', object => 'EMPLOYEES', statement_types => 'SELECT', owner_bypass => true); END;
ACLMV_ON_DEMAND CONSTANT VARCHAR2(9) := 'ON DEMAND'; ACLMV_ON_COMMIT CONSTANT VARCHAR2(9) := 'ON COMMIT';
静的ACLMVに対するリフレッシュのタイプは次のとおりです。
XS_ON_COMMIT_MV CONSTANT BINARY_INTEGER := 0; XS_ON_DEMAND_MV CONSTANT BINARY_INTEGER := 1; XS_SCHEDULED_MV CONSTANT BINARY_INTEGER := 2;
静的ACLMVのタイプは次のとおりです。
XS_SYSTEM_GENERATED_MV CONSTANT BINARY_INTEGER := 0; XS_USER_SPECIFIED_MV CONSTANT BINARY_INTEGER := 1;
表11-7 XS_DATA_SECURITY_UTILサブプログラムの要約
サブプログラム | 簡単な説明 |
---|---|
ユーザー表に対する静的ACLの自動リフレッシュをスケジュールします |
|
ACLリフレッシュ・モードをコミット時またはオンデマンド・リフレッシュに変更します。 |
SCHEDULE_STATIC_ACL_REFRESH
プロシージャを使用して、ユーザー表に対する静的ACLの自動リフレッシュを起動またはスケジュールします。start_date
およびrepeat_interval
パラメータにNULL
値が渡された場合は、リフレッシュを即時に開始できます。
現在のユーザーが使用可能な表またはビューに対して実行されたすべての最新のACLリフレッシュ・ジョブのステータスを調べるには、ALL_XDS_LATEST_ACL_REFSTAT、DBA_XDS_LATEST_ACL_REFSTATおよびUSER_XDS_LATEST_ACL_REFSTATデータ・ディクショナリ・ビューを問い合せます。すべての静的ACLリフレッシュ・ジョブ・ステータス履歴は、ALL_XDS_ACL_REFSTAT、DBA_XDS_ACL_REFSTATおよびUSER_XDS_ACL_REFSTATデータ・ディクショナリ・ビューにあります。
構文
XS_DATA_SECURITY_UTIL.SCHEDULE_STATIC_ACL_REFRESH ( schema_name IN VARCHAR2 DEFAULT NULL, table_name IN VARCHAR2, start_date IN TIMESTAMP WITH TIME ZONE DEFAULT NULL, repeat_interval IN VARCHAR2 DEFAULT NULL, comments IN VARCHAR2 DEFAULT NULL );
パラメータ
パラメータ | 説明 |
---|---|
|
表が属するスキーマの名前を指定します。 |
|
静的ACLリフレッシュに対して表を一意に識別するために前述のスキーマ名とともに使用される表名。 |
|
この属性は、このリフレッシュの実行がスケジュールされている最初の日付を指定します。ファンクションが繰り返し呼び出される場合は、最後に指定された
|
|
リフレッシュを繰り返す間隔を指定します。反復間隔は、 指定された式を評価して、リフレッシュの次回実行時を決定します。
|
|
ジョブのコメントを指定します。デフォルトでは、この属性は |
例
SYS.XS_DATA_SECURITY_UTIL.SCHEDULE_STATIC_ACL_REFRESH('aclmvuser', 'sales', SYSTIMESTAMP, 'freq=hourly; interval=2');
構文
XS_DATA_SECURITY_UTIL.ALTER_STATIC_ACL_REFRESH ( schema_name IN VARCHAR2 DEFAULT NULL, table_name IN VARCHAR2, refresh_mode IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
表が属するスキーマの名前を指定します。 |
|
静的ACLリフレッシュ・モードを変更する表を一意に識別するためにスキーマ名とともに使用される表名。 |
|
|
例
SYS.XS_DATA_SECURITY_UTIL.ALTER_STATIC_ACL_REFRESH('aclmvuser','sales', refresh_mode=>'ON COMMIT');
XS_DIAG
パッケージには、プリンシパル、セキュリティ・クラス、ACL、データ・セキュリティ・ポリシー、ネームスペースおよびワークスペース内のすべてのオブジェクトのデータ・セキュリティの潜在的な問題を診断するサブプログラムが含まれます。すべてのサブプログラムは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にそれぞれFALSE
を戻します。識別された各不整合について、error_limit
パラメータで指定した不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、この検証表を問い合せて、メッセージ・コード、エラーの説明、無効なオブジェクトに通じるパス、不整合の性質を識別するのに役立つ可能性のあるその他の有用な情報などの情報について識別された不整合を判断できます。
表11-8 XS_DIAGサブプログラムの要約
サブプログラム | 説明 |
---|---|
プリンシパルを検証します。 |
|
セキュリティ・クラスを検証します。 |
|
ACLを検証します。 |
|
データ・セキュリティ・ポリシーを検証するか、特定の表に対してデータ・セキュリティ・ポリシーを検証します。 |
|
ネームスペース・テンプレートを検証します。 |
|
ワークスペース全体を検証します。 |
VALIDATE_PRINCIPAL
ファンクションは、プリンシパルを検証します。このファンクションは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にFALSE
を戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。
構文
validate_principal(name IN VARCHAR2, error_limit IN PLS_INTEGER := 1) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
プリンシパル、ユーザーuser1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_principal('user1', 100) then dbms_output.put_line('The user is valid.'); else dbms_output.put_line('The user is invalid.'); end if; end; / select * from xs$validation_table;
プリンシパル、ロールrole1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_principal('role1', 100) then dbms_output.put_line('The role is valid.'); else dbms_output.put_line('The role is invalid.'); end if; end; / select * from xs$validation_table;
VALIDATE_SECURITY_CLASS
ファンクションは、セキュリティ・クラスを検証します。このファンクションは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にFALSE
を戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。
構文
validate_security_class(name IN VARCHAR2, error_limit IN PLS_INTEGER := 1) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
セキュリティ・クラスsec1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_security_class('sec1', 100) then dbms_output.put_line('The security class is valid.'); else dbms_output.put_line('The security class is invalid.'); end if; end; / select * from xs$validation_table;
VALIDATE_ACL
ファンクションは、ACLを検証します。このファンクションは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にFALSE
を戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。
構文
validate_acl(name IN VARCHAR2, error_limit IN PLS_INTEGER := 1) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
ACL acl1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_acl('acl1', 100) then dbms_output.put_line('The ACL is valid.'); else dbms_output.put_line('The ACL is invalid.'); end if; end; / select * from xs$validation_table;
VALIDATE_DATA_SECURITY
ファンクションは、データ・セキュリティを検証します。このファンクションは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にFALSE
を戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。
このファンクションには、ポリシー検証のスタイルが3つあります。
policy
がNULL以外で、table_name
がNULL
の場合、ファンクションはポリシーが適用されるすべての表に対してポリシーを検証します。table_name
がNULLの場合、table_owner
はNULL以外の場合でも無視されます。
policy
とtable_name
の両方がNULL以外の場合、ファンクションは特定の表に対してポリシーを検証します。table_owner
が指定されていない場合は、現在のスキーマが使用されます。
ポリシーがNULLでtable_nameがNULL以外の場合、ファンクションは表に適用されているすべてのポリシーを表に対して検証します。table_owner
が指定されていない場合は、現在のスキーマが使用されます。
構文
validate_data_security(policy IN VARCHAR2 :=NULL, table_owner IN VARCHAR2 :=NULL, table_name IN VARCHAR2 :=NULL, error_limit IN PLS_INTEGER := 1) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
表またはビューのスキーマの名前。 |
|
表またはビューの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
適用されているすべての表でポリシーpolicy1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_data_security(policy => 'policy1', error_limit => 100) then dbms_output.put_line('The policy is valid on all the applied tables.'); else dbms_output.put_line('The policy is invalid on some of the applied tables.'); end if; end; / select * from xs$validation_table;
特定の表でポリシーpolicy1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_data_security(policy => 'policy1', table_owner => 'HR', table_name => 'EMPLOYEES', error_limit => 100) then dbms_output.put_line('The policy is valid on the table.'); else dbms_output.put_line('The policy is invalid on the table.'); end if; end; / select * from xs$validation_table;
特定の表に適用されているすべてのポリシーを検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_data_security(table_owner => 'HR', table_name => 'EMPLOYEES', error_limit => 100) then dbms_output.put_line('All the applied policies on the table are valid.'); else dbms_output.put_line('Some applied policies on the table are invalid'); end if; end; / select * from xs$validation_table;
VALIDATE_NAMESPACE_TEMPLATE
ファンクションは、ネームスペースを検証します。このファンクションは、オブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にFALSE
を戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。
構文
validate_namespace_template(name IN VARCHAR2, error_limit IN PLS_INTEGER := 1) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
検証するオブジェクトの名前。 |
|
検証表に格納できる不整合の最大数。 |
例
ネームスペースns1
を検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_namespace_template('ns1', 100) then dbms_output.put_line('The namespace template is valid.'); else dbms_output.put_line('The namespace template is invalid.'); end if; end; / select * from xs$validation_table;
VALIDATE_WORKSPACE
ファンクションは、すべてのアーティファクトを検証します。つまり、ワークスペースに存在するすべてのオブジェクトをこの1つのファンクションを使用して検証します。このファンクションは、すべてのオブジェクトが有効な場合にTRUE
を戻し、それ以外の場合にFALSE
を戻します。識別された各不整合について、格納できる不整合の最大数に達するまで、行がXS$VALIDATION_TABLE
検証表に挿入されます。ユーザーは、検証失敗の原因を調べるために検証表を問い合せる必要があります。
構文
validate_workspace(error_limit IN PLS_INTEGER := 1) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
検証表に格納できる不整合の最大数。 |
例
ワークスペース内のすべてのオブジェクトを検証してから、不整合がある場合に検証表を問い合せます。
begin if sys.xs_diag.validate_workspace(100) then dbms_output.put_line('The objects are valid.'); else dbms_output.put_line('The objects are invalid.'); end if; end; / select * from xs$validation_table;
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT
文が定義されています。
-- Type definition for namespace template attribute CREATE OR REPLACE TYPE XS$NS_ATTRIBUTE AS OBJECT ( -- Member Variables -- Name of the namespace template attribute -- Must be unique within a namespace template -- Cannot be null name VARCHAR2(4000), -- Default value assigned to the attribute default_value VARCHAR2(4000), -- Trigger events associated with the attribute -- Allowed values are : -- 0 : NO_EVENT -- 1 : FIRST_READ_EVENT -- 2 : UPDATE_EVENT -- 3 : FIRST_READ_PLUS_UPDATE_EVENT attribute_events NUMBER, -- Constructor function CONSTRUCTOR FUNCTION XS$NS_ATTRIBUTE (name IN VARCHAR2, default_value IN VARCHAR2 := NULL, attribute_events IN NUMBER := 0) RETURN SELF AS RESULT, -- Return the name of the attribute MEMBER FUNCTION GET_NAME RETURN VARCHAR2, -- Return the default value of the attribute MEMBER FUNCTION GET_DEFAULT_VALUE RETURN VARCHAR2, -- Return the trigger events associated with attribute MEMBER FUNCTION GET_ATTRIBUTE_EVENTS RETURN NUMBER, -- Mutator procedures -- Set the default value for the attribute MEMBER PROCEDURE SET_DEFAULT_VALUE(default_value IN VARCHAR2), -- Associate trigger events to the attribute MEMBER PROCEDURE SET_ATTRIBUTE_EVENTS(attribute_events IN NUMBER) ); CREATE OR REPLACE TYPE XS$NS_ATTRIBUTE_LIST AS VARRAY(1000) OF XS$NS_ATTRIBUTE;
表11-9 XS_NAMESPACEサブプログラムの要約
サブプログラム | 説明 |
---|---|
新規ネームスペース・テンプレートを作成します。 |
|
既存のネームスペース・テンプレートに1つ以上の属性を追加します。 |
|
ネームスペース・テンプレートから1つ以上の属性を削除します。 |
|
指定されたネームスペース・テンプレートにハンドラ・ファンクションを割り当てます。 |
|
指定されたネームスペース・テンプレートの説明文字列を設定します。 |
|
指定されたネームスペース・テンプレートを削除します。 |
構文
XS_NAMESPACE.CREATE_TEMPLATE ( name IN VARCHAR2, attr_list IN XS$NS_ATTRIBUTE_LIST := NULL, schema IN VARCHAR2 := NULL, package IN VARCHAR2 := NULL, function IN VARCHAR2 := NULL, acl IN VARCHAR2 := 'SYS.NS_UNRESTRICTED_ACL' description IN VARCHAR2 := NULL);
パラメータ
パラメータ | 説明 |
---|---|
|
作成するネームスペース・テンプレートの名前。 |
|
ネームスペース・テンプレートに含まれる属性と、それらのデフォルト値および |
|
ネームスペース・テンプレートのハンドラ・ファンクションを含むスキーマ。 |
|
ネームスペース・テンプレートのハンドラ・ファンクションを含むパッケージ。 |
|
ネームスペース・テンプレートのハンドラ・ファンクション。ハンドラ・ファンクションは、属性イベントの発生時にコールされます。 |
|
このネームスペース・テンプレートのACLの名前。ACLが提供されていない場合、デフォルトは、アプリケーション・ユーザーによる無制限の属性操作を許可する事前定義済ACL |
|
ネームスペース・テンプレートのオプションの説明文字列。 |
例
次の例は、POAttrs
というネームスペース・テンプレートを作成します。ネームスペース・テンプレートには、attrlist
で定義されている属性のリストが含まれます。ネームスペース・テンプレートのハンドラ・ファンクションはPopulate_Order_Func
と呼ばれます。このハンドラ・ファンクションは、SCOTT
スキーマに含まれるOrders_Pckg
パッケージの一部です。ネームスペース・テンプレートには、テンプレートから作成されたネームスペースに対する無制限の操作を許可するNS_UNRESTRICTED_ACL
がテンプレートに設定されています。
DECLARE attrlist XS$NS_ATTRIBUTE_LIST; BEGIN attrlist := XS$NS_ATTRIBUTE_LIST(); attrlist.extend(2); attrlist(1) := XS$NS_ATTRIBUTE('desc', 'general'); attrlist(2) := XS$NS_ATTRIBUTE(name=>'item_no', attribute_events=>XS_NAMESPACE.FIRSTREAD_EVENT); SYS.XS_NAMESPACE.CREATE_TEMPLATE('POAttrs', attrlist, 'SCOTT', 'Orders_Pckg','Populate_Order_Func', 'SYS.NS_UNRESTRICTED_ACL', 'Purchase Order Attributes'); END;
ADD_ATTRIBUTES
プロシージャは、既存のネームスペース・テンプレートに1つ以上の属性を追加します。
構文
XS_NAMESPACE.ADD_ATTRIBUTES ( template IN VARCHAR2, attribute IN VARCHAR2, default_value IN VARCHAR2 := NULL, attribute_events IN PLS_INTEGER := XS_NAMESPACE.NO_EVENT); XS_NAMESPACE.ADD_ATTRIBUTES ( template IN VARCHAR2, attr_list IN XS$NS_ATTRIBUTE_LIST);
パラメータ
パラメータ | 説明 |
---|---|
|
属性が追加されるネームスペース・テンプレートの名前。 |
|
追加する属性の名前。 |
|
追加する属性のリスト。 |
|
属性のデフォルト値。 |
|
属性に関連付けられている更新イベントなどの属性イベント。 |
例
次の例は、item_type
という属性をPOAttrs
ネームスペースに追加します。追加される新規属性のデフォルト値と属性イベントも指定します。
BEGIN SYS.XS_NAMESPACE.ADD_ATTRIBUTES(template=>'POAttrs',attribute=>'item_type', default_value=>'generic', attribute_events=>XS_NAMESPACE.update_event); END;
REMOVE_ATTRIBUTES
プロシージャは、ネームスペース・テンプレートから1つ以上の属性を削除します。属性名が指定されていない場合は、すべての属性がネームスペース・テンプレートから削除されます。
構文
XS_NAMESPACE.REMOVE_ATTRIBUTES ( template IN VARCHAR2, attribute IN VARCHAR2); XS_NAMESPACE.REMOVE_ATTRIBUTES ( template IN VARCHAR2, attr_list IN XS$LIST); XS_NAMESPACE.REMOVE_ATTRIBUTES ( template IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
属性が削除されるネームスペース・テンプレートの名前。 |
|
削除する属性の名前。 |
|
削除する属性名のリスト。 |
例
次の例は、item_type
属性をPOAttrs
ネームスペースから削除します。
BEGIN SYS.XS_NAMESPACE.REMOVE_ATTRIBUTES('POAttrs','item_type'); END;
次の例は、POAttrs
ネームスペース・テンプレートからすべての属性を削除します。
BEGIN SYS.XS_NAMESPACE.REMOVE_ATTRIBUTES('POAttrs'); END;
SET_HANDLER
プロシージャは、指定されたネームスペース・テンプレートにハンドラ・ファンクションを割り当てます。
構文
XS_NAMESPACE.SET_HANDLER ( template IN VARCHAR2, schema IN VARCHAR2, package IN VARCHAR2, function IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
ハンドラ・ファンクションを設定するネームスペース・テンプレートの名前。 |
|
ハンドラ・パッケージとファンクションを含むスキーマ。 |
|
ハンドラ・ファンクションを含むパッケージの名前。 |
|
ネームスペース・テンプレートのハンドラ・ファンクションの名前。 |
例
次の例は、Populate_Order_Func
というハンドラ・ファンクションをPOAttrs
ネームスペース・テンプレートに対して設定します。
BEGIN SYS.XS_NAMESPACE.SET_HANDLER('POAttrs','SCOTT', 'Orders_Pckg','Populate_Order_Func'); END;
SET_DESCRIPTION
プロシージャは、指定されたネームスペース・テンプレートの説明文字列を設定します。
構文
XS_NAMESPACE.SET_DESCRIPTION ( template IN VARCHAR2, description IN VARCHAR2);
パラメータ
パラメータ | 説明 |
---|---|
|
説明を設定するネームスペース・テンプレートの名前。 |
|
指定されたネームスペース・テンプレートの説明文字列。 |
例
次の例は、POAttrs
ネームスペース・テンプレートの説明文字列を設定します。
BEGIN SYS.XS_NAMESPACE.SET_DESCRIPTION('POAttrs','Purchase Order Attributes'); END;
構文
XS_NAMESPACE.DELETE_TEMPLATE( template IN VARCHAR2, delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);
パラメータ
パラメータ | 説明 |
---|---|
|
削除するネームスペース・テンプレートの名前。 |
|
使用する削除オプション。ネームスペース・テンプレートに対して、次のオプションの動作は同じです。
|
例
次の例は、デフォルトの削除オプションを使用してPOAttrsネームスペース・テンプレートを削除します。
BEGIN SYS.XS_NAMESPACE.DELETE_TEMPLATE('POAttrs',XS_ADMIN_UTIL.DEFAULT_OPTION); END;
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび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;
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-10 XS_PRINCIPALサブプログラムの要約
サブプログラム | 説明 |
---|---|
アプリケーション・ユーザーを作成します。 |
|
アプリケーション・ロールを作成します。 |
|
動的アプリケーション・ロールを作成します。 |
|
1つ以上のアプリケーション・ロールをアプリケーション・プリンシパルに付与します。 |
|
1つ以上のロールをアプリケーション・プリンシパルから取り消します。 |
|
ターゲット・アプリケーション・ユーザーのプロキシ・ユーザーを追加します。 |
|
ターゲット・アプリケーション・ユーザーの指定されたプロキシ・ユーザーまたはすべてのプロキシ・ユーザーを削除します。 |
|
データベース・ユーザーにプロキシ・アプリケーション・ユーザーを追加します。 |
|
データベース・ユーザーからプロキシ・アプリケーション・ユーザーを削除します。 |
|
アプリケーション・ユーザーまたはロールの有効日を設定または変更します。 |
|
動的アプリケーション・ロールの期間(分単位)を設定または変更します。 |
|
|
|
アプリケーション・ロールを有効または無効にします。 |
|
指定されたユーザーに直接付与されているすべてのロールを有効または無効にします。 |
|
アプリケーション・ユーザーのデータベース・スキーマを設定します。 |
|
外部ユーザーまたはロールのGUIDを設定します。 |
|
アプリケーション・ユーザーのプロファイルを設定します。Real Application Securityアプリケーション・ユーザーのデータベース使用率やデータベース・インスタンス・リソースを制限する、一連のリソース制限およびパスワード・パラメータです。 |
|
|
|
アプリケーション・ユーザー・アカウントのパスワードを設定または変更します。 |
|
アプリケーション・ユーザー・アカウントの検証機能を設定または変更します。 |
|
アプリケーション・ユーザーまたはロールの説明文字列を設定します。 |
|
アプリケーション・ユーザーまたはロールを削除します。 |
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);
パラメータ
パラメータ | 説明 |
---|---|
|
作成するアプリケーション・ユーザーの名前。 |
|
作成時のユーザーのステータス。これは、次のいずれかの値です。
デフォルト値は 値 |
|
ユーザーに関連付けるデータベース・スキーマ。これはオプションです。 |
|
ユーザー・アカウントが有効になる日付。これはオプションです。 |
|
ユーザー・アカウントが無効になる日付。これはオプションです。
|
|
ユーザーのGUID。これは外部ユーザーに対してのみ有効です。 |
|
このユーザーのソースであるシステムの名前。これはオプションです。 |
|
ユーザー・アカウントの説明。これはオプションです。 |
例
次の例は、ユーザーを作成します。
BEGIN 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
システム権限が必要です。
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 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);
パラメータ
パラメータ | 説明 |
---|---|
|
作成する動的アプリケーション・ロールの名前。 |
|
動的アプリケーション・ロールの期間(分単位)。オプション属性。 |
|
動的アプリケーション・ロールのスコープ属性。可能な値は |
|
動的アプリケーション・ロールのオプションの説明。 |
例
次の例は、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
プロシージャは、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;
次の例では、ユーザーXSUSER
にロールXSCONNECT
を付与する方法を示します。この付与により、ユーザー
がそのパスワードを使用してデータベースに接続できます。XSUSER
EXEC SYS.XS_PRINCIPAL.GRANT_ROLES('XSUSER', 'XSCONNECT');
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
は、指定されたアプリケーション・ユーザーのターゲット・ユーザーを追加します。これにより、アプリケーション・ユーザーがターゲット・ユーザーのプロキシとして機能できます。このプロシージャには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
プロシージャは、ターゲット・アプリケーション・ユーザーの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
は、指定されたターゲット・プロキシ・アプリケーション・ユーザーを指定されたデータベース・ユーザーに追加します。アプリケーション・ユーザーは直接ログオン・ユーザーである必要があります。これにより、アプリケーション・ユーザーがターゲット・データベース・ユーザーのプロキシとして機能できます。デフォルトでは、ターゲット・ユーザーに割り当てられているすべてのロールをプロキシ・ユーザーが使用できます。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
プロシージャは、データベース・ユーザーからプロキシ・アプリケーション・ユーザーを関連付け解除します。関連付けられたプロキシ・ロールは、アプリケーション・ユーザーから自動的に削除されます。
プロキシ・ユーザーをデータベース・ユーザーから削除するには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
プロシージャは、アプリケーション・ユーザーまたはロールの有効日を設定または変更します。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
プロシージャは、動的アプリケーション・ロールの期間を設定または変更します。期間は分で指定します。
ロールを変更するには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
プロシージャは、動的アプリケーション・ロールのスコープを設定または変更します。セッション(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
プロシージャは、標準アプリケーション・ロールを有効または無効にします。
有効になっている場合、アプリケーション・ロールは付与先のプリンシパルに対して自動的に有効になります。無効になっている場合、アプリケーション・ロールに関連付けられている権限は、アプリケーション・ロールがプリンシパルに付与されている場合でも有効になりません。
アプリケーション・ロールを変更するには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
プロシージャは、アプリケーション・ユーザーに直接付与されているすべてのアプリケーション・ロールを有効または無効にします。
アプリケーション・ユーザーに対してこのプロシージャを実行するには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
プロシージャは、アプリケーション・ユーザーのデータベース・スキーマを設定します。
アプリケーション・ユーザーに対してこのプロシージャを実行するには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
プロシージャは、プリンシパルの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_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
プロシージャは、アプリケーション・ユーザー・アカウントのステータスを設定または変更します。
アプリケーション・ユーザーに対してこのプロシージャを実行するには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
プロシージャを使用すると、パスワードおよびtype
パラメータに基づいて検証機能が作成され、検証機能とtype
パラメータの値がディクショナリ表に挿入されます。
直接ログインReal Application Securityユーザーは、oldpass
パラメータを使用して値を指定することで、自分のパスワードを変更できます。旧パスワードの値が間違っている場合、試行するたびにログイン失敗回数が増加し、ORA-28008: 旧パスワードが正しくありません
エラーが返されます。正しい旧パスワードを指定するまで、新規パスワードは設定されません。
アプリケーション・ユーザーに対してこのプロシージャを実行するには、または他のReal Application Securityユーザーのパスワードを変更するには、ALTER_USER
権限が必要です。
外部IDストアから同期されたネイティブの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
プロシージャを使用すると、検証機能とtype
パラメータの値がディクショナリ表に挿入されます。これにより、管理者はパスワードではなく検証機能の知識があればユーザーをReal Application Securityに移行できます。
アプリケーション・ユーザーに対してこのプロシージャを実行するにはALTER_USER
権限が必要です。
ロジカル・スタンバイ・データベースでは、SET_VERIFIER
操作とSQL*Plus PASSWORD
コマンドは両方ともブロックされます。
構文
set_verifier ( user IN VARCHAR2, verifier IN VARCHAR2, type IN PLS_INTEGER := XS_SHA512);
パラメータ
パラメータ | 説明 |
---|---|
|
検証機能の設定対象のアプリケーション・ユーザーの名前。 |
|
検証機能として使用する文字列。 |
|
使用する検索機能のタイプ。これは、次の中のいずれか1つです:
|
例
次の例は、ユーザーSMAVRIS
の検証機能を設定します。
BEGIN SYS.XS_PRINCIPAL.SET_VERIFIER('SMAVRIS','6DFF060084ECE67F',XS_PRINCIPAL.XS_SHA512); END;
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
プロシージャは、アプリケーション・ユーザーまたはアプリケーション・ロールを削除します。
アプリケーション・ユーザーに対してこのプロシージャを実行するには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;
表11-11 XS_SECURITY_CLASSサブプログラムの要約
サブプログラム | 説明 |
---|---|
新規セキュリティ・クラスを作成します。 |
|
指定されたセキュリティ・クラスに1つ以上の親セキュリティ・クラスを追加します。 |
|
指定されたセキュリティ・クラスの1つ以上の親セキュリティ・クラスを削除します。 |
|
指定されたセキュリティ・クラスに1つ以上の権限を追加します。 |
|
指定されたセキュリティ・クラスの1つ以上の権限を削除します。 |
|
指定された集約権限に1つ以上の暗黙の権限を追加します。 |
|
集約権限から1つ以上の暗黙の権限を削除します。 |
|
指定されたセキュリティ・クラスの説明文字列を設定します。 |
|
指定されたセキュリティ・クラスを削除します。 |
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;
構文
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
プロシージャは、指定されたセキュリティ・クラスの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
プロシージャは、セキュリティ・クラスに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
プロシージャは、指定されたセキュリティ・クラスから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
プロシージャは、集約権限に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
プロシージャは、集約権限から指定された暗黙の権限を削除します。権限が指定されていない場合は、すべての暗黙の権限が集約権限から削除されます。
構文
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;
構文
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
プロシージャは、指定されたセキュリティ・クラスを削除します。
構文
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;