ヘッダーをスキップ
Oracle Database Vault管理者ガイド
11gリリース1(11.1)
E05797-05
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

13 DVSYS.DBMS_MACUTLパッケージの使用方法

この章の内容は次のとおりです。

DVSYS.DBMS_MACUTLパッケージの概要

DVSYS.DBMS_MACUTLパッケージは、Oracle Database Vault用に作成するアプリケーション・コードのあらゆる箇所で使用できる一連の汎用ユーティリティ・プロシージャおよびファンクションを提供します。このパッケージは、すべてのユーザーが使用できます。

DVSYS.DBMS_MACUTLの定数

この項の内容は次のとおりです。

DVSYS.DBMS_MACUTLの定数のリスト

表13-1に、DVSYS.DBMS_MACUTLパッケージの定数(フィールド)の説明をまとめています。これらの定数は、Oracle Database VaultのPL/SQLパッケージのいずれかとともに使用できます。これらの定数の多くは、Oracle Database Vaultパッケージに同等のものがあります。たとえば、複数のプロシージャで使用可能なenabledパラメータでは、Y(Yes)または定数G_YESのいずれも使用できます。どちらを選択するかは個人の好みの問題です。どちらも結果は同じです。

表13-1 DVSYS.DBMS_MACUTLの定数のリスト

定数名 データ型 説明

G_ALL_OBJECT

VARCHAR2(1)

すべてのオブジェクト名またはオブジェクト・タイプを示すワイルドカードとして、レルムAPI object_nameパラメータおよびobject_typeパラメータで使用します。

G_AUDIT_ALWAYS

NUMBER

監査を有効にするために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_OFF

NUMBER

監査を無効にするために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_ON_GET_ERROR

NUMBER

get_exprパラメータで指定した式がエラーを返した場合に監査を行うために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_ON_GET_NULL

NUMBER

get_exprフィールドの式がNULLの場合に監査を行うために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_ON_TRUST_LEVEL_NEG

NUMBER

信頼レベルが負の場合に監査を行うために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_ON_TRUST_LEVEL_NULL

NUMBER

信頼レベルが存在しない場合に監査を行うために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_ON_VALIDATE_ERROR

NUMBER

検証ファンクションがエラーを返した場合に監査を行うために、ファクタAPI audit_optionsパラメータで使用します。

G_AUDIT_ON_VALIDATE_FALSE

NUMBER

検証ファンクションがFalseの場合に監査を行うために、ファクタAPI audit_optionsパラメータで使用します。

G_EVAL_ON_ACCESS

NUMBER

アクセスするたびにファクタを再評価するために、ファクタAPI eval_optionsパラメータで使用します。

G_EVAL_ON_SESSION

NUMBER

ユーザーがセッションにログインしたとき、1回のみファクタを評価するために、ファクタAPI eval_optionsパラメータで使用します。

G_FAIL_SILENTLY

NUMBER

失敗時にエラー・メッセージを表示しないように、fail_optionsパラメータで使用します。

G_FAIL_WITH_MESSAGE

NUMBER

失敗時にエラー・メッセージを表示するように、fail_optionsパラメータで使用します。

G_IDENTIFY_BY_CONSTANT

NUMBER

ファクタAPI identify_byパラメータで使用します。get_exprパラメータで定義されるPL/SQL式では固定値です。

G_IDENTIFY_BY_CONTEXT

NUMBER

コンテキストを示すために、ファクタAPI identify_byパラメータで使用します。

G_IDENTIFY_BY_FACTOR

NUMBER

factor_link$表からのサブファクタに対して、ファクタAPI identify_byパラメータで使用します。

G_IDENTIFY_BY_METHOD

NUMBER

ファクタAPI identify_byパラメータで使用します。get_exprフィールドの式。

G_IDENTIFY_BY_RULESET

NUMBER

ファクタAPI identify_byパラメータで使用します。factor_expr$表での式およびルール・セット。

G_LABELED_BY_FACTORS

NUMBER

サブファクタおよびマージ・アルゴリズムからラベルを導出するために、ファクタAPI labeled_byパラメータで使用します。

G_LABELED_BY_SELF

NUMBER

ファクタ・アイデンティティのラベル付けのために、ファクタAPI labeled_byパラメータで使用します。

G_MAX_SESSION_LABEL

VARCHAR2(30)

ファクタに基づいてユーザーが設定できる最高のラベル。ユーザーに対するラベルは考慮されません。

G_MIN_POLICY_LABEL

VARCHAR2(30)

NULLラベルのファクタにデフォルト設定されるラベル。

G_NO

VARCHAR2(1)

次のAPIで使用します。

  • 親ファクタにリンクしている子ファクタが、Oracle Label Security統合で親ファクタのラベルを構成しないことを示すために、ファクタAPI label_indicatorパラメータで使用します。

  • enabledパラメータを使用するすべてのAPI。

G_OLS_SESSION_LABEL

VARCHAR2(30)

init_sessionの実行時のユーザーに対するOracle Label Securityセッション・ラベル。

G_REALM_AUDIT_FAIL

NUMBER

レルム違反が発生したときに監査を行うために、レルムAPI audit_optionsパラメータで使用します。

G_REALM_AUDIT_OFF

NUMBER

監査を無効にするために、レルムAPI audit_optionsパラメータで使用します。

G_REALM_AUDIT_SUCCESS

NUMBER

レルムAPI audit_options parameterパラメータで使用します。レルムへのアクセス成功時に監査を行います。

G_REALM_AUTH_OWNER

NUMBER

所有者に対するレルム認可を設定するために、レルムAPI auth_optionsパラメータで使用します。

G_REALM_AUTH_PARTICIPANT

NUMBER

参加者に対するレルム認可を設定するために、レルムAPI auth_optionsパラメータで使用します。

G_RULESET_AUDIT_FAIL

NUMBER

ルール・セット失敗時に監査を行うために、ルール・セットAPI audit_optionsパラメータで使用します。

G_RULESET_AUDIT_OFF

NUMBER

監査を無効にするために、ルール・セットAPI audit_optionsパラメータで使用します。

G_RULESET_AUDIT_SUCCESS

NUMBER

ルール・セット成功時に監査を行うために、ルール・セットAPI audit_optionsパラメータで使用します。

G_RULESET_EVAL_ALL

NUMBER

すべてのルールがTrueと評価された場合にルール・セットが成功するように、ルール・セットAPI eval_optionsパラメータで使用します。

G_RULESET_EVAL_ANY

NUMBER

ルールのいずれかがTrueと評価された場合に成功するように、ルール・セットAPI eval_optionsパラメータで使用します。

G_RULESET_FAIL_SHOW

NUMBER

ルール・セットが失敗した場合にエラー・メッセージが表示されるように、ルール・セットAPI fail_optionsパラメータで使用します。

G_RULESET_FAIL_SILENT

NUMBER

ルール・セットが失敗した場合にエラー・メッセージが表示されないように、ルール・セットAPI fail_optionsパラメータで使用します。

G_RULESET_HANDLER_FAIL

NUMBER

ルール・セットが失敗した場合にハンドラ(handlerパラメータで指定)をコールするように、ルール・セットAPI handler_optionsパラメータで使用します。

G_RULESET_HANDLER_OFF

NUMBER

ハンドラへのコールを無効にするか、ハンドラが使用されない場合に、ルール・セットAPI handler_optionsパラメータで使用します。

G_RULESET_HANDLER_SUCCESS

NUMBER

ルール・セットが成功した場合にハンドラをコールするように、ルール・セットAPI handler_optionsパラメータで使用します。

G_USER_POLICY_LABEL

VARCHAR2(30)

前の値を考慮した上で、ユーザーのラベルに設定する必要があるとOracle Label Securityで決められた値。

G_YES

VARCHAR2(1)

次のAPIで使用します。

  • 親ファクタにリンクしている子ファクタが、Oracle Label Security統合で親ファクタのラベルを構成することを示すために、ファクタAPI label_indicatorパラメータで使用します。

  • enabledパラメータを使用するすべてのAPI。


DVSYS.DBMS_MACUTLの定数の使用例

例13-1は、レルム作成時にG_YES定数およびG_REALM_AUDIT_FAIL DBMS_MACUTL定数を使用する方法を示しています。

例13-1 DVSYS.DBMS_MACUTLの定数を使用したレルムの作成

BEGIN
 DVSYS.DBMS_MACADM.CREATE_REALM(
  realm_name    => 'Performance Statistics Realm',
  description   => 'Realm to measure performance',
  enabled       =>  DVSYS.DBMS_MACUTL.G_YES,
  audit_options =>  DVSYS.DBMS_MACUTL.G_REALM_AUDIT_FAIL);
END;

例13-2は、ルール・セット作成時に複数のDVSYS.DBMS_MACUTLの定数を使用する方法を示しています。

例13-2 DVSYS.DBMS_MACUTLの定数を使用したルール・セットの作成

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE_SET(
  rule_set_name    => 'Limit_DBA_Access',
  description      => 'DBA access through predefined processes',
  enabled          => 'Y',
  eval_options     => DVSYS.DBMS_MACUTL.G_RULESET_EVAL_ALL,
  audit_options    => POWER(2,0),
  fail_options     => DVSYS.DBMS_MACUTL.G_RULESET_FAIL_SHOW,
  fail_message     => 'Rule Set Limit_DBA_Access has failed.',
  fail_code        => -22220,
  handler_options  => POWER(2,0),
  handler          => 'dbavowner.email_alert');
END;

例13-3は、ファクタ作成時に、定数を使用する方法を示しています。

例13-3 DVSYS.DBMS_MACUTLの定数を使用したファクタの作成

BEGIN
 DVSYS.DBMS_MACADM.CREATE_FACTOR(
  factor_name       => 'Sector2_DB',
  factor_type_name  => 'Instance',
  description       => ' ',
  rule_set_name     => 'DB_access',
  get_expr          => 'UPPER(SYS_CONTEXT('USERENV','DB_NAME'))',
  validate_expr     => 'dbavowner.check_db_access',
  identify_by       => 2,
  labeled_by        => DVSYS.DBMS_MACUTL.G_LABELED_BY_SELF,
  eval_options      => DVSYS.DBMS_MACUTL.G_EVAL_ON_SESSION,
  audit_options     => 0,
  fail_options      => DVSYS.DBMS_MACUTL.G_FAIL_SILENTLY;
END;

DVSYS.DBMS_MACUTLパッケージのプロシージャおよびファンクション

表13-2に、DVSYS.DBMS_MACUTLパッケージのプロシージャおよびファンクションを示します。これらのプロシージャまたはファンクションは、スタンドアロン・コードとして、またはルール式内で使用できます。この項では、両方が使用されている例を示します。

表13-2 DVSYS.DBMS_MACUTLのユーティリティ・ファンクション

プロシージャまたはファンクション 説明

CHECK_DVSYS_DML_ALLOWEDプロシージャ


Oracle Database Vault構成を更新するユーザーによってパブリック・パッケージが無視されていないことを検証します。

GET_CODE_VALUEファンクション


コード・グループ内でコードの値を検索します。

GET_SECONDファンクション


Oracle SS形式(00〜59)で秒を返します。時間データに基づいたルール式に有用です。

GET_MINUTEファンクション


Oracle MI形式(00〜59)で分を返します。時間データに基づいたルール式に有用です。

GET_HOURファンクション


Oracle HH24形式(00〜23)で月を返します。時間データに基づいたルール式に有用です。

GET_DAYファンクション


Oracle DD形式(01〜31)で日を返します。時間データに基づいたルール式に有用です。

GET_MONTHファンクション


Oracle MM形式(01〜12)で月を返します。時間データに基づいたルール式に有用です。

GET_YEARファンクション


Oracle YYYY形式(0001〜9999)で年を返します。時間データに基づいたルール式に有用です。

GET_SQL_TEXTファンクション


ora_name_list_tの要素を連結して単一のVARCHAR2値にします。

IS_ALPHAファンクション


文字がアルファベットかどうかをチェックします。

IS_DIGITファンクション


文字が数値かどうかをチェックします。

IS_DVSYS_OWNERファンクション


Oracle Database Vault構成を管理する権限がユーザーに付与されているかどうかを判断します。

IS_OLS_INSTALLEDファンクション


Oracle Label Securityがインストールされているかどうかについてインジケータを返します。

IS_OLS_INSTALLED_VARCHARファンクション


Oracle Label Securityがインストールされているかどうかについてインジケータを返します。

USER_HAS_OBJECT_PRIVILEGEファンクション


ユーザーまたはロールがオブジェクト権限の付与によってオブジェクトにアクセスできるかどうかをチェックします。

USER_HAS_ROLEファンクション


ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかをチェックします。

USER_HAS_ROLE_VARCHARファンクション


ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかをチェックします。

USER_HAS_SYSTEM_PRIVILEGEファンクション


ユーザーがシステム権限を直接保持するのか間接的にロールを介して)保持するのかをチェックします。


CHECK_DVSYS_DML_ALLOWEDプロシージャ

このプロシージャは、Oracle Database Vault構成を更新するユーザーによってパブリック・パッケージが無視されていないことを検証します。

構文

DVSYS.DBMS_MACUTL.CHECK_DVSYS_DML_ALLOWED(
  p_user VARCHAR2 DEFAULT USER);

パラメータ

表13-3 CHECK_DVSYS_DML_ALLOWEDのパラメータ

パラメータ 説明

p_user

操作を実行しているユーザー。

現在のデータベース・インスタンスで既存のユーザーを検索するには、次のビューに問い合せます。

  • DBA_USERS: 現在のデータベース・インスタンスで使用可能なユーザーを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。

  • DVSYS.DBA_DV_ROLE: 権限管理で使用されている既存のセキュア・アプリケーション・ロールを検索します。「DBA_DV_ROLEビュー」を参照してください。


ユーザーSYSTEMがチェックに失格となります。

EXEC DVSYS.DBMS_MACUTL.CHECK_DVSYS_DML_ALLOWED('system');

ERROR at line 1:
ORA-47920: Authorization failed for user system to perform this operation
ORA-06512: at "DVSYS.DBMS_MACUTL", line 23
ORA-06512: at "DVSYS.DBMS_MACUTL", line 372
ORA-06512: at "DVSYS.DBMS_MACUTL", line 508
ORA-06512: at "DVSYS.DBMS_MACUTL", line 572
ORA-06512: at line 1

DV_OWNERロールを持つユーザーdbvownerが、チェックに合格します。

EXEC DVSYS.DBMS_MACUTL.CHECK_DVSYS_DML_ALLOWED('dbvowner');

PL/SQL procedure successfully completed.

GET_CODE_VALUEファンクション

このファンクションは、コード・グループ内でコードの値を検索し、VARCHAR2値を返します。

構文

DVSYS.DBMS_MACUTL.GET_CODE_VALUE(
  p_code_group VARCHAR2,
  p_code       VARCHAR2)
RETURNS VARCHAR2;

パラメータ

表13-4 GET_CODE_VALUEのパラメータ

パラメータ 説明

p_code_group

コード・グループ(AUDIT_EVENTSBOOLEANなど)。

現行のデータベース・インスタンスで使用可能なコード・グループを検索するには、「DBA_DV_CODEビュー」で説明されているDVSYS.DBA_DV_CODEビューに問い合せます。

p_code

コードのID。

このIDは、DVSYS.DBA_DV_CODEビューを実行したときに表示されます。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get Label Algorithm for Maximum Level/Union/Null',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_CODE_VALUE(''LABEL_ALG'', ''HUN'')');
END;

GET_SECONDファンクション

このファンクションは、Oracle SS(秒)形式(00〜59)で秒を返します。NUMBER値を返します。時間データに基づいたルール式に有用です。

構文

DVSYS.DBMS_MACUTL.GET_SECOND(
  p_date DATE DEFAULT SYSDATE)
RETURNS NUMBER;

パラメータ

表13-5 GET_SECONDのパラメータ

パラメータ 説明

p_date

SS形式の日付(たとえば59)。

日付を指定しない場合、Oracle Database VaultはOracle DatabaseのSYSDATEファンクションを使用して、データベースが存在するオペレーティング・システムに設定されている現在の日時を取得します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the Second',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_SECOND(59);
END;

GET_MINUTEファンクション

このファンクションは、Oracle MI(分)形式(00〜59)で分をNUMBER値で返します。時間データに基づいたルール式に有用です。

構文

DVSYS.DBMS_MACUTL.GET_MINUTE(
  p_date DATE DEFAULT SYSDATE)
RETURNS NUMBER;

パラメータ

表13-6 GET_MINUTEのパラメータ

パラメータ 説明

p_date

MI形式の日付(たとえば2:30の場合は30)。

日付を指定しない場合、Oracle Database VaultはOracle DatabaseのSYSDATEファンクションを使用して、データベースが存在するオペレーティング・システムに設定されている現在の日時を取得します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the Minute',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_MINUTE(30);
END;

GET_HOURファンクション

このファンクションは、Oracle HH24(時間)形式(00〜23)で時間をNUMBER値で返します。時間データに基づいたルール式に有用です。

構文

DVSYS.DBMS_MACUTL.GET_HOUR(
  p_date DATE DEFAULT SYSDATE)
RETURNS NUMBER;

パラメータ

表13-7 GET_HOURのパラメータ

パラメータ 説明

p_date

HH24形式の日付(たとえば午後2:00の場合は14)。

日付を指定しない場合、Oracle Database VaultはOracle DatabaseのSYSDATEファンクションを使用して、データベースが存在するオペレーティング・システムに設定されている現在の日時を取得します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the Hour',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_HOUR(14);
END;

GET_DAYファンクション

このファンクションは、Oracle DD(日)形式(01〜31)で日をNUMBER値で返します。時間データに基づいたルール式に有用です。

構文

DVSYS.DBMS_MACUTL.GET_DAY(
  p_date DATE DEFAULT SYSDATE)
RETURNS NUMBER;

パラメータ

表13-8 GET_DAYのパラメータ

パラメータ 説明

p_date

DD形式の日付(たとえば月の初日の場合は01)。

日付を指定しない場合、Oracle Database VaultはOracle DatabaseのSYSDATEファンクションを使用して、データベースが存在するオペレーティング・システムに設定されている現在の日時を取得します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the Day',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_DAY();
END;

GET_MONTHファンクション

このファンクションは、Oracle MM(月)形式(01〜12)で月をNUMBER値で返します。時間データに基づいたルール式に有用です。

構文

DVSYS.DBMS_MACUTL.GET_MONTH(
  p_date DATE DEFAULT SYSDATE)
RETURNS NUMBER;

パラメータ

表13-9 GET_MONTHのパラメータ

パラメータ 説明

p_date

MM形式の日付(たとえば8月の場合は08)。

日付を指定しない場合、Oracle Database VaultはOracle DatabaseのSYSDATEファンクションを使用して、データベースが存在するオペレーティング・システムに設定されている現在の日時を取得します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the Month',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_MONTH(08);
END;

GET_YEARファンクション

このファンクションは、Oracle YYYY(年)形式(0001〜9999)で年をNUMBER値で返します。時間データに基づいたルール式に有用です。

構文

DVSYS.DBMS_MACUTL.GET_YEAR(
  p_date DATE DEFAULT SYSDATE)
RETURNS NUMBER;

パラメータ

表13-10 GET_YEARのパラメータ

パラメータ 説明

p_date

YYYY形式の日付(たとえば1984)。

日付を指定しない場合、Oracle Database VaultはSYSDATEファンクションを使用して、データベースが存在するオペレーティング・システムに設定されている現在の日時を取得します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the Year',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_YEAR(1984);
END;

GET_SQL_TEXTファンクション

このファンクションは、ora_name_list_tの要素を単一のVARCHAR2値に連結し、VARCHAR2値を返します。

構文

DVSYS.DBMS_MACUTL.GET_SQL_TEXT(
  p_sql_text ora_name_list_t)
RETURNS VARCHAR2;

パラメータ

表13-11 GET_SQL_TEXTのパラメータ

パラメータ 説明

p_sql_text

SQLテキスト(SELECTDROP TABLEなど)を表すVARCHAR2文字列の表。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get SQL strings',
  rule_expr => 'DVSYS.DBMS_MACUTL.GET_SQL_TEXT(sec_mgr.sql_strings);
END;

IS_ALPHAファンクション

このファンクションは、文字がアルファベットかどうかをチェックし、BOOLEAN値を返します。IS_ALPHAは、文字がアルファベットの場合にTRUEを返します。

構文

DVSYS.DBMS_MACUTL.IS_ALPHA(
  c VARCHAR2)
RETURNS BOOLEAN;

パラメータ

表13-12 IS_ALPHAのパラメータ

パラメータ 説明

c

1文字の文字列


SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.IS_ALPHA('z')
  THEN DBMS_OUTPUT.PUT_LINE('The alphabetic character was found');
 ELSE
  DBMS_OUTPUT.PUT_LINE('No alphbetic characters today.');
 END IF;
END;

IS_DIGITファンクション

このファンクションは、文字が数値かどうかをチェックし、BOOLEAN値を返します。IS_DIGITは、文字が数値の場合にTRUEを返します。

構文

DVSYS.DBMS_MACUTL.IS_DIGIT(
  c VARCHAR2)
RETURNS BOOLEAN;

パラメータ

表13-13 IS_DIGITのパラメータ

パラメータ 説明

c

1文字の文字列


SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.IS_DIGIT('7')
  THEN DBMS_OUTPUT.PUT_LINE('The numeric character was found');
 ELSE
  DBMS_OUTPUT.PUT_LINE('No numeric characters today.');
 END IF;
END;

IS_DVSYS_OWNERファンクション

このファンクションは、Oracle Database Vault構成を管理する権限がユーザーに付与されているかどうかを判断し、BOOLEAN値を返します。IS_DVSYS_OWNERは、ユーザーに権限が付与されている場合にTRUEを返します。

構文

DVSYS.DBMS_MACUTL.IS_DVSYS_OWNER(
  p_user VARCHAR2 DEFAULT USER)
RETURNS BOOLEAN;

パラメータ

表13-14 IS_DVSYS_OWNERのパラメータ

パラメータ 説明

p_user

チェックするユーザー。

既存のユーザーを検索するには、次のビューに問い合せます。

  • DBA_USERS: 現在のデータベース・インスタンスで使用可能なユーザーを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。

  • DVSYS.DBA_DV_ROLE: 権限管理で使用されている既存のセキュア・アプリケーション・ロールを検索します。「DBA_DV_ROLEビュー」を参照してください。


SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.IS_DVSYS_OWNER('PSMITH')
  THEN DBMS_OUTPUT.PUT_LINE('PSMITH is authorized to manage Database Vault.');
 ELSE
  DBMS_OUTPUT.PUT_LINE('PSMITH is not authorized to manage Database Vault.');
 END IF;
END;

IS_OLS_INSTALLEDファンクション

このファンクションは、Oracle Label Securityがインストールされているかどうかについてインジケータを返し、TRUEまたはFALSEのBOOLEAN値を返します。Oracle Label Securityがインストールされている場合、IS_OLS_INSTALLEDTRUEを返します。

構文

DVSYS.DBMS_MACUTL.IS_OLS_INSTALLED()
RETURNS BOOLEAN;

パラメータ

なし。

SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.IS_OLS_INSTALLED()
  THEN DBMS_OUTPUT.PUT_LINE('OLS is installed');
 ELSE
  DBMS_OUTPUT.PUT_LINE('OLS is not installed');
 END IF;
END;

IS_OLS_INSTALLED_VARCHARファンクション

このファンクションは、Oracle Label Securityがインストールされているかどうかについてインジケータを返し、YまたはNのVARCHAR2値を返します。Oracle Label Securityがインストールされている場合、IS_OLS_INSTALLED_VARCHARYを返します。

構文

DVSYS.DBMS_MACUTL.IS_OLS_INSTALLED_VARCHAR()
RETURNS VARCHAR2;

パラメータ

なし。

例については「IS_OLS_INSTALLEDファンクション」を参照してください。

USER_HAS_OBJECT_PRIVILEGEファンクション

このファンクションは、ユーザーまたはロールがオブジェクト権限の付与によってオブジェクトにアクセスできるかどうかをチェックし、BOOLEAN値を返します。ユーザーまたはロールにオブジェクト権限がある場合、USER_HAS_OBJECT_PRIVILEGETRUEを返します。

構文

DVSYS.DBMS_MACUTL.USER_HAS_OBJECT_PRIVILEGE(
  p_user          VARCHAR2,
  p_object_owner  VARCHAR2,
  p_object_name   VARCHAR2,
  p_privilege     VARCHAR2)
RETURNS BOOLEAN;

パラメータ

表13-15 USER_HAS_OBJECT_PRIVILEGEのパラメータ

パラメータ 説明

p_user

チェックするユーザーまたはロール。

既存のユーザーを検索するには、次のビューに問い合せます。

  • DBA_USERS: 現在のデータベース・インスタンスで使用可能なユーザーを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DBA_ROLES: 現行のデータベース・インスタンスで使用可能なロールを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。

  • DVSYS.DBA_DV_ROLE: 権限管理で使用されている既存のセキュア・アプリケーション・ロールを検索します。「DBA_DV_ROLEビュー」を参照してください。

p_object_owner

オブジェクト所有者。

使用可能なユーザーを検索するには、『Oracle Databaseリファレンス』で説明されているDBA_USERSビューに問い合せます。

特定のユーザーの認可を検索するには、「DBA_DV_REALM_AUTHビュー」で説明されているDVA_DV_REALM_AUTHビューに問い合せます。

p_object_name

オブジェクト名。

使用可能なオブジェクトを検索するには、『Oracle Databaseリファレンス』で説明されているALL_OBJECTSビューに問い合せます。

既存のレルムによって保護されているオブジェクトを検索するには、「DBA_DV_REALM_OBJECTビュー」で説明されているDVSYS.DBA_DV_REALM_OBJECTビューに問い合せます。

p_privilege

オブジェクト権限(SELECTUPDATEINSERTなど)。

PUBLIC権限を除外したデータベース・アカウントの権限を検索するには、「DBA_DV_USER_PRIVSビュー」で説明されているDVSYS.DBA_DV_USER_PRIVSビューに問い合せます。

データベース・アカウントのすべての権限を検索するには、「DBA_DV_USER_PRIVS_ALLビュー」で説明されているDVSYS.DBA_DV_USER_PRIVS_ALLを使用します。


SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.USER_HAS_OBJECT_PRIVILEGE(
   'SECTOR2_APP_MGR', 'OE', 'ORDERS', 'SELECT, UPDATE')
  THEN DBMS_OUTPUT.PUT_LINE('SECTOR2_APP_MGR has privileges.');
   ELSE
  DBMS_OUTPUT.PUT_LINE('SECTOR2_APP_MGR does not have privileges.');
 END IF;
END;

USER_HAS_ROLEファンクション

このファンクションは、ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかをチェックし、BOOLEAN値を返します。ユーザーにロール権限がある場合、USER_HAS_ROLETRUEを返します。

構文

DVSYS.DBMS_MACUTL.USER_HAS_ROLE(
  p_role VARCHAR2,
  p_user VARCHAR2 DEFAULT USER)
RETURNS BOOLEAN;

パラメータ

表13-16 USER_HAS_ROLEのパラメータ

パラメータ 説明

p_role

チェックするロール権限。

既存のロールを検索するには、次のビューに問い合せます。

  • DBA_ROLES: 現行のデータベース・インスタンスで使用可能なロールを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。

  • DVSYS.DBA_DV_ROLE: 権限管理で使用されている既存のセキュア・アプリケーション・ロールを検索します。「DBA_DV_ROLEビュー」を参照してください。

p_user

チェックするユーザー。

既存のユーザーを検索するには、次のビューに問い合せます。

  • DBA_USERS: 現在のデータベース・インスタンスで使用可能なユーザーを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「Oracle Database Vaultのデータ・ディクショナリ・ビュー」を参照してください。


SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.USER_HAS_ROLE('PSMITH', 'SECTOR2_APP_MGR')
  THEN DBMS_OUTPUT.PUT_LINE('User PSMITH has the SECTOR2_APP_MGR role');
   ELSE
  DBMS_OUTPUT.PUT_LINE('User PSMITH does not have the SECTOR2_APP_MGR role.');
 END IF;
END;

USER_HAS_ROLE_VARCHARファンクション

このファンクションは、ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかをチェックし、VARCHAR2値を返します。ユーザーにロール権限が指定されている場合、USER_HAS_ROLE_VARCHARYを返します。

構文

DVSYS.DBMS_MACUTL.USER_HAS_ROLE_VARCHAR(
  p_role VARCHAR2,
  p_user VARCHAR2 DEFAULT USER)
RETURNS VARCHAR2;

パラメータ

表13-17 USER_HAS_ROLE_VARCHARのパラメータ

パラメータ 説明

p_role

チェックするロール。

既存のロールを検索するには、次のビューに問い合せます。

  • DBA_ROLES: 現行のデータベース・インスタンスで使用可能なロールを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。

  • DVSYS.DBA_DV_ROLE: 権限管理で使用されている既存のセキュア・アプリケーション・ロールを検索します。「DBA_DV_ROLEビュー」を参照してください。

p_user

チェックするユーザー。

既存のユーザーを検索するには、次のビューに問い合せます。

  • DBA_USERS: 現在のデータベース・インスタンスで使用可能なユーザーを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。


USER_HAS_SYSTEM_PRIVILEGEファンクション

このファンクションは、ユーザーがシステム権限を直接保持するのか間接的に(ロールを介して)保持するのかをチェックし、BOOLEAN値を返します。ユーザーにシステム権限が指定されている場合、USER_HAS_SYSTEM_PRIVILEGETRUEを返します。

構文

DVSYS.DBMS_MACUTL.USER_HAS_SYSTEM_PRIVILEGE(
  p_privilege  VARCHAR2,
  p_user       VARCHAR2 DEFAULT USER)
RETURNS BOOLEAN;

パラメータ

表13-18 USER_HAS_SYSTEM_PRIVILEGEのパラメータ

パラメータ 説明

p_privilege

チェックするシステム権限。

PUBLIC権限を除外したデータベース・アカウントの権限を検索するには、「DBA_DV_USER_PRIVSビュー」で説明されているDVSYS.DBA_DV_USER_PRIVSビューに問い合せます。

データベース・アカウントのすべての権限を検索するには、「DBA_DV_USER_PRIVS_ALLビュー」で説明されているDVSYS.DBA_DV_USER_PRIVS_ALLを使用します。

p_user

チェックするユーザー。

既存のユーザーを検索するには、次のビューに問い合せます。

  • DBA_USERS: 現在のデータベース・インスタンスで使用可能なユーザーを検索します。『Oracle Databaseリファレンス』を参照してください。

  • DVA_DV_REALM_AUTH: 特定のユーザーまたはロールの認可を検索します。「DBA_DV_REALM_AUTHビュー」を参照してください。


SET SERVEROUTPUT ON
BEGIN
 IF DVSYS.DBMS_MACUTL.USER_HAS_SYSTEM_PRIVILEGE('EXECUTE', 'PSMITH')
  THEN DBMS_OUTPUT.PUT_LINE('User PSMITH has the EXECUTE system privilege.');
   ELSE
  DBMS_OUTPUT.PUT_LINE('User PSMITH does not have the EXECUTE system privilege.');
 END IF;
END;