21 Oracle Database VaultユーティリティのAPI
Oracle Database Vaultは、DBMS_MACUTL
PL/SQLパッケージの一連のユーティリティのAPIを提供します。
- DBMS_MACUTLの定数
DBMS_MACUTL
PL/SQLパッケージで使用できる、一連の定数を使用できます。 - DBMS_MACUTLパッケージのプロシージャおよびファンクション
DBMS_MACUTL
PL/SQLパッケージでは、時間値、またはユーザーに適切な権限があるかどうかを知るなどのタスクを実行できます。
21.1 DBMS_MACUTLの定数
DBMS_MACUTL
PL/SQLパッケージで使用できる、一連の定数を使用できます。
- DBMS_MACUTLの定数のリスト
DBMS_MACUTL
PL/SQLパッケージには、Oracle Database Vault PL/SQLパッケージと使用する定数(フィールド)が用意されています。 - 例: DBMS_MACUTLの定数を使用したレルムの作成
定数を使用して、Oracle Database Vaultでのオブジェクトの作成時に単純なYesまたはNoの設定に回答できます。 - 例: DBMS_MACUTLの定数を使用したルール・セットの作成
定数を使用して、使用される監査のタイプや失敗オプションなど、オプションを設定できます。 - 例: DBMS_MACUTLの定数を使用したファクタの作成
定数を使用して、アイデンティティやラベリングなど、ファクタ固有の情報を設定できます。
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の定数のリスト
定数名 | データ型 | 説明 |
---|---|---|
|
|
すべてのオブジェクト名またはオブジェクト・タイプを示すワイルドカードとして、レルムAPI |
|
|
監査を有効にするために、ファクタAPI |
|
|
監査 |
|
|
|
|
|
|
|
|
信頼レベルが負の場合に監査を行うために、ファクタAPI |
|
|
信頼レベルが存在しない場合に監査を行うために、ファクタAPI |
|
|
検証ファンクションがエラーを返した場合に監査を行うために、ファクタAPI |
|
|
検証ファンクションがFalseの場合に監査を行うために、ファクタAPI |
|
|
Oracle Database Vaultのポリシーおよびコマンド・ルールを無効にするために使用します。 |
|
|
Oracle Database Vaultのポリシーおよびコマンド・ルールを有効にするために使用します。 |
|
|
アクセスするたびにファクタを再評価するために、ファクタAPI |
|
|
ユーザーがセッションにログインしたとき、1回のみファクタを評価するために、ファクタAPI |
|
|
失敗時にエラー・メッセージを表示しないように、 |
|
|
失敗時にエラー・メッセージを表示するように、 |
|
|
ファクタAPI |
|
|
コンテキストを示すために、ファクタAPI |
|
|
|
|
|
ファクタAPI |
|
|
ファクタAPI |
|
|
サブファクタおよびマージ・アルゴリズムからラベルを導出するために、ファクタAPI |
|
|
ファクタ・アイデンティティのラベル付けのために、ファクタAPI |
|
|
これは、ファクタに基づいてユーザーが設定できる最高のラベルです。ユーザーに対するラベルは考慮されません。 |
|
|
NULLラベルのファクタにデフォルト設定されるラベル。 |
|
|
次のAPIで使用します。
|
|
|
|
|
|
個別に変更するようにOracle Database Vaultポリシーの下のレルムおよびコマンド・ルールの強制状態を設定します。 |
|
|
レルム違反が発生したときに監査を行うために、レルムAPI |
|
|
監査を無効にするために、レルムAPI |
|
|
レルムAPI |
|
|
所有者に対するレルム認可を設定するために、レルムAPI |
|
|
参加者に対するレルム認可を設定するために、レルムAPI |
|
|
ルール・セット失敗時に監査を行うために、ルール・セットAPI |
|
|
監査を無効にするために、ルール・セットAPI |
|
|
ルール・セット成功時に監査を行うために、ルール・セットAPI |
|
|
すべてのルールがTrueと評価された場合にルール・セットが成功するように、ルール・セットAPI |
|
|
ルールのいずれかがTrueと評価された場合に成功するように、ルール・セットAPI |
|
|
ルール・セットが失敗した場合にエラー・メッセージが表示されるように、ルール・セットAPI |
|
|
ルール・セットが失敗した場合にエラー・メッセージが表示されないように、ルール・セットAPI |
|
|
ルール・セットが失敗した場合にハンドラ( |
|
|
ハンドラへのコールを無効にするか、ハンドラが使用されない場合に、ルール・セットAPI |
|
|
ルール・セットが成功した場合にハンドラをコールするように、ルール・セットAPI |
|
|
ポリシーの強制状態をシミュレーション・モードに設定するために使用します。このモードでは、レルムまたはコマンド・ルールの違反に対してエラーが発生しません。かわりに、エラーに関連する十分な情報(たとえば、ユーザーまたはSQLコマンド)とともに、指定されたログ表にエラーが記録されます。 |
|
|
前の値を考慮した上で、ユーザーのラベルに設定する必要があるとOracle Label Securityで決められた値。 |
|
|
次のAPIで使用します。
|
親トピック: DBMS_MACUTLの定数
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; /
親トピック: DBMS_MACUTLの定数
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; /
親トピック: DBMS_MACUTLの定数
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; /
親トピック: DBMS_MACUTLの定数
21.2 DBMS_MACUTLパッケージのプロシージャおよびファンクション
DBMS_MACUTL
PL/SQLパッケージでは、時間値、またはユーザーに適切な権限があるかどうかを知るなどのタスクを実行できます。
- CHECK_DVSYS_DML_ALLOWEDプロシージャ
CHECK_DVSYS_DML_ALLOWED
プロシージャは、ユーザーがData Modification Language (DML)のコマンドを発行してDVSYS
オブジェクトにアクセスできるかどうかを確認します。 - GET_CODE_VALUEファンクション
GET_CODE_VALUE
ファンクションは、コード・グループ内でコードの値を検索し、VARCHAR2
値を返します。 - GET_SECONDファンクション
GET_SECOND
ファンクションは、Oracle SS(秒)形式で秒(00から59)を返し、NUMBER
値を返します。 - GET_MINUTEファンクション
GET_MINUTE
ファンクションは、Oracle MI(分)形式の分(00から59)をNUMBER
値で返します。 - GET_HOURファンクション
GET_HOUR
ファンクションは、Oracle HH24(時間)形式の時間(00から23)をNUMBER
値で返します。 - GET_DAYファンクション
GET_DAY
ファンクションは、Oracle DD(日)形式の日(01から31)をNUMBER
値で返します。 - GET_MONTHファンクション
GET_MONTH
ファンクションは、Oracle MM(月)形式の月(01から12)をNUMBER
値で返します。 - GET_YEARファンクション
GET_YEAR
ファンクションは、Oracle YYYY(年)形式の年(0001から9999)をNUMBER
値で返します。 - IS_ALPHAファンクション
IS_ALPHA
ファンクションは、文字がアルファベットかどうかを示すBOOLEAN
値を返します。 - IS_DIGITファンクション
IS_DIGIT
ファンクションは、文字が数値かどうかを示すBOOLEAN
値を返します。 - IS_DVSYS_OWNERファンクション
IS_DVSYS_OWNER
ファンクションは、Oracle Database Vault構成を管理する権限がユーザーに付与されているかどうかを示すBOOLEAN
値を返します。 - IS_OLS_INSTALLEDファンクション
IS_OLS_INSTALLED
ファンクションは、Oracle Label Securityがインストールされているかどうかを示すBOOLEAN
値を返します。 - IS_OLS_INSTALLED_VARCHARファンクション
IS_OLS_INSTALLED_VARCHAR
ファンクションは、Oracle Label Securityがインストールされているかどうかを示すBOOLEAN
値を返します。 - ROLE_GRANTED_ENABLED_VARCHARファンクション
ROLE_GRANTED_ENABLED_VARCHAR
ファンクションは、ユーザーのロール付与と有効化のステータスを示すVARCHAR2
値を返します。 - USER_HAS_OBJECT_PRIVILEGEファンクション
USER_HAS_OBJECT_PRIVILEGE
ファンクションは、ユーザーまたはロールが、指定された1つのオブジェクト権限の付与によってオブジェクトにアクセスできるかどうかを示すBOOLEAN
値を返します。 - USER_HAS_ROLEファンクション
USER_HAS_ROLE
ファンクションは、ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかを示すBOOLEAN
値を返します。 - USER_HAS_ROLE_VARCHARファンクション
USER_HAS_ROLE_VARCHAR
ファンクションは、ユーザーがロール権限を直接保持するのか間接的に(他のロールを介して)保持するのかを示すVARCHAR2
値を返します。 - USER_HAS_SYSTEM_PRIVILEGEファンクション
USER_HAS_SYSTEM_PRIVILEGE
ファンクションは、ユーザーがシステム権限を直接保持するのか間接的に(ロールを介して)保持するのかを示すBOOLEAN
値を返します。
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のパラメータ
パラメータ | 説明 |
---|---|
|
チェックするユーザー。 現在のデータベース・インスタンスで既存のユーザーを検索するには、次のビューに問い合せます。
|
例
ユーザー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のパラメータ
パラメータ | 説明 |
---|---|
|
コード・グループ( 現行のデータベース・インスタンス内の使用可能なコード・グループを確認するには、「DBA_DV_CODEビュー」で説明されている |
|
コードのID。 このIDは、 |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
SS形式の日付(たとえば 日付を指定しない場合、Oracle Database VaultはOracle Databaseの |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
MI形式の日付(たとえば2:30の場合は 日付を指定しない場合、Oracle Database VaultはOracle Databaseの |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
HH24形式の日付(たとえば午後2:00の場合は 日付を指定しない場合、Oracle Database VaultはOracle Databaseの |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
DD形式の日付(たとえば月の初日の場合は 日付を指定しない場合、Oracle Database VaultはOracle Databaseの |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
MM形式の日付(たとえば8月の場合は 日付を指定しない場合、Oracle Database VaultはOracle Databaseの |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
YYYY形式の日付(たとえば 日付を指定しない場合、Oracle Database Vaultは |
例
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のパラメータ
パラメータ | 説明 |
---|---|
|
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のパラメータ
パラメータ | 説明 |
---|---|
|
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のパラメータ
パラメータ | 説明 |
---|---|
|
チェックするユーザー。 既存のユーザーを検索するには、次のビューに問い合せます。
|
例
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_INSTALLED
はTRUE
を返します。
構文
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_VARCHAR
はY
を返します。
構文
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_profile |
権限分析を使用していて、チェック対象のロールを使用している場合は、権限分析でそのロールの使用状況を取得できるように、 |
p_scope |
共通に付与されるロールの場合は |
例
この例では、コマンド・ルールで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_PRIVILEGE
はTRUE
を返します。
構文
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のパラメータ
パラメータ | 説明 |
---|---|
|
チェックするユーザーまたはロール。 既存のユーザーを検索するには、次のビューに問い合せます。
|
|
スキーマなどのオブジェクト所有者。 使用可能なユーザーを確認するには、『Oracle Databaseリファレンス』で説明されている 特定のユーザーの認可を検索するには、 |
|
オブジェクト名。 使用可能なオブジェクトを確認するには、『Oracle Databaseリファレンス』で説明されている 既存のレルムで保護されるオブジェクトを確認するには、 |
|
データベース・アカウントのすべての権限を確認するには、 |
例
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_ROLE
はTRUE
を返します。
構文
DBMS_MACUTL.USER_HAS_ROLE( p_role IN VARCHAR2, p_user IN VARCHAR2 DEFAULT USER) RETURN BOOLEAN;
パラメータ
表21-15 USER_HAS_ROLEのパラメータ
パラメータ | 説明 |
---|---|
|
チェックするロール権限。 既存のロールを検索するには、次のビューに問い合せます。
|
|
チェックするユーザー。 既存のユーザーを検索するには、次のビューに問い合せます。
|
例
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_VARCHAR
はY
を返します。
構文
DBMS_MACUTL.USER_HAS_ROLE_VARCHAR( p_role IN VARCHAR2, p_user IN VARCHAR2 DEFAULT USER) RETURN VARCHAR2;
パラメータ
表21-16 USER_HAS_ROLE_VARCHARのパラメータ
パラメータ | 説明 |
---|---|
|
チェックするロール。 既存のロールを検索するには、次のビューに問い合せます。
|
|
チェックするユーザー。 既存のユーザーを検索するには、次のビューに問い合せます。
|
21.2.18 USER_HAS_SYSTEM_PRIVILEGEファンクション
USER_HAS_SYSTEM_PRIVILEGE
ファンクションは、ユーザーがシステム権限を直接保持するのか間接的に(ロールを介して)保持するのかを示すBOOLEAN
値を返します。
ユーザーにシステム権限が指定されている場合、USER_HAS_SYSTEM_PRIVILEGE
はTRUE
を返します。
構文
DBMS_MACUTL.USER_HAS_SYSTEM_PRIVILEGE( p_privilege IN VARCHAR2, p_user IN VARCHAR2 DEFAULT USER) RETURN BOOLEAN;
パラメータ
表21-17 USER_HAS_SYSTEM_PRIVILEGEのパラメータ
パラメータ | 説明 |
---|---|
|
チェックするシステム権限。
データベース・アカウントのすべての権限を確認するには、「DBA_DV_USER_PRIVS_ALLビュー」で説明されている |
|
チェックするユーザー。 既存のユーザーを検索するには、次のビューに問い合せます。
|
例
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; /