この記事では正規表現リダクションポリシーの作成方法について解説します。
正規表現リダクションポリシーの作成
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
設計通りにリダクションできていることが確認できました。