ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

111 DBMS_REDACT

DBMS_REDACTパッケージは、権限の低いユーザーやアプリケーションによって発行された問合せから戻されるデータをマスク(リダクション)できる、Oracle Data Redactionへのインタフェースを提供します。


関連項目:

  • 機密データを保護するためのData Redactionの使用の詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。


この章では、次の項目について説明します。


DBMS_REDACTの使用


概要

Data Redactionを使用すると、アプリケーションのマスキング・ポリシーを定義できます。Oracle Data Redactionでは、ユーザーのSELECT問合せから戻されるデータをマスク(リダクション)するための機能が提供されます。マスキングはリアルタイムで発生します。データ・リダクション・ポリシーは、問合せ元のユーザーのSYS_CONTEXTの値に応じて、そのユーザーに適用されます。このリダクション・プロセスでは、問合せ対象のデータが静的または不変である必要はなく、データ・セット全体をオフラインで同時にリダクションする必要もありません。Oracle Databaseでは、エントリ列のデータではなく、ユーザーの問合せで指定された行のデータのみがリダクションされます。リダクションは、データが問合せ元のユーザーまたはアプリケーションに戻される直前に発生します。


セキュリティ・モデル

問合せ元のユーザーにEXEMPT REDACTION POLICYシステム権限が付与されている場合、リダクションは実行されません。問合せ元のユーザーにEXEMPT REDACTION POLICYシステム権限が付与されていない場合、現行ユーザーの環境内で、ポリシーの式が評価されます。ポリシーの式がTRUEと評価された場合はリダクションが実行され、そうでない場合は実行されません。

DBMS_REDACTパッケージのサブプログラムを実行するには、そのパッケージのEXECUTE権限が必要です。インタフェースに含まれるプロシージャは、現在のユーザーの権限で実行されます。


定数

DBMS_REDACTパッケージでは、次の表に示す定数が使用されます。

表111-1 DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値

定数 タイプ 説明

NONE

0

BINARY_INTEGER

リダクションなし。

FULL

1

BINARY_INTEGER

固定値へのリダクション。

PARTIAL

2

BINARY_INTEGER

部分的なリダクション。列データの一部をリダクションします。

RANDOM

4

BINARY_INTEGER

ランダム・リダクション。各問合せの結果は、異なるランダムな値になります。

REGEXP

5

BINARY_INTEGER

正規表現ベースのリダクション。


表111-2 DBMS_REDACT.ALTER_POLICYのactionパラメータの値

定数 タイプ 説明

ADD_COLUMN

1

BINARY_INTEGER

リダクション・ポリシーに列を追加します。

DROP_COLUMN

2

BINARY_INTEGER

リダクション・ポリシーから列を削除します。

MODIFY_EXPRESSION

3

BINARY_INTEGER

リダクション・ポリシーの式を変更します(この式はBOOLEAN値に評価されます。TRUEの場合はリダクションが適用され、そうでない場合は適用されません)。

MODIFY_COLUMN

4

BINARY_INTEGER

リダクション・ポリシーに含まれる列を変更することによって、リダクションのfunction_typeまたはfunction_parametersを変更します。

SET_POLICY_DESCRIPTION

5

BINARY_INTEGER

リダクション・ポリシーの説明を設定します。

SET_COLUMN_DESCRIPTION

6

BINARY_INTEGER

列に対して実行されるリダクションの説明を設定します。



プロシージャの使用

次の表に、リダクションする列のデータ・タイプに基づく、リダクション・ファンクションのタイプとそのパラメータの関係を示します。様々な書式文字列の例を提供することによって、文字列データ・タイプ(この場合は社会保障番号(SSN))やDATEデータ・タイプに対していくつかの一般的なリダクションを実行する方法を示します。また、数値データ・タイプに対するリダクションの様々な例も提供します。

表111-3 データ・リダクション・ファンクションのタイプ

function_type function_parameters

DBMS_REDACT.NONE



DBMS_REDACT.FULL



DBMS_REDACT.PARTIAL(文字型用)

次の5つのフィールドを含むカンマ区切りリスト(フィールドを区切るカンマの後にはスペースを入れません)。

  • REDACT_PARTIAL_INPUT_FORMAT

  • REDACT_PARTIAL_OUTPUT_FORMAT

  • REDACT_PARTIAL_MASKCHAR

  • REDACT_PARTIAL_MASKFROM

  • REDACT_PARTIAL_MASKTO

表111-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。

'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'123-45-6789のようなSSN文字列の最初の5桁をマスクし、ダッシュを戻して書式設定し、XXX-XX-6789のような文字列にします。

'VVVFVVFVVVV,VVV VV VVVV,X,1,5'123-45-6789のようなSSN文字列の最初の5桁をマスクし、スペースを追加して書式設定し、XXX XX 6789のような文字列にします。


REDACT_PARTIAL_INPUT_FORMAT - 入力形式: 値をリダクションする可能性がある場合はV、書式文字を無視する場合はFを指定します。

REDACT_PARTIAL_INPUT_FORMATのフィールド値VVVFVVFVVVVは、123-45-6789のようなSSN文字列に一致します。


REDACT_PARTIAL_OUTPUT_FORMAT - 出力形式: リダクションの出力にはVを指定します。その他の文字はすべて書式文字として処理され、文字どおりに出力されます。

REDACT_PARTIAL_OUTPUT_FORMATのフィールド値VVV-VV-VVVVを使用すると、SSN文字列をXXX-XX-6789にリダクションできます(XREDACT_PARTIAL_MASKCHARフィールドから取得します)。


REDACT_PARTIAL_MASKCHAR - 入力のリダクションに使用する文字。

X。SSN文字列をXXX-XX-6789にリダクションします。


REDACT_PARTIAL_MASKFROM - REDACT_PARTIAL_INPUT_FORMAT内のどのVからリダクションを開始するかを指定します(次の項目REDACT_PARTIAL_MASKTOの説明を参照)。

1REDACT_PARTIAL_INPUT_FORMATの値VVVFVVFVVVVの最初のVから始まるSSN文字列をXXX-XX-6789のような文字列にリダクションします。


REDACT_PARTIAL_MASKTO - REDACT_PARTIAL_INPUT_FORMAT内のどのVでリダクションを終了するかを指定します。

5REDACT_PARTIAL_INPUT_FORMATの値VVVFVVFVVVVの5番目のVまでのSSN文字列をXXX-XX-6789のような文字列にリダクションします。リダクションという点から、書式文字'-' (REDACT_PARTIAL_INPUT_FORMAT内の最初のFに対応します)がどのように無視されるかに注目してください。これが6ではなく5を値に使用する理由です。


REDACT_PARTIAL_MASKFROMおよびREDACT_PARTIAL_MASKTOフィールドの値は、REDACT_PARTIAL_INPUT_FORMATフィールドに含まれる文字Vの数(左端のVから目的の位置まで)として指定されます。これにより、REDACT_PARTIAL_MASKFROMREDACT_PARTIAL_MASKTOは、データの特定の書式に依存しなくなります。たとえば、SSNをマスクして最後の4桁のみを表示する一般的な使用例において、123456789のようなデータ(REDACT_PARTIAL_INPUT_FORMATVVVVVVVVV)と123-45-6789のようなデータ(REDACT_PARTIAL_INPUT_FORMATVVVFVVFVVVV)は、どちらもREDACT_PARTIAL_MASKFROM1REDACT_PARTIAL_MASKTO5を使用することが考えられます。


DBMS_REDACT.PARTIAL(数値型用)

次の3つのフィールドを含むカンマ区切りリスト(フィールドを区切るカンマの後にはスペースを入れません)。

  • REDACT_PARTIAL_MASKCHAR

  • REDACT_PARTIAL_MASKFROM

  • REDACT_PARTIAL_MASKTO

表111-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。

'9,1,5'はSSN番号123456789の最初の5桁を999996789にリダクションし、'0,1,2'は数値1.230.03にリダクションします。


REDACT_PARTIAL_MASKCHAR - 入力のリダクションに使用する文字(0から9)。

REDACT_PARTIAL_MASKFROM - リダクションの開始位置(1以上)。小数点は、存在しても位置には含まれません。

REDACT_PARTIAL_MASKTO - リダクションの終了位置。


DBMS_REDACT.PARTIAL (日時データ・タイプの場合)

次の5つのフィールドを含むリスト(フィールド間にスペースが入らないように連結されます)。

  • REDACT_PARTIAL_DATE_MONTH

  • REDACT_PARTIAL_DATE_DAY

  • REDACT_PARTIAL_DATE_YEAR

  • REDACT_PARTIAL_DATE_HOUR

  • REDACT_PARTIAL_DATE_MINUTE

  • REDACT_PARTIAL_DATE_SECOND

表111-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。

'm12DYHMS'01-May-01 01:01:0101-Dec-01 01:01:01に変更します。


REDACT_PARTIAL_DATE_MONTH: 'M' (月をマスクしない)または'm#' (可能な場合は月を特定の月にマスクする)。# (数字によって指定する月)は1から12

REDACT_PARTIAL_DATE_DAY: 'D'(日をマスクしない)または'd#'(可能な場合は日を#にマスクする)。#1から31

REDACT_PARTIAL_DATE_YEAR: 'Y'(年をマスクしない)または'y#'(可能な場合は年を#にマスクする)。#1から9999

REDACT_PARTIAL_DATE_HOUR: 'H'(時間をマスクしない)または'h#'(可能な場合は時間を#にマスクする)。#0から23

REDACT_PARTIAL_DATE_MINUTE: 'M'(分をマスクしない)または'm#'(可能な場合は分を#にマスクする)。#0から59

REDACT_PARTIAL_DATE_SECOND: 'S'(秒をマスクしない)または's#'(可能な場合は秒を#にマスクする)。#0から59


DBMS_REDACT.RANDOM




表111-4 書式記述子と構成要素のフィールド名およびデリミタ

データ・タイプ 部分リダクション用の書式記述子

文字

REDACT_PARTIAL_INPUT_FORMAT || ',' || REDACT_PARTIAL_OUTPUT_FORMAT || ',' || REDACT_PARTIAL_MASKCHAR || ',' || REDACT_PARTIAL_MASKFROM || ',' || REDACT_PARTIAL_MASKTO

NUMBER

REDACT_PARTIAL_MASKCHAR || ',' || REDACT_PARTIAL_MASKFROM || ',' || REDACT_PARTIAL_MASKTO

日時

REDACT_PARTIAL_DATE_MONTH || REDACT_PARTIAL_DATE_DAY || REDACT_PARTIAL_DATE_YEAR || REDACT_PARTIAL_DATE_HOUR || REDACT_PARTIAL_DATE_MINUTE || REDACT_PARTIAL_DATE_SECOND



DBMS_REDACTサブプログラムの要約

表111-5 DBMS_REDACTパッケージのサブプログラム

サブプログラム 説明

ADD_POLICYプロシージャ


表またはビューのデータ・リダクション・ポリシーを定義します。

ALTER_POLICYプロシージャ


表またはビューのデータ・リダクション・ポリシーを変更します。

DISABLE_POLICYプロシージャ


データ・リダクション・ポリシーを無効にします。

DROP_POLICYプロシージャ


データ・リダクション・ポリシーを削除します。

ENABLE_POLICYプロシージャ


データ・リダクション・ポリシーを有効にします。

UPDATE_FULL_REDACTION_VALUESプロシージャ


完全リダクションのデータ・リダクション・ポリシーでデフォルトで表示される値を変更します。



ADD_POLICYプロシージャ

このプロシージャは、表またはビューのデータ・リダクション・ポリシーを定義します。

構文

DBMS_REDACT.ADD_POLICY (
   object_schema                IN    VARCHAR2 := NULL,
   object_name                  IN    VARCHAR2,
   policy_name                  IN    VARCHAR2,
   column_name                  IN    VARCHAR2 := NULL,
   function_type                IN    BINARY_INTEGER := DBMS_REDACT.FULL,
   function_parameters          IN    VARCHAR2 := NULL,
   expression                   IN    VARCHAR2,
   enable                       IN    BOOLEAN := TRUE,
   regexp_pattern               IN    VARCHAR2 := NULL,
   regexp_replace_string        IN    VARCHAR2 := NULL,
   regexp_position              IN    BINARY_INTEGER := 1,
   regexp_occurrence            IN    BINARY_INTEGER := 0,
   regexp_match_parameter       IN    VARCHAR2 := NULL,
   policy_description           IN    VARCHAR2 := NULL,
   column_description           IN    VARCHAR2 := NULL);

パラメータ

表111-6 ADD_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表を所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが追加される表またはビューの名前です。

policy_name

ポリシー名。

column_name

(オプション)リダクション・ポリシーを適用する列の名前。複数の列をリダクションする必要がある場合は、ALTER_POLICYプロシージャを使用して列を追加します。

function_type

使用するリダクション・ファンクションのタイプ。有効な値は、次のとおりです。

- DBMS_REDACT.NONE

- DBMS_REDACT.FULL(デフォルト)

- DBMS_REDACT.PARTIAL

- DBMS_REDACT.RANDOM

- DBMS_REDACT.REGEXP

function_typeDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_*パラメータを使用してデータ・リダクション・ポリシーを定義する必要があります。

これらの値の意味の概要と使用例については、表 111-1「DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値」を参照してください。

function_parameters

リダクション・ファンクションのパラメータ。指定できる値は、提供されたfunction_typeの値によって異なります。

function_typeDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_*パラメータを使用してデータ・リダクション・ポリシーを定義する必要があります。

- DBMS_REDACT.NONE: 全体として省略可能で、デフォルトはNULLです。

- DBMS_REDACT.FULL: 全体として省略可能で、デフォルトはNULLです。

- 部分文字マスキングのマスキング・パラメータ。文字データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。

  • 入力形式: 値をマスクする可能性がある場合は'V'、書式文字を無視する場合は'F'を指定します。

  • 出力形式: マスキングの出力には'V'を指定します。その他の文字は書式文字として処理されます。

  • マスク文字: 実際の値を置き換えるために使用する文字です。たとえば、'*''x'があります。

  • 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(文字)位置を指定します。文字列は位置1から始まります。書式文字は位置に含まれません。

  • 終了桁の位置: マスキングの終了(文字)位置を指定します。たとえば'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'は、SSN文字列123-45-6789の最初の5桁をマスクし、ダッシュを戻してSSNのように書式設定し、XXX-XX-6789にします。

数値データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。

  • マスク文字: 実際の値を置き換えるために使用する、'0'から'9'の文字です。

  • 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(桁)位置を指定します。文字列は位置1から始まります。小数点は位置に含まれません。

  • 終了桁の位置: マスキングの終了(桁)位置を指定します。たとえば'9,1,5'は、社会保障番号123456789の最初の5桁をマスクし、999996789にします。


日時データ・タイプの場合、この書式は、次の一連のフィールドを含む、間にスペースやカンマがない文字列になります。各フィールドは1つ以上の文字から構成され、フィールドの長さは、マスキングが必要であるかどうかによって異なります。1文字のフィールドは、日時値のその構成要素のリダクションは発生しないことを指定するために使用されます。それよりも長いフィールドは、日時値のその構成要素をリダクションした後の値として使用する、特定の時間または日付を示します。

  • 月: 'M' (月をマスクしない)または'm#' (可能な場合は月を特定の月にマスクする)。# (数字によって指定する月)は1から12

  • 日: 'D'(日をマスクしない)または'd#'(可能な場合は日を#にマスクする)。#1から31

  • 年: 'Y'(年をマスクしない)または'y#'(可能な場合は年を#にマスクする)。#1から9999

  • 時間: 'H'(時間をマスクしない)または'h#'(可能な場合は時間を#にマスクする)。#0から23

  • 分: 'M'(分をマスクしない)または'm#'(可能な場合は分を#にマスクする)。#0から59

  • 秒: 'S'(秒をマスクしない)または's#'(可能な場合は秒を#にマスクする)。#0から59

たとえば、'm12DYHMS'では、01-May-01 01:01:01から01-Dec-01 01:01:01に変更されます。

部分文字と番号マスキング・ショートカットの詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。

expression

表またはビューのブール式で、SYS_CONTEXTファンクションまたは1=1のいずれかを使用します。リダクションは、ポリシー式がTRUEと評価された場合にのみ実行されます。

enable

データ・リダクション・ポリシーを作成時に有効にするかどうかを決定するブール値。

デフォルト値のTRUEは、ポリシーが作成時に自動的に有効になることを意味します。enableパラメータをFALSEに設定した場合、ポリシーが有効になるのは、その後DBMS_REDACT.ENABLE_POLICYプロシージャをコールしてそのポリシーを有効にした場合のみです。

regexp_pattern

最大512バイトの正規表現パターン。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。function_typeDBMS_REDACT.REGEXPの場合、function_parametersパラメータは指定しないでください。

正規表現パターンの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

regexp_replace_string

この置換文字列(最大4000文字)には、最大500個の部分正規表現への後方参照を\nという書式で指定できます。nは、1から9の数値です。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_position

1から始まる整数。検索の開始位置を指定します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_occurrence

  • 一致するすべての文字を置き換えるには、0を使用します。

  • n番目に一致する文字を置き換えるには、正の整数nを使用します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_match_parameter

デフォルトの一致動作を変更します。'i'、'c'、'n'、'm'、'x'を組み合せた値を指定できます。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

正規表現一致パラメータの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

policy_description

リダクション・ポリシーの説明です。

column_description

リダクションされた列の説明です。


例外

  • ORA-28060: この列には、すでにデータ・リダクション・ポリシーが存在します。

  • ORA-28061: このオブジェクトには、データ・リダクション・ポリシーを定義できません。

  • ORA-28062: ポリシー式が長すぎます。

  • ORA-28063: ポリシー式が空です。

  • ORA-28064: リダクション・ファンクションのタイプが無効です。

  • ORA-28066: 列columnは無効です。

  • ORA-28069 - このオブジェクトには、すでにデータ・リダクション・ポリシーが存在します。

  • ORA-28073 - 列column_nameにサポートされていないデータ型があります。

  • ORA-28074 - マスキング・パラメータのfield field_nameが無効です。

    このフィールドには、次のいずれかを指定できます。

    • REDACT_PARTIAL_INPUT_FORMAT

    • REDACT_PARTIAL_OUTPUT_FORMAT

    • REDACT_PARTIAL_MASKCHAR

    • REDACT_PARTIAL_MASKFROM

    • REDACT_PARTIAL_MASKTO

    • REDACT_PARTIAL_DATE_MONTH

    • REDACT_PARTIAL_DATE_DAY

    • REDACT_PARTIAL_DATE_YEAR

    • REDACT_PARTIAL_DATE_HOUR

    • REDACT_PARTIAL_DATE_MINUTE

    • REDACT_PARTIAL_DATE_SECOND

    フィールドの内容の例とフィールドの順序付けについては、表111-3表111-4を参照してください。

  • ORA-28075 - ポリシー式にサポートされていない機能が含まれています。

  • ORA-28076 - SYS_SESSION_ROLESに属性が指定されていません。

  • ORA-28077 - 指定された属性(attribute)が最大長を超えています。

  • ORA-28078 - 正規表現パラメータがないか無効です。

  • ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、function_parameterscolumn_descriptionpolicy_nameおよびpolicy_descriptionです)。

  • ORA-28085 - リダクションの入力と出力の長さが一致しません。

使用上の注意

ファンクション・タイプとファンクション・パラメータ、およびそれに関連する例については、「プロシージャの使用」を参照してください。

部分リダクション・ポリシー:

BEGIN
   DBMS_REDACT.ADD_POLICY(
     object_schema        => 'hr',
     object_name          => 'employees',
     column_name          => 'employee_id',
     policy_name          => 'mask_emp_id_nums',
     function_type        => DBMS_REDACT.PARTIAL,
     function_parameters  => '7,1,5',
     expression           => '1=1');
END;

完全リダクション・ポリシー:

BEGIN
   DBMS_REDACT.ADD_POLICY(
     object_schema        => 'hr',
     object_name          => 'employees',
     column_name          => 'employee_id',
     policy_name          => 'mask_emp_ids',
     function_type        => DBMS_REDACT.FULL,
     expression           => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''CLERK'') 
                                                                    = ''FALSE''');
END;

ALTER_POLICYプロシージャ

このプロシージャは、次の1つ以上の方法で、表またはビューの既存のデータ・リダクション・ポリシーを変更します。

  • ポリシーの式の変更。

  • 指定した列のリダクション・タイプの変更。

  • 指定した列のリダクション・ファンクションのパラメータの変更。

  • リダクション・ポリシーへの列の追加(リダクション・タイプと任意のパラメータを指定する必要がある)。

  • リダクション・ポリシーからの列の削除。

構文

DBMS_REDACT.ALTER_POLICY (
   object_schema                IN    VARCHAR2 := NULL,
   object_name                  IN    VARCHAR2,
   policy_name                  IN    VARCHAR2,
   action                       IN    BINARY_INTEGER := DBMS_REDACT.ADD_COLUMN,
   column_name                  IN    VARCHAR2 := NULL,
   function_type                IN    BINARY_INTEGER := DBMS_REDACT.FULL,
   function_parameters          IN    VARCHAR2 := NULL,
   expression                   IN    VARCHAR2,
   regexp_pattern               IN    VARCHAR2 := NULL,
   regexp_replace_string        IN    VARCHAR2 := NULL,
   regexp_position              IN    BINARY_INTEGER := 1,
   regexp_occurrence            IN    BINARY_INTEGER := 0,
   regexp_match_parameter       IN    VARCHAR2 := NULL,
   policy_description           IN    VARCHAR2 := NULL,
   column_description           IN    VARCHAR2 := NULL);

パラメータ

表111-7 ALTER_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表を所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが変更される表またはビューの名前です。

policy_name

30バイトに制限されているポリシーの名前です。

action

実行するアクション。詳細は、表111-2「DBMS_REDACT.ALTER_POLICYのactionパラメータの値」を参照してください。

column_name

(オプション)リダクション・ポリシーを適用する列の名前。

function_type

使用するリダクション・ファンクションのタイプ。有効な値は、次のとおりです。

- DBMS_REDACT.NONE

- DBMS_REDACT.FULL(デフォルト)

- DBMS_REDACT.PARTIAL

- DBMS_REDACT.RANDOM

- DBMS_REDACT.REGEXP

function_typeDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_patternregexp_replace_stringregexp_positionregexp_occurrenceおよびregexp_match_parameterを使用してデータ・リダクション・ポリシーを定義する必要があります。

これらの値の意味の概要と使用例については、表 111-1「DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値」を参照してください。

function_parameters

リダクション・ファンクションのパラメータ。指定できる値は、提供されたfunction_typeの値によって異なります。

function_typeDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_patternregexp_replace_stringregexp_positionregexp_occurrenceおよびregexp_match_parameterを使用してデータ・リダクション・ポリシーを定義する必要があります。

- function_typeDBMS_REDACT.NONEの場合は、function_parametersパラメータを完全に省略でき、その場合デフォルトのNULLになります。

- function_typeDBMS_REDACT.FULLの場合は、function_parametersパラメータを完全に省略でき、その場合デフォルトのNULLになります。

- function_typeDBMS_REDACT.PARTIALの場合は、function_parametersパラメータは部分マスクのマスキング・パラメータを表します。

  • 入力形式: 値をマスクする可能性がある場合は'V'、書式文字を無視する場合は'F'を指定します。

  • 出力形式: マスキングの出力には'V'を指定します。その他の文字は書式文字として処理されます。

  • マスク文字: 実際の値を置き換えるために使用する文字です。たとえば、'*''x'があります。

  • 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(文字)位置を指定します。文字列は位置1から始まります。書式文字は位置に含まれません。

  • 終了桁の位置: マスキングの終了(文字)位置を指定します。たとえば'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'は、SSN文字列123-45-6789の最初の5桁をマスクし、ダッシュを戻してSSNのように書式設定し、XXX-XX-6789にします。

数値データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。

  • マスク文字: 実際の値を置き換えるために使用する、'0'から'9'の文字です。

  • 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(桁)位置を指定します。文字列は位置1から始まります。小数点は位置に含まれません。

  • 終了桁の位置: マスキングの終了(桁)位置を指定します。たとえば'9,1,5'は、社会保障番号123456789の最初の5桁をマスクし、999996789にします。


日時データ・タイプの場合、この書式は、次の一連のフィールドを含む、間にスペースやカンマがない文字列になります。各フィールドは1つ以上の文字から構成され、フィールドの長さは、マスキングが必要であるかどうかによって異なります。1文字のフィールドは、日時値のその構成要素のリダクションは発生しないことを指定するために使用されます。それよりも長いフィールドは、日時値のその構成要素をリダクションした後の値として使用する、特定の時間または日付を示します。

  • 月: 'M' (月をマスクしない)または'm#' (可能な場合は月を特定の月にマスクする)。# (数字によって指定する月)は1から12

  • 日: 'D'(日をマスクしない)または'd#'(可能な場合は日を#にマスクする)。#1から31

  • 年: 'Y'(年をマスクしない)または'y#'(可能な場合は年を#にマスクする)。#1から9999

  • 時間: 'H'(時間をマスクしない)または'h#'(可能な場合は時間を#にマスクする)。#0から23

  • 分: 'M'(分をマスクしない)または'm#'(可能な場合は分を#にマスクする)。#0から59

  • 秒: 'S'(秒をマスクしない)または's#'(可能な場合は秒を#にマスクする)。#0から59

たとえば、'm12DYHMS'では、01-May-01 01:01:01から01-Dec-01 01:01:01に変更されます。

部分文字と番号マスキング・ショートカットの詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。

expression

表またはビューのブール式で、SYS_CONTEXTファンクションまたは1=1のいずれかを使用します。リダクションは、ポリシー式がTRUEと評価された場合にのみ実行されます。

regexp_pattern

最大512バイトの正規表現パターン。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。function_typeDBMS_REDACT.REGEXPの場合、function_parametersパラメータは指定しないでください。

正規表現パターンの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

regexp_replace_string

この置換文字列(最大4000文字)には、最大500個の部分正規表現への後方参照を\nという書式で指定できます。nは、1から9の数値です。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_position

1から始まる整数。検索の開始位置を指定します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_occurrence

  • 一致するすべての文字を置き換えるには、0を使用します。

  • n番目に一致する文字を置き換えるには、正の整数nを使用します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_match_parameter

デフォルトの一致動作を変更します。'i'、'c'、'n'、'm'、'x'を組み合せた値を指定できます。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

正規表現一致パラメータの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

policy_description

リダクション・ポリシーの説明です。

column_description

リダクションされた列の説明です。


例外

  • ORA-28062: ポリシー式が長すぎます。

  • ORA-28063: ポリシー式が空です。

  • ORA-28064: リダクション・ファンクションのタイプが無効です。

  • ORA-28066: 列columnは無効です。

  • ORA-28067: 列名がないか無効です

  • ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

  • ORA-28070: 列"column"には、データ・リダクション・ポリシーがありません。

  • ORA-28071: アクションが無効です。

  • ORA-28072: 指定されたポリシー名が正しくありません。

  • ORA-28073 - 列column_nameにサポートされていないデータ型があります。

  • ORA-28074 - マスキング・パラメータのfield_nameが無効です。

    このフィールドには、次のいずれかを指定できます。

    • REDACT_PARTIAL_INPUT_FORMAT

    • REDACT_PARTIAL_OUTPUT_FORMAT

    • REDACT_PARTIAL_MASKCHAR

    • REDACT_PARTIAL_MASKFROM

    • REDACT_PARTIAL_MASKTO

    • REDACT_PARTIAL_DATE_MONTH

    • REDACT_PARTIAL_DATE_DAY

    • REDACT_PARTIAL_DATE_YEAR

    • REDACT_PARTIAL_DATE_HOUR

    • REDACT_PARTIAL_DATE_MINUTE

    • REDACT_PARTIAL_DATE_SECOND

    フィールドの内容の例とフィールドの順序付けについては、表111-3表111-4を参照してください。

  • ORA-28075: ポリシー式にサポートされていない機能が含まれています。

  • ORA-28076: SYS_SESSION_ROLESに属性が指定されていません。

  • ORA-28077: 指定された属性(attribute)が最大長を超えています。

  • ORA-28078: 正規表現パラメータがないか無効です。

  • ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、function_parameterscolumn_descriptionpolicy_nameおよびpolicy_descriptionです)。

  • ORA-28085 - リダクションの入力と出力の長さが一致しません。

使用上の注意

ファンクション・タイプとファンクション・パラメータ、およびそれに関連する例については、「プロシージャの使用」を参照してください。

BEGIN
   DBMS_REDACT.ALTER_POLICY(
     object_schema          => 'hr',
     object_name            => 'employees',
     policy_name            => 'mask_emp_id_nums',
     action                 => DBMS_REDACT.ADD_COLUMN,
END;

DISABLE_POLICYプロシージャ

このプロシージャは、データ・リダクション・ポリシーを無効にします。

構文

DBMS_REDACT.DISABLE_POLICY (
   object_schema                IN    VARCHAR2 := NULL,
   object_name                  IN    VARCHAR2,
   policy_name                  IN    VARCHAR2);

パラメータ

表111-8 DISABLE_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表またはビューを所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが無効化される表またはビューの名前です。

policy_name

無効にするポリシーの名前。


例外

  • ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

  • ORA-28072: 指定されたポリシー名が正しくありません。

  • ORA-28080: ポリシーはすでに無効化されています。

BEGIN
   DBMS_REDACT.DISABLE_POLICY (
     object_schema    => 'hr',
     object_name      => 'employees',
     policy_name      => 'mask_emp_ids');
END;

DROP_POLICYプロシージャ

このプロシージャは、表またはビューからマスキング・ポリシーを削除することによって、データ・リダクション・ポリシーを削除します。

構文

DBMS_REDACT.DROP_POLICY (
   object_schema                IN    VARCHAR2 := NULL,
   object_name                  IN    VARCHAR2,
   policy_name                  IN    VARCHAR2);

パラメータ

表111-9 DROP_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表またはビューを所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが削除される表またはビューの名前です。

policy_name

削除するポリシーの名前。


例外

  • ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

  • ORA-28072: 指定されたポリシー名が正しくありません。

BEGIN
   DBMS_REDACT.DROP_POLICY (
      object_schema    =>  'hr',
      object_name      =>  'employees',
      policy_name      =>  'mask_emp_ids');
END;

ENABLE_POLICYプロシージャ

このプロシージャは、データ・リダクション・ポリシーを再度有効にします。

構文

DBMS_REDACT.ENABLE_POLICY (
   object_schema                IN    VARCHAR2 := NULL,
   object_name                  IN    VARCHAR2,
   policy_name                  IN    VARCHAR2);

パラメータ

表111-10 ENABLE_POLICYプロシージャのパラメータ

パラメータ 説明

object_schema

表またはビューを所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが有効化される表またはビューの名前です。

policy_name

有効にするポリシーの名前。


例外

  • ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

  • ORA-28071: アクションが無効です。

  • ORA-28072: 指定されたポリシー名が正しくありません。

  • ORA-28079: ポリシーはすでに有効化されています。

BEGIN
   DBMS_REDACT.ENABLE_POLICY (
      object_schema    =>  'hr',
      object_name      =>  'employees',
      policy_name      =>  'mask_emp_ids');
END;

UPDATE_FULL_REDACTION_VALUESプロシージャ

このプロシージャは、完全リダクションのデータ・リダクション・ポリシーでデフォルトで表示される値を変更します。

構文

DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES (
   number_val       IN NUMBER                    :=  NULL,
   binfloat_val     IN BINARY_FLOAT              :=  NULL,
   bindouble_val    IN BINARY_DOUBLE             :=  NULL,
   char_val         IN CHAR                      :=  NULL,
   varchar_val      IN VARCHAR2                  :=  NULL,
   nchar_val        IN NCHAR                     :=  NULL,
   nvarchar_val     IN NVARCHAR2                 :=  NULL,
   date_val         IN DATE                      :=  NULL,
   ts_val           IN TIMESTAMP                 :=  NULL,
   tswtz_val        IN TIMESTAMP WITH TIME ZONE  :=  NULL);

パラメータ

表111-11 UPDATE_FULL_REDACTION_VALUESプロシージャのパラメータ

パラメータ 説明

number_val

NUMBERデータ・タイプの列のデフォルト値を変更します。

binfloat_val

BINARY_FLOATデータ・タイプの列のデフォルト値を変更します。

bindouble_val

BINARY_DOUBLEデータ・タイプの列のデフォルト値を変更します。

char_val

CHARデータ・タイプの列のデフォルト値を変更します。

varchar_val

VARCHAR2データ・タイプの列のデフォルト値を変更します。

nchar_val

NCHARデータ・タイプの列のデフォルト値を変更します。

nvarchar_val

NVARCHAR2データ・タイプの列のデフォルト値を変更します。

date

DATEデータ・タイプの列のデフォルト値を変更します。

ts_val

TIMESTAMPデータ・タイプの列のデフォルト値を変更します。

tswtz_val

TIMESTAMP WITH TIME ZONEデータ・タイプの列のデフォルト値を変更します。


例外

ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、char_valnchar_valvarchar_valおよびnvarchar_valです)。

使用上の注意

LOBデータ型はOracle Database 11 リリース2 (11.2.0.4)では更新スクリプトによってサポートされます。詳細は、『Oracle Database Advanced Security管理者ガイド』の、LOBデータ型カラムのデフォルトのフル・データ・リダクション値変更に関する章を参照してください。