2021年8月16日月曜日

データベース・セキュリティの活用(9) - Data Redaction

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.PARTIALfunction_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_POLICIESREDACTION_EXPRESSIONSREDACTION_COLUMNSおよびREDACTION_VALUES_FOR_TYPE_FULLより確認できます。

Data Redactionを構成した結果を確認するために、テスト用のAPEXアプリケーションを実行します。

従業員名に以下を指定します。

SCOTT' or '1' = '1

列SALの先頭3桁がつねに9になっていることが確認できます。


後続の作業に影響があるため、作成したポリシーを削除します。プロシージャDBMS_REDACT.DROP_POLICYを呼び出します。