10 Oracle Database Real Application Security SQL ファンクション
この章では、Oracle Database Real Application Securityで使用可能なSQLファンクションおよびプロシージャについて説明します。
表10-1に、これらのファンクションおよびプロシージャをまとめます。各ファンクションおよびプロシージャの詳細情報は、この表の後にあります。
表10-1 Oracle Database Real Application Security SQLファンクションおよびプロシージャ
SQLファンクションまたはプロシージャ | 簡単な説明 |
---|---|
指定した表の列が特定の表の行で認可されているかどうかを確認します。 |
|
現在のアプリケーション・セッションのセッション属性および |
|
アプリケーション・ユーザーがACLのリストに従って問い合せられたアプリケーション権限を持つかどうかを確認します。 |
|
現在のアプリケーション・ユーザーのXDS対応の表のオブジェクト・インスタンスに関連付けられているACL識別子のリストを戻します。 |
|
指定したシステム権限がアプリケーション・ユーザーに付与されているかどうかを確認します |
|
指定されたACL名のACL IDを戻します |
COLUMN_AUTH_INDICATORファンクション
COLUMN_AUTH_INDICATOR
ファンクションは、指定した表の列が特定の表の行で認可されているかどうかを確認します。現在のアプリケーション・ユーザーがデータ・セキュリティ・ポリシーによって現在の行の列値へのアクセスを認可されている場合、または列がデータ・セキュリティ・ポリシーによって保護されていない場合は、1を戻します。アプリケーション・ユーザーが認可されていない場合は0
を戻します。
構文
COLUMN_AUTH_INDICATOR(col) RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
|
表またはビューの列。 このパラメータは、オブジェクト・タイプの列または式を受け入れません。 |
例
SELECT po_number, project_id, region, DECODE(COLUMN_AUTH_INDICATOR(price), 0, 'xxxxxx', 1, price) price FROM purchaseorder WHERE po_number BETWEEN 10000 and 10003;
関連項目:
-
COLUMN_AUTH_INDICATOR
ファンクションの詳細な使用例は、「列への追加のアプリケーション権限の適用」を参照してください -
列レベル・セキュリティを使用する既存の表をリストする
ALL_ATTRIBUTE_SECS
、DBA_ATTRIBUTE_SECS
およびUSER_ATTRIBUTE_SECS
データ・ディクショナリ・ビューの詳細は、Oracle Database Real Application Securityデータ・ディクショナリ・ビューを参照してください
XS_SYS_CONTEXTファンクション
XS_SYS_CONTEXT
ファンクションでは、PL/SQL APIを使用した結果として生じるオーバーヘッドを発生させずに、現在のアプリケーション・セッションのセッション属性に迅速にアクセスできます。SYS_XS_CONTEXT
ファンクション定義は、SYS_CONTEXT
ファンクションの定義をミラーリングし、SYS_CONTEXT
に対応するアプリケーション・セッションとして説明できます。XS_SYS_CONTEXT
は、リクエストされたネームスペースと属性を戻します。存在しない場合は、NULL
を戻します。
表10-2に、事前定義済のネームスペースXS$SESSION
の属性を示します。
表10-2 事前定義済パラメータ
パラメータ | 戻り値 |
---|---|
CREATED_BY |
現在のアプリケーション・セッションを作成した所有者。 |
CREATE_TIME |
現在のアプリケーション・セッションが作成された時刻。 |
COOKIE |
Cookie値が変更されるかセッションが破棄されるまで、新規に作成されたReal Application Securityアプリケーション・セッションを将来のコールで識別するために使用できる、パラメータとして渡されるセキュアなセッションCookie。 |
CURRENT_XS_USER |
権限が現在アクティブになっているReal Application Securityセッション・アプリケーション・ユーザーの名前。 |
CURRENT_XS_USER_GUID |
権限が現在アクティブになっているReal Application Securityセッション・アプリケーション・ユーザーの識別子。 |
INACTIVITY_TIMEOUT |
現在のアプリケーション・セッションに対して指定された非アクティブ・タイムアウト値(分単位)。 |
LAST_ACCESS_TIME |
セッション・アプリケーション・ユーザーによってセッションが最後にアクセスされた時刻。 |
LAST_AUTHENTICATION_TIME |
セッション・アプリケーション・ユーザーが最後に認証された時刻。 |
LAST_UPDATED_BY |
アプリケーション・セッションが前回更新された時刻。 |
PROXY_GUID |
|
SESSION_ID |
アプリケーション・セッションのセッション識別子。 |
SESSION_XS_USER |
ログオン時のReal Application Securityセッション・アプリケーション・ユーザーの名前。 |
SESSION_XS_USER_GUID |
ログオン時のReal Application Securityセッション・アプリケーション・ユーザーの識別子。 |
USERNAME |
セッション・アプリケーション・ユーザー名。 |
USER_ID |
セッション・アプリケーション・ユーザーの識別子。 |
現在連結されているReal Application Securityセッション・アプリケーション・ユーザーの名前を取得するには、次の形式のXS_SYS_CONTEXT
ファンクションを使用できます。
XS_SYS_CONTEXT('XS$SESSION', 'SESSION_XS_USER')
データベース・セッションに現在接続されているReal Application Securityセッションがない場合、ファンクションはNULL
を戻します。定義者の権限ビューなど、定義者の権限単位の本体からコールされた場合でも、ファンクションは現在連結されているReal Application Securityセッション・アプリケーション・ユーザーを戻します。
現在連結されているReal Application Securityセッション・アプリケーション・ユーザーの識別子(ID)を取得するには、次の形式のXS_SYS_CONTEXT
ファンクションを使用できます。
XS_SYS_CONTEXT('XS$SESSION', 'SESSION_XS_USER_GUID')
データベース・セッションに現在接続されているReal Application Securityセッションがない場合、ファンクションはNULL
を戻します。定義者の権限ビューなど、定義者の権限単位の本体からコールされた場合でも、ファンクションは現在連結されているReal Application Securityセッション・アプリケーション・ユーザーIDを戻します。
構文
XS_SYS_CONTEXT( namespace IN VARCHAR2 attribute IN VARCHAR2) RETURN VARCHAR2;
パラメータ
パラメータ | 説明 |
---|---|
|
アプリケーション・コンテキストの名前。文字列または式のいずれかで指定できます。 現在のアプリケーション・セッションのネームスペースと属性に関する情報を検索するには、V$XS_SESSION_NS_ATTRIBUTESデータ・ディクショナリ・ビューを問い合せます。 |
|
|
例
SELECT XS_SYS_CONTEXT('XS$SESSION', 'SESSION_ID') FROM DUAL;
ORA_CHECK_ACLファンクション
ORA_CHECK_ACL
ファンクションは、アプリケーション・ユーザーがACLのリストに従って問い合せられたアプリケーション権限を持つかどうかを確認します。Oracleデータベースでは、データ・セキュリティ・ポリシーが有効になっている表に対してアプリケーション・ユーザーが問合せを実行したときに、このファンクションが自動的に使用されます。指定されたアプリケーション権限がアプリケーション・ユーザーに付与されている場合、ORA_CHECK_ACL
は1
を戻します。アプリケーション・ユーザーに付与されていない場合は、0
を戻します。
構文
ORA_CHECK_ACL( acls IN RAW, (privileges IN VARCHAR(128))+) return NUMBER;
パラメータ
パラメータ | 説明 |
---|---|
|
8バイトのACL IDのRAWリスト。許可されるaclsの最大数は250です。 |
|
チェックされているアプリケーション権限名。許可されるアプリケーション権限の最大数は100です。 |
例
次の例では、ORA_CHECK_ACL
を使用して、ACL1
ACLでアプリケーション・ユーザーにP1
およびP2
アプリケーション権限が付与されているかどうかを確認します。
SELECT ORA_CHECK_ACL(TO_ACLID('ACL1'),'P1', 'P2') INTO ACLRESULT FROM DUAL;
ORA_GET_ACLIDSファンクション
ORA_GET_ACLIDS
ファンクションは、現在のアプリケーション・ユーザーのデータ・セキュリティ・ポリシー対応の表のオブジェクト・インスタンスに関連付けられているACL IDのリストを戻します。現在の行へのアクセス権が付与されている場合、ORA_GET_ACLIDS
は一致するデータ・レルム制約に関連付けられているすべてのACL識別子を取得するため、Oracleデータベースはすべての動的データ・レルム制約ルールを評価します。データ・レルム制約がマスター・ディテール関係のディテール表で指定されている場合、ORA_GET_ACLIDS
は、マスター表とディテール表からACL識別子を取得します。複数のデータ・セキュリティ・ポリシーが表に適用されている場合、ORA_GET_ACLIDS
は各ポリシーに関連付けられているACLを戻します。
構文
ORA_GET_ACLIDS ( table_alias IN VARCHAR2, (privileges IN VARCHAR(128))+) RETURN RAW;
パラメータ
パラメータ | 説明 |
---|---|
|
句からの問合せの表またはビュー・オブジェクトの別名。 表がXDS対応であることを確認します。これを行うには、DBA_XS_APPLIED_POLICIESデータ・ディクショナリ・ビューを問い合せます。 XDS対応の表に解決されるビューを指定する場合、およびビューに複数のXDS対応の表がある場合、Oracleデータベースは表の1つのみを戻します。 |
|
戻されたACL識別子に関連付けられているアプリケーション権限名。許可されるアプリケーション権限の最大数は100です。 |
例
SELECT ORA_GET_ACLIDS(t, 'SELECT', 'VIEW_LOC') from SCOTT.DEPT t;
ORA_CHECK_PRIVILEGEファンクション
ORA_CHECK_PRIVILEGE
ファンクションは、指定した権限がアプリケーション・ユーザーに付与されているかどうかを確認します。指定された権限がアプリケーション・ユーザーに付与されている場合、ORA_CHECK_PRIVILEGE
は1
を戻します。このファンクションは、CREATE_SESSION
などのシステム権限に対してのみ機能します。システム権限がアプリケーション・ユーザーに付与されていない場合は、0
を戻します。
構文
ORA_CHECK_PRIVILEGE( (privs IN VARCHAR(128))+) return NUMBER;
パラメータ
パラメータ | 説明 |
---|---|
|
チェックされている権限名。許可される権限の最大数は100です。 |
例
次の例では、ORA_CHECK_PRIVILEGE
を使用して、アプリケーション・ユーザーにCREATE_SESSION
システム権限が付与されているかどうかを確認します。
SELECT ORA_CHECK_PRIVILEGE('CREATE_SESSION') FROM DUAL;