ページの先頭行へ戻る
Symfoware Analytics ServerV12.2.0 利用ガイド
FUJITSU Software

7.1.1 秘匿化ポリシー

秘匿化ポリシーとは、アプリケーションからのアクセス時に特定の条件下でデータを改訂する方法を規定したものです。一つのテーブルに対し一つの秘匿化ポリシーが作成できます。秘匿化ポリシーには、秘匿化対象、秘匿化種別、秘匿化条件、秘匿化形式などが設定できます。

図7.1 秘匿化ポリシー

注意

秘匿化ポリシーを定義することにより、対応するテーブルの検索性能が劣化する場合があります。

7.1.1.1 秘匿化対象

秘匿化対象とは、秘匿化ポリシーを適用する列です。秘匿化対象または秘匿化対象を含む関数を参照した場合、該当する実行結果は改訂されて取得されます。

注意

  • 秘匿化対象をSELECT対象列以外に指定した場合は、改訂前のデータで処理を実施します。

  • 秘匿化対象をデータ型が変換される関数に指定した場合はエラーになります。

7.1.1.2 秘匿化種別

秘匿化種別とは、列データを改訂する方法です。秘匿化種別はfunction_typeパラメーターに指定します。秘匿化種別には、以下の3つが指定でき、秘匿化対象のデータの特性によって選択することが可能です。

全秘匿化

列データの内容を全て改訂します。問合せを行ったアプリケーションに返される改訂された値は列のデータ型によって異なります。
例えば、数値型の列は0で改訂され、文字型の列は空白で改訂されます。

部分秘匿化

列データの一部を改訂します。
例えば、従業員番号の最後の4桁以外を“*”で改訂できます。

正規表現秘匿化

正規表現を用いた検索を利用して列データを改訂します。
例えば、文字の長さが変化する可能性のある電子メールアドレスなどの文字列に対し、正規表現を用いることで“@”以前を“*”で改訂できます。正規表現秘匿化は文字型データのみで使用可能です。

注意

  • 複数の有効な秘匿化対象を1つの関数に指定した場合は、最も左にある秘匿化対象の秘匿化種別が適用されます。
    例えば、数値型の秘匿化対象c1、c2について“SELECT GREATEST(c1, c2) FROM t1”を実行した場合、c1の秘匿化種別が適用されます。

  • マルチバイト文字を含むデータを秘匿化する場合、秘匿化種別に部分秘匿化を指定しないでください。期待した結果が得られない場合があります。

7.1.1.3 秘匿化条件

秘匿化条件とは、秘匿化が実行されるための条件です。秘匿化条件はexpressionパラメーターに指定します。秘匿化条件を定義することで、異なるユーザーに改訂されたデータまたは実際のデータのいずれかを表示させることが可能です。秘匿化条件には、boolean型の結果を返す式を指定する必要があり、TRUEと評価された場合にのみ秘匿化が実行されます。指定できる式の詳細は、“PostgreSQL文書”の“評価式”を参照してください。ただし、列を含む式は指定できません。
例えば、“symfoasuser”ユーザーのみにデータを秘匿化する場合、秘匿化条件に'current_user = ''symfoasuser'''を指定してください。

参考

秘匿化が常に実行されるためには、秘匿化条件が常にTRUEと評価されるよう'1=1'のように指定します。

7.1.1.4 秘匿化形式

秘匿化形式とは、秘匿化条件が成立した時の改訂する方法と表示される文字の組み合わせです。秘匿化形式は秘匿化種別ごとに異なっています。秘匿化形式については以下に示します。

全秘匿化

全秘匿化では、全ての文字をデータベースで決められた値に改訂します。改訂後の文字はpgxa_confidential_valuesシステム表を参照することで確認できます。また、改訂後の文字はpgxa_update_confidential_valuesシステム関数で変更可能です。

参照

秘匿化が可能なデータ型は、“H.2 秘匿化が可能なデータ型”を参照してください。

部分秘匿化

部分秘匿化では、データをfunction_parametersの内容に従って改訂します。function_parametersはデータ型によって指定方法が異なります。

カテゴリ

function_parametersの指定方法

数値型

'改訂文字, 開始位置, 終了位置'

  • 改訂文字:表示する数字を指定します。指定できる範囲は0-9です。

  • 開始位置:秘匿化を開始する数字位置を指定します。指定できる範囲は正の整数です。

  • 終了位置:秘匿化を終了する数字位置を指定します。指定できる範囲は開始位置よりも大きい正の整数です。

1桁目から5桁目までを9に秘匿化する場合は以下を指定します。

function_parameters := '9, 1, 5'

この場合、元データが“123456789”の場合は、“999996789”に改訂されます。

文字型

'入力形式, 出力形式, 改訂文字, 開始位置, 終了位置'

  • 入力形式:データが現在どのようにフォーマットされているかを指定します。秘匿化される可能性がある文字にV、空白やハイフンなど秘匿化されない文字はFを指定します。

  • 出力形式:表示されるデータを書式化する方法を定義します。秘匿化される可能性がある文字にVを指定します。入力形式の各文字Fについては出力させる任意の文字を指定してください。単一引用符を出力したい場合は2つ続けて記述してください。

  • 改訂文字:任意の単一文字を指定します。単一引用符を出力したい場合は2つ続けて記述してください。

  • 開始位置:秘匿化を開始するVの数字位置を指定します。指定できる範囲は正の整数です。

  • 終了位置:秘匿化を終了するVの数字位置を指定します。終了位置の値を決める時はFの位置は含めないでください。指定できる範囲は開始位置よりも大きい正の整数です。

電話番号の始めの3桁を除いて*に秘匿化する場合は以下を指定します。

function_parameters := 'VVVFVVVVFVVVV, VVV-VVVV-VVVV, *, 4, 11'

この場合、元データが“012-3456-7890”の場合は、“012-****-****”に改訂されます。

日付/タイムスタンプ型

'MDYHMS'

  • M:月を秘匿化します。月を秘匿化する場合は1から12を小文字のmの後ろに追記します。秘匿化しない場合は大文字のMを指定します。

  • D:日を秘匿化します。日を秘匿化する場合は1から31を小文字のdに追記します。月の日よりも大きい数値を入力すると、その月の最終日が表示されます。秘匿化しない場合は大文字のDを指定します。

  • Y:年を秘匿化します。年を秘匿化する場合は1から9999を小文字のyに追記します。秘匿化をしない場合は大文字のYを指定します。

  • H:時間を秘匿化します。時間を秘匿化する場合は0から23を小文字のhに追記します。秘匿化をしない場合は大文字のHを指定します。

  • M:分を秘匿化します。分を秘匿化する場合は0から59を小文字のmに追記します。秘匿化をしない場合は大文字のMを指定します。

  • S:秒を秘匿化します。秒を秘匿化する場合は0から59を小文字のsに追記します。秘匿化をしない場合は大文字のSを指定します。

時間、分、秒を0時0分0秒に秘匿化する場合は以下を指定します。

function_parameters := 'MDYh0m0s0'

この場合、元データが“2010-10-10 10:10:10”の場合は、“2010-10-10 00:00:00”に改訂されます。

参照

正規表現秘匿化

正規表現秘匿化では、データをregexp_pattern、regexp_replacement、regexp_flagsの内容に従って改訂します。regexp_patternには、正規表現による改訂方法を指定します。regexp_replacementには、正規表現の改定後の文字を指定します。regexp_flagsには、正規表現のフラグを指定します。

bから始まる3文字を全てXに改訂する場合は以下を指定します。

regexp_pattern := 'b..'

regexp_replacement:= 'X'

regexp_flags := 'g'

この場合、元データが“foobarbaz”の場合は、“fooXX”に改訂されます。

参照

  • regexp_pattern、regexp_replacement、regexp_flagsに指定できる値は、“PostgreSQL文書”の“POSIX正規表現”のpattern、replacement、flagsを参照してください。

  • 秘匿化が可能なデータ型は、“H.2 秘匿化が可能なデータ型”を参照してください。

注意

  • 列のデータ型がcharacter(n)、char(n)の場合、改訂後の文字列長が列の長さ(n)を超えると、列の長さまで切り詰められて表示されます。

  • 列のデータ型がcharacter varying(n)、varchar(n)の場合、改訂後の文字列長が改訂前の文字列長の長さを超えると、改訂前の文字列長まで切り詰められて表示されます。