21 Oracle Database VaultユーティリティのAPI

Oracle Database Vaultは、DBMS_MACUTL PL/SQLパッケージの一連のユーティリティのAPIを提供します。

21.1 DBMS_MACUTLの定数

DBMS_MACUTL PL/SQLパッケージで使用できる、一連の定数を使用できます。

21.1.1 DBMS_MACUTLの定数のリスト

DBMS_MACUTL PL/SQLパッケージには、Oracle Database Vault PL/SQLパッケージと使用する定数(フィールド)が用意されています。

表21-1に、DBMS_MACUTLパッケージの定数(つまり、フィールド)の説明をまとめています。

これらの定数の多くは、Oracle Database Vaultパッケージに同等のものがあります。たとえば、複数のプロシージャで使用可能なenabledパラメータでは、Y(Yes)または定数G_YESのいずれも使用できます。どちらを選択するかは個人の好みの問題です。どちらも結果は同じです。

表21-1 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_DISABLE

NUMBER

Oracle Database Vaultのポリシーおよびコマンド・ルールを無効にするために使用します。

G_ENABLE

NUMBER

Oracle Database Vaultのポリシーおよびコマンド・ルールを有効にするために使用します。

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_PARTIAL

NUMBER

個別に変更するようにOracle Database Vaultポリシーの下のレルムおよびコマンド・ルールの強制状態を設定します。

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_SIMULATION

NUMBER

ポリシーの強制状態をシミュレーション・モードに設定するために使用します。このモードでは、レルムまたはコマンド・ルールの違反に対してエラーが発生しません。かわりに、エラーに関連する十分な情報(たとえば、ユーザーまたはSQLコマンド)とともに、指定されたログ表にエラーが記録されます。

G_USER_POLICY_LABEL

VARCHAR2(30)

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

G_YES

VARCHAR2(1)

次のAPIで使用します。

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

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

21.1.2 例: DBMS_MACUTLの定数を使用したレルムの作成

定数を使用して、Oracle Database Vaultでのオブジェクトの作成時に単純なYesまたはNoの設定に回答できます。

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

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

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

21.1.3 例: DBMS_MACUTLの定数を使用したルール・セットの作成

定数を使用して、使用される監査のタイプや失敗オプションなど、オプションを設定できます。

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

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

BEGIN
 DBMS_MACADM.CREATE_RULE_SET(
  rule_set_name    => 'Limit_DBA_Access', 
  description      => 'DBA access through predefined processes', 
  enabled          => DBMS_MACUTL.G_YES,
  eval_options     => DBMS_MACUTL.G_RULESET_EVAL_ALL,
  audit_options    => DBMS_MACUTL.G_RULESET_AUDIT_FAIL,
  fail_options     => DBMS_MACUTL.G_RULESET_FAIL_SHOW,
  fail_message     => 'Rule Set Limit_DBA_Access has failed.',
  fail_code        => 20000,
  handler_options  => DBMS_MACUTL.G_RULESET_HANDLER_FAIL, 
  handler          => 'dbavowner.email_alert');
END;
/

21.1.4 例: DBMS_MACUTLの定数を使用したファクタの作成

定数を使用して、アイデンティティやラベリングなど、ファクタ固有の情報を設定できます。

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

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

BEGIN
 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       => DBMS_MACUTL.G_IDENTIFY_BY_FACTOR, 
  labeled_by        => DBMS_MACUTL.G_LABELED_BY_SELF, 
  eval_options      => DBMS_MACUTL.G_EVAL_ON_SESSION, 
  audit_options     => DBMS_MACUTL.G_AUDIT_ALWAYS, 
  fail_options      => DBMS_MACUTL.G_FAIL_SILENTLY); 
END;
/

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

DBMS_MACUTL PL/SQLパッケージでは、時間値、またはユーザーに適切な権限があるかどうかを知るなどのタスクを実行できます。

21.2.1 CHECK_DVSYS_DML_ALLOWEDプロシージャ

CHECK_DVSYS_DML_ALLOWEDプロシージャは、ユーザーがData Modification Language (DML)のコマンドを発行してDVSYSオブジェクトにアクセスできるかどうかを確認します。

構文

DBMS_MACUTL.CHECK_DVSYS_DML_ALLOWED(
  p_user IN VARCHAR2 DEFAULT USER); 

パラメータ

表21-2 CHECK_DVSYS_DML_ALLOWEDのパラメータ

パラメータ 説明

p_user

チェックするユーザー。

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

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

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

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

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

EXEC 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 "DBMS_MACUTL", line 23
ORA-06512: at "DBMS_MACUTL", line 372
ORA-06512: at "DBMS_MACUTL", line 508
ORA-06512: at "DBMS_MACUTL", line 572
ORA-06512: at line 1

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

EXEC DBMS_MACUTL.CHECK_DVSYS_DML_ALLOWED('leo_dvowner');

PL/SQL procedure successfully completed.

21.2.2 GET_CODE_VALUEファンクション

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

構文

DBMS_MACUTL.GET_CODE_VALUE(
  p_code_group IN VARCHAR2, 
  p_code       IN VARCHAR2)
RETURN VARCHAR2; 

パラメータ

表21-3 GET_CODE_VALUEのパラメータ

パラメータ 説明

p_code_group

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

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

p_code

コードのID。

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

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

21.2.3 GET_SECONDファンクション

GET_SECONDファンクションは、Oracle SS(秒)形式で秒(00から59)を返し、NUMBER値を返します。

時間データに基づいたルール式に有用です。

構文

DBMS_MACUTL.GET_SECOND(
  p_date IN DATE DEFAULT SYSDATE)
RETURN NUMBER;

パラメータ

表21-4 GET_SECONDのパラメータ

パラメータ 説明

p_date

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

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

SET SERVEROUTPUT ON
DECLARE 
  seconds number; 
BEGIN 
  seconds := DBMS_MACUTL.GET_SECOND(TO_DATE('03-APR-2009 6:56 PM', 
  'dd-mon-yyyy hh:mi PM')); 
  DBMS_OUTPUT.PUT_LINE('Seconds: '||seconds); 
END; 
/ 

この例では固定日時を使用しており、次の値を返します。

Seconds: 56

21.2.4 GET_MINUTEファンクション

GET_MINUTEファンクションは、Oracle MI(分)形式の分(00から59)をNUMBER値で返します。

時間データに基づいたルール式に有用です。

構文

DBMS_MACUTL.GET_MINUTE(
  p_date IN DATE DEFAULT SYSDATE)
RETURN NUMBER;

パラメータ

表21-5 GET_MINUTEのパラメータ

パラメータ 説明

p_date

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

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

SET SERVEROUTPUT ON
DECLARE 
  minute number; 
BEGIN 
  minute := DBMS_MACUTL.GET_MINUTE(SYSDATE); 
  DBMS_OUTPUT.PUT_LINE('Minute: '||minute); 
END; 
/

次のような出力が表示されます。

Minute: 17

21.2.5 GET_HOURファンクション

GET_HOURファンクションは、Oracle HH24(時間)形式の時間(00から23)をNUMBER値で返します。

時間データに基づいたルール式に有用です。

構文

DBMS_MACUTL.GET_HOUR(
  p_date IN DATE DEFAULT SYSDATE)
RETURN NUMBER; 

パラメータ

表21-6 GET_HOURのパラメータ

パラメータ 説明

p_date

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

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

SET SERVEROUTPUT ON
DECLARE 
  hours number; 
BEGIN 
  hours := DBMS_MACUTL.GET_HOUR(SYSDATE); 
  DBMS_OUTPUT.PUT_LINE('Hour: '||hours); 
END; 
/

次のような出力が表示されます。

Hour: 12

21.2.6 GET_DAYファンクション

GET_DAYファンクションは、Oracle DD(日)形式の日(01から31)をNUMBER値で返します。

時間データに基づいたルール式に有用です。

構文

DBMS_MACUTL.GET_DAY(
  p_date IN DATE DEFAULT SYSDATE)
RETURN NUMBER; 

パラメータ

表21-7 GET_DAYのパラメータ

パラメータ 説明

p_date

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

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

SET SERVEROUTPUT ON
DECLARE 
  day number; 
BEGIN 
  day := DBMS_MACUTL.GET_DAY(SYSDATE); 
  DBMS_OUTPUT.PUT_LINE('Day: '||day); 
END; 
/

次のような出力が表示されます。

Day: 3

21.2.7 GET_MONTHファンクション

GET_MONTHファンクションは、Oracle MM(月)形式の月(01から12)をNUMBER値で返します。

時間データに基づいたルール式に有用です。

構文

DBMS_MACUTL.GET_MONTH(
  p_date IN DATE DEFAULT SYSDATE)
RETURN NUMBER;

パラメータ

表21-8 GET_MONTHのパラメータ

パラメータ 説明

p_date

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

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

SET SERVEROUTPUT ON
DECLARE 
  month number; 
BEGIN 
  month := DBMS_MACUTL.GET_MONTH(SYSDATE); 
  DBMS_OUTPUT.PUT_LINE('Month: '||month); 
END; 
/

次のような出力が表示されます。

Month: 4

21.2.8 GET_YEARファンクション

GET_YEARファンクションは、Oracle YYYY(年)形式の年(0001から9999)をNUMBER値で返します。

時間データに基づいたルール式に有用です。

構文

DBMS_MACUTL.GET_YEAR(
  p_date IN DATE DEFAULT SYSDATE)
RETURN NUMBER;

パラメータ

表21-9 GET_YEARのパラメータ

パラメータ 説明

p_date

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

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

SET SERVEROUTPUT ON
DECLARE 
  year number; 
BEGIN 
  year := DBMS_MACUTL.GET_YEAR(SYSDATE); 
  DBMS_OUTPUT.PUT_LINE('Year: '||year); 
END; 
/

21.2.9 IS_ALPHAファンクション

IS_ALPHAファンクションは、文字がアルファベットかどうかを示すBOOLEAN値を返します。

IS_ALPHAは、文字がアルファベットの場合にTRUEを返します。

構文

DBMS_MACUTL.IS_ALPHA(
  c IN VARCHAR2)
RETURN BOOLEAN; 

パラメータ

表21-10 IS_ALPHAのパラメータ

パラメータ 説明

c

1文字の文字列

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

21.2.10 IS_DIGITファンクション

IS_DIGITファンクションは、文字が数値かどうかを示すBOOLEAN値を返します。

IS_DIGITは、文字が数値の場合にTRUEを返します。

構文

DBMS_MACUTL.IS_DIGIT(
  c IN VARCHAR2)
RETURN BOOLEAN;

パラメータ

表21-11 IS_DIGITのパラメータ

パラメータ 説明

c

1文字の文字列

SET SERVEROUTPUT ON
BEGIN 
 IF 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;
/

21.2.11 IS_DVSYS_OWNERファンクション

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

IS_DVSYS_OWNERは、ユーザーに権限が付与されている場合にTRUEを返します。

構文

DBMS_MACUTL.IS_DVSYS_OWNER(
  p_user IN VARCHAR2 DEFAULT USER)
RETURN BOOLEAN;

パラメータ

表21-12 IS_DVSYS_OWNERのパラメータ

パラメータ 説明

p_user

チェックするユーザー。

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

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

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

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

SET SERVEROUTPUT ON
BEGIN 
 IF 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;
/

21.2.12 IS_OLS_INSTALLEDファンクション

IS_OLS_INSTALLEDファンクションは、Oracle Label Securityがインストールされているかどうかを示すBOOLEAN値を返します。

Oracle Label Securityがインストールされている場合、IS_OLS_INSTALLEDTRUEを返します。

構文

DBMS_MACUTL.IS_OLS_INSTALLED()
RETURN BOOLEAN;

パラメータ

なし

SET SERVEROUTPUT ON
BEGIN 
 IF 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;
/

21.2.13 IS_OLS_INSTALLED_VARCHARファンクション

IS_OLS_INSTALLED_VARCHARファンクションは、Oracle Label Securityがインストールされているかどうかを示すBOOLEAN値を返します。

Oracle Label Securityがインストールされている場合、IS_OLS_INSTALLED_VARCHARYを返します。

構文

DBMS_MACUTL.IS_OLS_INSTALLED_VARCHAR()
RETURN VARCHAR2;

パラメータ

なし

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

21.2.14 ROLE_GRANTED_ENABLED_VARCHARファンクション

ROLE_GRANTED_ENABLED_VARCHARファンクションでは、ユーザーのロール付与と有効化のステータスを示すVARCHAR2値が返されます。

ROLE_GRANTED_ENABLED_VARCHARファンクションは、十分な範囲で直接的または(別のロールを介して)間接的にユーザーにロールが付与されているか、そのロールが現在付与されていないがセッションにおいて有効になっているかを確認します。これらの条件のいずれかに該当する場合は、Yが返されます。

SYS_CONTEXTファンクションのSYS_SESSION_ROLESネームスペースは、DVSYSコマンド・ルールとして評価される場合はログイン・ユーザーのロールを表していないため、ROLE_GRANTED_ENABLED_VARCHARファンクションを使用して、ロールがログイン・ユーザーに対して有効になっているどうかを確認することをお薦めします。

構文

DBMS_MACUTL.ROLE_GRANTED_ENABLED_VARCHAR(
  p_role IN VARCHAR2, 
  p_user IN VARCHAR2 DEFAULT USER,
  p_profile IN NUMBER(38) DEFAULT 1,
  p_scope IN VARCHAR2 DEFAULT LOCAL)
RETURN VARCHAR2;

パラメータ

表21-13 ROLE_GRANTED_ENABLED_VARCHARのパラメータ

パラメータ 説明

p_role

チェックするロール。

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

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

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

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

p_user

チェックするユーザー。ROLE_GRANTED_ENABLED_VARCHARファンクションをルール評価の一部として使用する場合は、ROLE_GRANTED_ENABLED_VARCHARがOracle Database Vaultルールとして評価されていると、p_userCURRENT_USERに設定できません。かわりに、SYS_CONTEXTファンクションのUSERENVネームスペースのSESSION_USERを使用してログイン・ユーザーを表すことができます。

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

p_profile

権限分析を使用していて、チェック対象のロールを使用している場合は、権限分析でそのロールの使用状況を取得できるように、1を指定します。そうでない場合は、0を入力します。

p_scope

共通に付与されるロールの場合はCOMMONを、ローカルに付与されるロールの場合はLOCALを指定します。

この例では、コマンド・ルールでDBMS_MACUTL.ROLE_GRANTED_ENABLED_VARCHARファンクションを使用して、ログイン・ユーザーにEMPLOYEEの有効化されたロールが付与されているかどうかを確認する方法を示します。

BEGIN
DBMS_MACADM.CREATE_RULE(
  rule_name  => 'does role exist',
  rule_expr  => 'DVSYS.DBMS_MACUTL.ROLE_GRANTED_ENABLED_VARCHAR(''EMPLOYEE'',''"''||dvsys.dv_login_user||''"'') = ''Y''');
END;
/

21.2.15 USER_HAS_OBJECT_PRIVILEGEファンクション

USER_HAS_OBJECT_PRIVILEGEファンクションは、ユーザーまたはロールが、指定された1つのオブジェクト権限の付与によってオブジェクトにアクセスできるかどうかを示すBOOLEAN値を返します。

ユーザーやロールにオブジェクト権限がある場合、USER_HAS_OBJECT_PRIVILEGETRUEを返します。

構文

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

パラメータ

表21-14 USER_HAS_OBJECT_PRIVILEGEのパラメータ

パラメータ 説明

p_user

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

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

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

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

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

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

p_object_owner

スキーマなどのオブジェクト所有者。

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

特定のユーザーの認可を検索するには、DVA_DV_REALM_AUTHビューに問い合せます。

p_object_name

オブジェクト名。p_object_ownerパラメータで指定されているスキーマ内の表など。

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

既存のレルムで保護されるオブジェクトを確認するには、DBA_DV_REALM_OBJECTビューに問い合せます。

p_privilege

UPDATEなどのオブジェクト権限。

PUBLIC権限以外のデータベース・アカウントの権限を確認するには、DBA_DV_USER_PRIVSビューに問い合せます。

データベース・アカウントのすべての権限を確認するには、DBA_DV_USER_PRIVS_ALLビューに問い合せます。

SET SERVEROUTPUT ON
BEGIN
 IF DBMS_MACUTL.USER_HAS_OBJECT_PRIVILEGE(
   'SECTOR2_APP_MGR', 'OE', 'ORDERS', 'UPDATE')
  THEN DBMS_OUTPUT.PUT_LINE('SECTOR2_APP_MGR has the UPDATE privilege for the OE.ORDERS table');
   ELSE 
  DBMS_OUTPUT.PUT_LINE('SECTOR2_APP_MGR does not have the UPDATE privilege for the OE.ORDERS table.'); 
 END IF;
END;
/

21.2.16 USER_HAS_ROLEファンクション

USER_HAS_ROLEファンクションは、ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかを示すBOOLEAN値を返します。

ユーザーにロール権限がある場合、USER_HAS_ROLETRUEを返します。

構文

DBMS_MACUTL.USER_HAS_ROLE(
  p_role IN VARCHAR2, 
  p_user IN VARCHAR2 DEFAULT USER)
RETURN BOOLEAN;

パラメータ

表21-15 USER_HAS_ROLEのパラメータ

パラメータ 説明

p_role

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

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

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

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

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

p_user

チェックするユーザー。

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

SET SERVEROUTPUT ON
BEGIN
 IF DBMS_MACUTL.USER_HAS_ROLE('SECTOR2_APP_MGR', 'PSMITH')
  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;
/

21.2.17 USER_HAS_ROLE_VARCHARファンクション

USER_HAS_ROLE_VARCHARファンクションは、ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかを示すVARCHAR2値を返します。

ユーザーにロール権限が指定されている場合、USER_HAS_ROLE_VARCHARYを返します。

構文

DBMS_MACUTL.USER_HAS_ROLE_VARCHAR(
  p_role IN VARCHAR2, 
  p_user IN VARCHAR2 DEFAULT USER)
RETURN VARCHAR2;

パラメータ

表21-16 USER_HAS_ROLE_VARCHARのパラメータ

パラメータ 説明

p_role

チェックするロール。

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

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

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

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

p_user

チェックするユーザー。

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

21.2.18 USER_HAS_SYSTEM_PRIVILEGEファンクション

USER_HAS_SYSTEM_PRIVILEGEファンクションは、ユーザーがシステム権限を直接保持するのか間接的に(ロールを介して)保持するのかを示すBOOLEAN値を返します。

ユーザーにシステム権限が指定されている場合、USER_HAS_SYSTEM_PRIVILEGETRUEを返します。

構文

DBMS_MACUTL.USER_HAS_SYSTEM_PRIVILEGE(
  p_privilege  IN VARCHAR2, 
  p_user       IN VARCHAR2 DEFAULT USER)
RETURN BOOLEAN;

パラメータ

表21-17 USER_HAS_SYSTEM_PRIVILEGEのパラメータ

パラメータ 説明

p_privilege

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

PUBLIC権限以外のデータベース・アカウントの権限を確認するには、「DBA_DV_USER_PRIVSビュー」で説明されているDBA_DV_USER_PRIVSビューに問い合せます。

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

p_user

チェックするユーザー。

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

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