正規表現リダクションポリシーの作成方法

この記事では正規表現リダクションポリシーの作成方法について解説します。

 正規表現リダクションポリシーの作成

Data Redactionでは正規表現を使用して特定のデータをリダクションすることができます。

正規表現のリダクションポリシーを作成するには、DBMS_REDACT.ADD_POLICYプロシージャのfunction_typeパラメータをDBMS_REDACT.REGEXPに設定します。

さらに下記のパラメータを使用して正規表現を作成します。

・regexp_pattern

文字列の検索パターンを指定します。

・regexp_replace_string

一致した値を置換する文字列を指定します。

・regexp_position

文字列検索の開始位置を指定します。

・regexp_occurrence  

置換を行う回数を設定します。

・regexp_match_parameter

大文字小文字を区別するかを指定します。


 作成例

正規表現を用いて下記のデータをリダクションします。

CARD_NO
-----------------------
1234-5678-1234-78
1234-5678-1234-5678
1234-5678-1234-78910000
12345678123478910000
1234567

リダクション方法は末尾4桁の文字列を除いて「########」に置き換えることとします。

ポリシーを作成するプロシージャは以下のようになります。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'TEST',
object_name => 'CARD', 
column_name => 'CARD_NO',
policy_name => 'test',
function_type => DBMS_REDACT.REGEXP,
expression => '1=1',
regexp_pattern         => '(.+)(.{4}$)',
regexp_replace_string  => '########\2'
);
END;
/

「regexp_replace_string」パラメータの「\2」は「regexp_pattern」に設定した2番目のグループ「(.{4}$)」を示しています。

「########」に「(.{4}$)」で表される末尾4桁の文字列を連結しています。

リダクション後のデータは以下のようになります。

CARD_NO
-----------------------
########4-78
########5678
########0000
########0000
########4567

設計通りにリダクションできていることが確認できました。