Oracle Data Redactionとは、機密データを、リアルタイムでリダクションする機能です。データベースに保存されているデータは変更せずに、問合せの結果に伏字処理を適用します。
機能の詳細については、こちらのマニュアルの記載を参照してください。
本記事では表HR.EMPの列SALにData Redactionによる伏字処理を適用することにより、Data Redactionの効果と実装の流れについて理解します。
作業内容としては、列SALに保存されている数値の先頭3桁を9で置き換えます。
データベース・アクションにユーザーADMINでサインインして、作業を行います。
列SALの先頭3桁の数値を9で置き換えるために、以下のポリシーredact_salを作成します。ポリシーの作成には、プロシージャDBMS_REDACT.ADD_POLICYを呼び出します。
function_typeとしてDBMS_REDACT.PARTIAL、function_parametersとして9,1,3(伏せ字が9で、1から3桁目までを伏字にする)を指定しています。またexpressionとして1=1(つねに真 - NULLでも同様)とし、必ず伏字が行われるようにしています。
伏字処理の方法には色々な種類があります。また適用条件にも、APEXが提供するコンテキスト、Real Application Securityのネームスペースの利用など、多様な構成が可能です。
Data Redactionの設定は以上で完了です。
DBMS_REDACT.ADD_POLICYには引数enableがあります。無指定の場合はTRUEとなり、ポリシー作成後すぐに有効になります。ポリシーの無効化、有効化を行うにはそれぞれプロシージャDBMS_REDACT.DISABLE_POLICYまたはDBMS_REDACT.ENABLE_POLICYを呼び出します。
作成されたData Redactionのポリシーは、ビューREDACTION_POLICIES、REDACTION_EXPRESSIONS、REDACTION_COLUMNSおよびREDACTION_VALUES_FOR_TYPE_FULLより確認できます。
Data Redactionを構成した結果を確認するために、テスト用のAPEXアプリケーションを実行します。
従業員名に以下を指定します。
SCOTT' or '1' = '1
列SALの先頭3桁がつねに9になっていることが確認できます。
後続の作業に影響があるため、作成したポリシーを削除します。プロシージャDBMS_REDACT.DROP_POLICYを呼び出します。