部分リダクションのパラメータ値

この記事ではOracle Data Redactionの部分リダクションのパラメータ値について解説します。

 部分リダクションのパラメータ

Oracle Data Redactionはリダクションの種類がいくつか用意されており、自由にリダクションポリシーを設定することができます。

その中で列データの一部をリダクションする「部分リダクション」ではパラメータを設定してポリシーを作成します。

文字列に対する部分リダクションではパラメータが5つのフィールドで構成されます。


 ファンクションパラメータ

部分リダクションのポリシーを作成する場合は、「function_parameters」に下記の5つのフィールドをカンマで区切り入力します。

スペースも文字として認識しますので無駄にスペースを入れないように気を付ける必要があります。

・REDACT_PARTIAL_INPUT_FORMAT

1番目のフィールドで、入力形式を指定します。

値をリダクションする可能性があるものは「V」、無視する場合は「F」を指定します。

・REDACT_PARTIAL_OUTPUT_FORMAT

2番目のフィールドで、出力形式を指定します。

リダクションの出力は「V」、その他の文字は文字通りに出力されます。

・REDACT_PARTIAL_MASKCHAR

3番目のフィールドで、リダクションで置換する文字を指定します。

・REDACT_PARTIAL_MASKFROM

4番目のフィールドで、リダクションの開始位置を指定します。

REDACT_PARTIAL_INPUT_FORMATで指定した、何番目の「V」からリダクションするかを指定します。

・REDACT_PARTIAL_MASKTO

5番目のフィールドで、リダクションの終了位置を指定します。

REDACT_PARTIAL_INPUT_FORMATで指定した、何番目の「V」までリダクションするかを指定します。


 設定例

クレジットカードの番号をリダクションするケースでポリシーを設定してみます。

データは以下のように入っています。

 PID NAME   CARD_NO
---- ------ -----------------------
   1 tanaka 1234-5678-1234-5678
この「CARD_NO」をリダクションします。

今回は下記の要件でリダクションポリシーを作成します。

・最後の4桁の数字は表示したままにする

・「-」もリダクションせずにそのまま表示する

・置換する文字列は「*」にする

これをファンクションパラメータに設定すると以下のようになります。

VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,*,1,12

1つ目のフィールドでは、「-」の位置はリダクション対象の「V」ではなく「F」としています。

実際には表示する最後の4桁も「V」で表記します。

2つ目のフィールドでは、「-」の位置をそのまま「-」にして出力するように設定します。

これをもとにポリシーを作成します。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'test',
object_name => 'card',
column_name => 'card_no',
policy_name => 'test1',
function_type => DBMS_REDACT.PARTIAL,
function_parameters => 'VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV',
expression => '1=1'
);
END;
/

ポリシー作成後にデータを検索してみると要件通りにリダクションされていることが確認できます。

 PID NAME   CARD_NO
---- ------ -------------------
   1 tanaka ****-****-****-5678