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

戻る
戻る
 
次へ
次へ
 

14 Oracle Database Vault PL/SQLインタフェースの使用方法

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

Oracle Database VaultランタイムのPL/SQLプロシージャおよびファンクション

Oracle Database Vaultには一連の手続き型インタフェースが用意されており、様々なDatabase Vaultセキュリティ・オプションの管理およびDatabase Vaultセキュリティの実施の管理に使用できます。また、レルム違反およびコマンド認可のDDLコマンドを検証するためのロジックを公開するプロシージャおよびファンクションもあります。その他に、ファクタの値をたとえばWebアプリケーションなどから設定する(関連付けられたルール・セットがTrueに評価される場合)、セッションまたは特定のファクタ・アイデンティティに対する信頼レベルを取得する、あるいはファクタ・アイデンティティのラベルを取得するためのプロシージャおよびファンクションが用意されています。これらのプロシージャおよびファンクションは、データベース管理者がすべてのDVSYSパッケージ・プロシージャに対するEXECUTE権限を一般のデータベース・アカウント群に付与しないように提供されています。プロシージャおよびファンクションは、必要な最小限のメソッドのみを公開します。これらのファンクションおよびプロシージャはすべて、必要とするアプリケーションでパブリックに使用できます。

表14-1に、デフォルトのランタイムのPL/SQLプロシージャおよびファンクションを示します。

表14-1 DVSYSファンクション

プロシージャまたはファンクション パラメータ

SET_FACTORプロシージャ


ファクタを設定します。

GET_FACTORファンクション


ファクタを取得します。

GET_TRUST_LEVELファンクション


ファクタに割り当てられた信頼レベルを取得します。

GET_TRUST_LEVEL_FOR_IDENTITYファンクション


指定されたファクタおよびアイデンティティの信頼レベルを取得します。

ROLE_IS_ENABLEDファンクション


指定されたデータベース・ロールが有効になっているかどうかを確認します。

GET_FACTOR_LABELファンクション


ファクタにラベルが割り当てられている場合、指定されたOracle Label Securityポリシーのために、指定されたファクタのラベルを取得します。


SET_FACTORプロシージャ

このプロシージャは、ファクタ・アイデンティティを動的に設定する必要があるアプリケーションに公開できます。また、パッケージ・プロシージャDBMS_MACSEC.SET_FACTORをラップしています。割当て用のルール・セットがファクタに関連付けられていて、ルール・セットがtrueを返した場合に、値が設定されます。通常のルール・セット処理が発生し、ファクタ値(アイデンティティ)の検証メソッドがコールされます。このプロシージャは、一般のデータベース・アカウント群で使用(実行)できます。

構文

DVSYS.SET_FACTOR(
  p_factor VARCHAR2,
  p_value  VARCHAR2);

パラメータ

表14-2 SET_FACTORパラメータ

パラメータ 説明

p_factor

ファクタ名。

現行のデータベース・インスタンスで既存のファクタを検索するには、「DBA_DV_FACTORビュー」で説明されているDBA_DV_FACTORビューに問い合せます。

p_value

アイデンティティ値。大/小文字混在で最大で1024文字まで入力できます。

現行のデータベース・インスタンスの各ファクタのアイデンティティを検索するには、「DBA_DV_IDENTITYビュー」で説明されているDBA_DV_IDENTITYビューに問い合せます。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Set Client ID Factor Identity',
  rule_expr => 'DVSYS.SET_FACTOR(''Sector2_ClientID'', ''identity'')');
END;

GET_FACTORファンクション

このファンクションは、パブリック・ファクタ・ファンクションによるファクタのアイデンティティの解決を可能にするために、DVFスキーマに公開できます。これにより、DVFスキーマのF$ファンクションが有効になります。このファンクションは、一般のデータベース・アカウント群で使用(実行)できます。

構文

DVSYS.GET_FACTOR(
  p_factor VARCHAR2)
RETURNS VARCHAR2;

パラメータ

表14-3 GET_FACTORパラメータ

パラメータ 説明

p_factor

ファクタ名。

現行のデータベース・インスタンスで既存のファクタを検索するには、「DBA_DV_FACTORビュー」で説明されているDBA_DV_FACTORビューに問い合せます。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get Client ID Factor Identity',
  rule_expr => 'DVSYS.GET_FACTOR(''Sector2_ClientID'')');
END;

GET_TRUST_LEVELファンクション

このファンクションは、リクエストされたファクタの現行セッションのアイデンティティの信頼レベルを返します。このファンクションは、一般のデータベース・アカウント群で使用(実行)できます。使用可能な信頼レベルのリストは、「ファクタ・アイデンティティの作成および構成」を参照してください。

構文

DVSYS.GET_TRUST_LEVEL(
  p_factor VARCHAR2)
RETURNS VARCHAR2;

パラメータ

表14-4 GET_TRUST_LEVELパラメータ

パラメータ 説明

p_factor

ファクタ名。

現行のデータベース・インスタンスで既存のファクタを検索するには、「DBA_DV_FACTORビュー」で説明されているDBA_DV_FACTORビューに問い合せます。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get Client ID Trust Level',
  rule_expr => 'DVSYS.GET_TRUST_LEVEL(''Sector2_ClientID'')');
END;

GET_TRUST_LEVEL_FOR_IDENTITYファンクション

このファンクションは、リクエストされたファクタおよびアイデンティティの信頼レベルを返します。このファンクションは、一般のデータベース・アカウント群で使用(実行)できます。使用可能な信頼レベルのリストは、「ファクタ・アイデンティティの作成および構成」を参照してください。

構文

DVSYS.GET_TRUST_LEVEL_FOR_IDENTITY(
  p_factor   VARCHAR2,
  p_identity VARCHAR2)
RETURNS VARCHAR2;

パラメータ

表14-5 GET_TRUST_LEVEL_FOR_IDENTITYパラメータ

パラメータ 説明

p_factor

ファクタ名。

現行のデータベース・インスタンスで既存のファクタを検索するには、「DBA_DV_FACTORビュー」で説明されているDBA_DV_FACTORビューに問い合せます。

p_identity

アイデンティティ値。

現行のデータベース・インスタンスの各ファクタのアイデンティティを検索するには、「DBA_DV_IDENTITYビュー」で説明されているDBA_DV_IDENTITYビューを使用します。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get Client ID Identity Trust Level',
  rule_expr => 'DVSYS.GET_TRUST_LEVEL_FOR_IDENTITY(''Sector2_ClientID'', ''identity'')');
END;

ROLE_IS_ENABLEDファンクション

このファンクションは、データベース・ロールが有効であるかどうかを示すブール値を返します。このファンクションは、一般のデータベース・アカウント群で使用(実行)できます。

構文

DVSYS.ROLE_IS_ENABLED(
  p_role VARCHAR2)
RETURNS BOOLEAN;

パラメータ

表14-6 ROLE_IS_ENABLEDパラメータ

パラメータ 説明

p_role

確認するデータベース・ロール名。

既存のロールを検索する場合は、次のビューを使用します。

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

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

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


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check if SYSADM Role Is Enabled',
  rule_expr => 'DVSYS.ROLE_IS_ENABLED(''SYSADM'')');
END;

GET_FACTOR_LABELファンクション

このファンクションは、指定されたファクタに指定されたOracle Label Securityポリシー用のラベルが割り当てられている場合、そのラベルを返します。ポリシーがOracle Label Securityを使用して構成されている場合は、ポリシーの最大セッション・ラベルとマージされるラベルを返します。このファンクションは、一般のデータベース・アカウント群で使用(実行)できます。ファクタ・ラベルの詳細は、「ラベル・アイデンティティ」を参照してください。

構文

DVSYS.GET_FACTOR_LABEL(
  p_factor      IN VARCHAR2,
  p_policy_name IN VARCHAR2)
RETURNS VARCHAR2;

パラメータ

表14-7 GET_FACTOR_LABELパラメータ

パラメータ 説明

p_factor

ファクタ名。

現行のデータベース・インスタンスの使用可能なファクタを検索する場合は、DBA_DV_FACTORビューを使用します。Oracle Label Securityポリシーに関連付けられているファクタを検索するには、DBA_DV_MAC_POLICY_FACTORを使用します。

「DBA_DV_FACTORビュー」および「DBA_DV_MAC_POLICY_FACTORビュー」を参照してください。

p_policy_name

Oracle Label Securityポリシー名。

現行のデータベース・インスタンスのポリシーおよびファクタに関する情報を検索する場合は、次のビューを使用します。

  • DBA_DV_MAC_POLICY: 現行のデータベース・インスタンスに定義されているOracle Label Securityポリシーが表示されます。「DBA_DV_MAC_POLICYビュー」を参照してください。

  • DBA_DV_MAC_POLICY_FACTOR: 現行のデータベース・インスタンスのOracle Label Securityポリシーに関連付けられているファクタが表示されます。「DBA_DV_MAC_POLICY_FACTORビュー」を参照してください。

  • DBA_DV_POLICY_LABEL: 各ポリシーのDBA_DV_IDENTITYビューの各ファクタ識別子に対するOracle Label Securityラベルが表示されます。「DBA_DV_POLICY_LABELビュー」を参照してください。


BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get the ClientID Factor Label',
  rule_expr => 'DVSYS.GET_FACTOR_LABEL(''Sector2_ClientID'', ''Access Locations'')');
END;

Oracle Database VaultのPL/SQLファクタ・ファンクション

DVSYSスキーマから提供されるファンクションおよびプロシージャに加え、DVFスキーマにはシステムに定義されているファクタごとに1つのファンクションが含まれます。様々なファクタを管理するためにOracle Database Vault構成API(DVSYS.DBMS_MACADM)がコールされると、これらのファンクションが作成および維持されます。その後、ファンクションは一般のデータベース・アカウント群でPL/SQLファンクションおよび標準SQLを介して使用できます。これにより、ファクタはOracle Label Security、Oracle Virtual Private Database(VPD)などで使用できるようになります。

通常、これらのファンクションをルール式に組み込むことができます。たとえば、次のようになります。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
 rule_name => 'Not Internal DBA',
 rule_expr => 'DVF.F$SESSION_USER NOT IN (''JSMTIH'', ''TBROWN'')');
END;

ファクタ・ファンクションの値を検索するには、DUALシステム表から選択します。たとえば、次のようになります。

SELECT DVF.F$SESSION_USER FROM DUAL;

F$SESSION_USER
------------------------------------------------
DBVOWNER

ファクタ自体の名前は、大/小文字を区別しません。たとえば、次の文は同じ結果を返します。

select dvf.f$session_user from dual;

SELECT DVF.F$SESSION_USER FROM DUAL;

表14-8にデフォルトのファクタ・ファンクションを示します。

表14-8 インストールされたOracle Database Vaultファクタ・ファンクション

DVFファクタ・ファンクション 説明

F$AUTHENTICATION_METHODファンクション


認証の方式をVARCHAR2データ型で返します。次に、ユーザー・タイプの後に返される方式を続けて示します。

F$CLIENT_IPファンクション


データベース・サーバーに対するクライアントのIPアドレスおよび取得メソッドを返します。

F$DATABASE_DOMAINファンクション


DB_DOMAIN初期化パラメータに指定されているようにデータベースのドメインを返します。

F$DATABASE_HOSTNAMEファンクション


データベースのホスト名および取得メソッドを返します。

F$DATABASE_INSTANCEファンクション


データベース・インスタンスのインスタンス識別子および取得メソッドを返します。

F$DATABASE_IPファンクション


データベース・サーバーのIPアドレスおよび取得メソッドを返します。

F$DATABASE_NAMEファンクション


DB_NAME初期化パラメータに指定されているようにデータベースの名前を返します。

F$DOMAINファンクション


ランタイム環境(ネットワークIT環境やそのサブセットなど)内の、特定の機密レベルで動作する物理的な構成または実装固有のファクタの名前付きコレクションを返します。

F$ENTERPRISE_IDENTITYファンクション


ユーザーのエンタープライズ全体のアイデンティティを返します。

F$IDENTIFICATION_TYPEファンクション


データベースでのユーザーのスキーマの作成方法を返します。具体的には、CREATE/ALTER USER構文のIDENTIFIED句が反映されます。

F$LANGファンクション


既存のLANGUAGEパラメータより短い形式の、言語名のISO略称を返します。

F$LANGUAGEファンクション


セッションで現在使用中の言語と地域、およびデータベース・キャラクタ・セットをVARCHAR2データ型で返します。

F$MACHINEファンクション


データベース・セッションを確立したデータベース・クライアントのコンピュータ(ホスト)名を返します。

F$NETWORK_PROTOCOLファンクション


接続文字列のPROTOCOL=protocol部分に指定されている、通信に使用されるネットワーク・プロトコルを返します。

F$PROXY_ENTERPRISE_IDENTITYファンクション


プロキシ・ユーザーがエンタープライズ・ユーザーである場合、Oracle Internet Directoryの識別名(DN)を返します。

F$SESSION_USERファンクション


現行ユーザーが認証されたデータベース・ユーザー名を返します。


F$AUTHENTICATION_METHODファンクション

このファンクションは認証の方式をVARCHAR2データ型で返します。次のリストでは、ユーザーのタイプに続いて返されるメソッドが示されています。

  • パスワードで認証されるエンタープライズ・ユーザー、ローカル・データベース・ユーザー、またはパスワード・ファイルを使用するSYSDBA/SYSOPER(パスワードを使用するユーザー名によるプロキシ): PASSWORD

  • Kerberosで認証されるエンタープライズ・ユーザーまたは外部ユーザー: KERBEROS

  • SSLで認証されるエンタープライズ・ユーザーまたは外部ユーザー: SSL

  • RADIUSで認証される外部ユーザー: RADIUS

  • オペレーティング・システムで認証される外部ユーザーまたはSYSDBA/SYSOPER: OS

  • DCEで認証される外部ユーザー: DCE

  • 証明書、識別名(DN)またはパスワードを使用しないユーザー名によるプロキシ: NONE

認証方式がパスワード、KerberosまたはSSLの場合、IDENTIFICATION_TYPEを使用して外部ユーザーとエンタープライズ・ユーザーを区別できます。

構文

DVF.F$AUTHENTICATION_METHOD ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check SSL Authentication Method',
  rule_expr => 'DVF.F$AUTHENTICATION_METHOD = ''SSL''');
END;

F$CLIENT_IPファンクション

このファンクションは、データベース・サーバーに対するクライアントのIPアドレスおよび取得メソッドをVARCHAR2データ型で返します。

構文

DVF.F$CLIENT_IP ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Client IP Address',
  rule_expr => 'DVF.F$CLIENT_IP BETWEEN ''192.0.2.10'' AND ''192.0.2.20''');
END;

F$DATABASE_DOMAINファンクション

このファンクションは、DB_DOMAIN初期化パラメータに指定されているデータベースのドメインをVARCHAR2データ型で返します。

構文

DVF.F$DATABASE_DOMAIN ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Client Database Domain',
  rule_expr => 'DVF.F$DATABASE_DOMAIN NOT IN (''EXAMPLE'', ''YOURDOMAIN'')');
END;

F$DATABASE_HOSTNAMEファンクション

このファンクションは、データベースのホスト名および取得メソッドをVARCHAR2データ型で返します。

構文

DVF.F$DATABASE_HOSTNAME ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Host Name',
  rule_expr => 'DVF.F$DATABASE_HOSTNAME IN (''SHOBEEN'', ''MAU'')');
END;

F$DATABASE_INSTANCEファンクション

このファンクションは、データベース・インスタンスのインスタンス識別子および取得メソッドをVARCHAR2データ型で返します。

構文

DVF.F$DATABASE_INSTANCE ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Database Instance ID',
  rule_expr => 'DVF.F$DATABASE_INSTANCE = ''SALES_DB''');
END;

F$DATABASE_IPファンクション

このファンクションは、データベース・サーバーのIPアドレスおよび取得メソッドをVARCHAR2データ型で返します。

構文

DVF.F$DATABASE_IP ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Database IP address',
  rule_expr => 'DVF.F$DATABASE_IP = ''192.0.2.5''');
END;

F$DATABASE_NAMEファンクション

このファンクションは、DB_NAME初期化パラメータに指定されているデータベースの名前をVARCHAR2データ型で返します。

構文

DVF.F$DATABASE_NAME ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Database DB_NAME Name',
  rule_expr => 'DVF.F$DATABASE_NAME = ''ORCL''');
END;

F$DOMAINファンクション

このファンクションは、ランタイム環境(ネットワークIT環境やそのサブセットなど)内の、特定の機密レベルで動作する物理的な構成または実装固有のファクタの名前付きコレクションを返します。戻り型はVARCHAR2です。

データベースへのセキュア・アクセス・パス内にあるOracle Database Vaultノードのホスト名、IPアドレスおよびデータベース・インスタンス名などのファクタを使用してドメインを識別できます。ドメインを識別するファクタ識別子の組合せを使用して、各ドメインを一意に特定できます。これらの識別ファクタやその他のファクタを使用して、ドメイン内に最大セキュリティ・ラベルを定義できます。これにより、Oracle Database Vaultセッションに関する物理ファクタに応じて、データ・アクセスおよびコマンドが制限されます。必要なドメインの例として、企業機密、内部パブリック、パートナ、顧客があります。

構文

DVF.F$DOMAIN ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Domain',
  rule_expr => 'DVF.F$DOMAIN = ''EXAMPLE.COM''');
END;

F$ENTERPRISE_IDENTITYファンクション

このファンクションは、ユーザーのエンタープライズ全体のアイデンティティをVARCHAR2データ型で返します。

  • エンタープライズ・ユーザーの場合: Oracle Internet Directory DN

  • 外部ユーザーの場合: 外部アイデンティティ(Kerberosプリンシパル名、RADIUSおよびDCEスキーマ名、オペレーティング・システム・ユーザー名、証明書DN)

  • ローカル・ユーザーおよびSYSDBA/SYSOPERログインの場合: NULL

属性の値はプロキシ方法によって異なります。

  • DNによるプロキシの場合: クライアントのOracle Internet Directory DN

  • 証明書によるプロキシの場合: 外部ユーザーではクライアントの証明書DN、グローバル・ユーザーではOracle Internet Directory DN

  • ユーザー名によるプロキシの場合: エンタープライズ・ユーザーであるクライアントではOracle Internet Directory DN、ローカル・データベース・ユーザーであるクライアントではNULL

構文

DVF.F$ENTERPRISE_IDENTITY ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check User Enterprise Identity',
  rule_expr => 'DVF.F$ENTERPRISE_IDENTITY NOT IN (''JSMITH'', ''TSMITH'')');
END;

F$IDENTIFICATION_TYPEファンクション

このファンクションは、データベースでのユーザーのスキーマの作成方法を返します。具体的には、CREATE/ALTER USER構文のIDENTIFIED句が反映されます。戻り型はVARCHAR2です。次に示すリストでは、スキーマ作成時に使用された構文に、返される識別タイプが続きます。

  • IDENTIFIED BY password: LOCAL

  • IDENTIFIED EXTERNALLY: EXTERNAL

  • IDENTIFIED GLOBALLY: GLOBAL SHARED

  • IDENTIFIED GLOBALLY AS DN: GLOBAL PRIVATE

構文

DVF.F$IDENTIFICATION_TYPE ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check User Schema Creation Type',
  rule_expr => 'DVF.F$IDENTIFICATION_TYPE = ''GLOBAL SHARED''');
END;

F$LANGファンクション

このファンクションは、既存のLANGUAGEパラメータより短い形式の言語名のISO略称を、ユーザーのセッションに対して返します。戻り型はVARCHAR2です。

Oracle Databaseでサポートされている言語の一覧については、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

構文

DVF.F$LANG ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check ISO Abbreviated Language Name',
  rule_expr => 'DVF.F$LANG IN (''EN'', ''DE'', ''FR'')');
END;

F$LANGUAGEファンクション

ユーザーのセッションで現在使用中の言語と地域、およびデータベース・キャラクタ・セットをVARCHAR2データ型で次の形式で返します。

language_territory.characterset

Oracle Databaseでサポートされている言語と地域の一覧については、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

構文

DVF.F$LANGUAGE ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Session Language and Territory',
  rule_expr => 'DVF.F$LANGUAGE = ''AMERICAN_AMERICA.WE8ISO8859P1''');
END;

F$MACHINEファンクション

このファンクションは、データベース・セッションを確立したデータベース・クライアントのコンピュータ(ホスト)名を返します。戻り型はVARCHAR2です。

構文

DVF.F$MACHINE ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Client Computer Host Name',
  rule_expr => 'DVF.F$MACHINE NOT IN (''SHOBEEN'', ''SEBASTIAN'')');
END;

F$NETWORK_PROTOCOLファンクション

このファンクションは、接続文字列のPROTOCOL=protocol部分に指定されている、通信に使用されるネットワーク・プロトコルを返します。戻り型はVARCHAR2です。

構文

DVF.F$NETWORK_PROTOCOL ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Network Protocol',
  rule_expr => 'DVF.F$NETWORK_PROTOCOL = ''TCP''');
END;

F$PROXY_ENTERPRISE_IDENTITYファンクション

このファンクションは、プロキシ・ユーザーがエンタープライズ・ユーザーである場合、Oracle Internet Directoryの識別名(DN)を返します。戻り型はVARCHAR2です。

構文

DVF.F$PROXY_ENTERPRISE_IDENTITY ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get OID DN of Enterprise User',
  rule_expr => 'DVF.F$PROXY_ENTERPRISE_IDENTITY = ''cn=Provisioning Admins''');
END;

F$SESSION_USERファンクション

このファンクションは、現行ユーザーが認証されたデータベース・ユーザー名を返します。この値は、セッションを通して同じです。戻り型はVARCHAR2です。

構文

DVF.F$SESSION_USER ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Database User Name',
  rule_expr => 'DVF.F$SESSION_USER IN (''JSMITH'', ''TSMITH'')');
END;

Oracle Database VaultのPL/SQLルール・ファンクション

Oracle Database Vaultには、ルール・セットで保護するSQL文を検査するためにルール・セットで使用できる一連のファンクションが用意されています。たとえば、コマンド・ルールでルール・セットによりSELECT ON HR.EMPLOYEESを保護する場合、ルール式でこれらのファンクションを使用して、より詳細な情報に基づいた判断を下すことができます。

表14-9にデフォルトのルール・ファンクションを示します。

表14-9 インストールされるOracle Database VaultのPL/SQLルール・セット・ファンクション

ルール・セット・ファンクション 説明

DV_SYSEVENTファンクション


ルール・セットを起動するシステム・イベントを返します。

DV_LOGIN_USERファンクション


ログイン・ユーザー名を返します。

DV_INSTANCE_NUMファンクション


データベース・インスタンス番号を返します。

DV_DATABASE_NAMEファンクション


データベース名を返します。

DV_DICT_OBJ_TYPEファンクション


データベース操作が発生したディクショナリ・オブジェクトのタイプ(表、プロシージャ、ビューなど)を返します。

DV_DICT_OBJ_OWNERファンクション


データベース操作が発生したディクショナリ・オブジェクトの所有者を返します。

DV_DICT_OBJ_NAMEファンクション


データベース操作が発生したディクショナリ・オブジェクトの名前を返します。

DV_SQL_TEXTファンクション


操作で使用されるデータベース文のSQLテキストの最初の4000文字を返します。


DV_SYSEVENTファンクション

このファンクションは、ルール・セットを起動するシステム・イベントをVARCHAR2データ型で返します。イベント名は、SQL文の構文のものと同じで、INSERTCREATEなどです。

構文

DVSYS.DV_SYSEVENT ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Get System Event Firing the Maintenance Rule Set',
  rule_expr => 'DVSYS.DV_SYSEVENT = ''CREATE''');
END;

DV_LOGIN_USERファンクション

このファンクションは、ログイン・ユーザー名をVARCHAR2データ型で返します。

構文

DVSYS.DV_LOGIN_USER ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check System Login User Name',
  rule_expr => 'DVSYS.DV_LOGIN_USER = ''SEBASTIAN''');
END;

DV_INSTANCE_NUMファンクション

このファンクションは、データベース・インスタンス番号をNUMBERデータ型で返します。

構文

DVSYS.DV_INSTANCE_NUM ()
RETURNS NUMBER;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Database Instance Number',
  rule_expr => 'DVSYS.DV_INSTANCE_NUM BETWEEN 6 AND 9');
END;

DV_DATABASE_NAMEファンクション

このファンクションは、データベース名をVARCHAR2データ型で返します。

構文

DVSYS.DV_DATABASE_NAME ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Database Name',
  rule_expr => 'DVSYS.DV_DATABASE_NAME = ''ORCL''');
END;

DV_DICT_OBJ_TYPEファンクション

このファンクションは、データベース操作が発生したディクショナリ・オブジェクトのタイプ(表、プロシージャ、ビューなど)を返します。戻り型はVARCHAR2です。

構文

DVSYS.DV_DICT_OBJ_TYPE ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Dictionary Object Type',
  rule_expr => 'DVSYS.DV_DICT_OBJ_TYPE IN (''TABLE'', ''VIEW'')');
END;

DV_DICT_OBJ_OWNERファンクション

このファンクションは、データベース操作が発生したディクショナリ・オブジェクトの所有者の名前を返します。戻り型はVARCHAR2です。

構文

DVSYS.DV_DICT_OBJ_OWNER ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Dictionary Object Owner',
  rule_expr => 'DVSYS.DV_DICT_OBJ_OWNER = ''JSMITH''');
END;

DV_DICT_OBJ_NAMEファンクション

このファンクションは、データベース操作が発生したディクショナリ・オブジェクトの名前を返します。戻り型はVARCHAR2です。

構文

DVSYS.DV_DICT_OBJ_NAME ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check Dictionary Object Name',
  rule_expr => 'DVSYS.DV_DICT_OBJ_NAME = ''SALES''');
END;

DV_SQL_TEXTファンクション

このファンクションは、操作で使用されるデータベース文のSQLテキストの最初の4000文字を返します。戻り型はVARCHAR2です。

構文

DVSYS.DV_SQL_TEXT ()
RETURNS VARCHAR2;

パラメータ

なし。

BEGIN
 DVSYS.DBMS_MACADM.CREATE_RULE(
  rule_name => 'Check SQL Text',
  rule_expr => 'DVSYS.DV_SQL_TEXT = ''SELECT SALARY FROM HR.EMPLOYEES''');
END;

Oracle Database VaultのPL/SQLパッケージ

Oracle Database Vaultには、Oracle Database Vaultのメンテナンスおよびランタイムの動作をサポートするための一連のPL/SQLパッケージAPIが用意されています。表14-10にこれらのパッケージを示します。これらのパッケージの詳細は、第11章「DVSYS.DBMS_MACADMパッケージの使用方法」を参照してください。

表14-10 Oracle Database Vault AdministratorおよびランタイムのPL/SQLパッケージ

パッケージ 説明

DVSYS.DBMS_MACADM

このパッケージAPIは、セキュア構成データおよびアクセス制御構成データを全般的に管理するために使用できます。Oracle Database Vaultレルムのレルム所有者は、このパッケージを実行する権限を付与できます。

詳細は、第11章「DVSYS.DBMS_MACADMパッケージの使用方法」を参照してください。

DVSYS.DBMS_MACSEC_ROLES

このパッケージAPIは、メソッドを起動するユーザーに、指定されたOracle Database Vaultセキュア・アプリケーション・ロールを使用する権限が付与されているかどうかをチェックするCAN_SET_ROLEメソッドを提供します。認可は、ロールに関連付けられたルール・セットのチェックにより決定されます。

また、このAPIは、Oracle Database Vaultセキュア・アプリケーション・ロールに対してSET ROLE文を発行するメソッドを提供します。SET ROLEの発行前に、CAN_SET_ROLEメソッドがコールされ、ロールに関連付けられたルール・セットがチェックされます。監査などのランタイムのルール・セットの動作、障害処理およびイベント処理が、このプロセス中に発生します。このパッケージは、一般のデータベース・アカウント群で使用できます。

詳細は、第12章「DVSYS.DBMS_MACSEC_ROLESパッケージの使用方法」を参照してください。

DVSYS.DBMS_MACUTL

このパッケージAPIは、コード/メッセージの参照、エラー処理、データ変換、権限チェックなど、他のOracle Database Vaultのパッケージで共通に使用されるいくつかの定数およびユーティリティ・メソッドを定義します。このパッケージは、一般のデータベース・アカウント群で実行できます。このパッケージを使用すると、セキュリティ開発者は、スクリプト化された構成ファイルで定数を利用できます。また、USER_HAS_ROLEなどのユーティリティ・メソッドは、Oracle Database Vaultルールで使用することも可能です。

詳細は、第13章「DVSYS.DBMS_MACUTLパッケージの使用方法」を参照してください。



注意:

DVSYS.DBMS_MACADMパッケージにはいくつかのプロシージャがありますが、Oracle Database Vaultの管理Webアプリケーションでは公開されません。公開されないプロシージャには、次のものがあります。
  • CREATE_DOMAIN_IDENTITY

  • CREATE_FACTOR_TYPE

  • DELETE_FACTOR_TYPE

  • RENAME_FACTOR_TYPE

  • UPDATE_FACTOR_TYPE