Skip to content

Data Redaction

Data Redaction(データ・リダクション)は、クエリ結果として返される列の値を動的に隠す(マスキングする)機能です。 DB 内部のデータ自体は変更されず、アプリケーションに返すタイミングでのみ値が置き換えられます(Data in Use の保護)。

DBMS_REDACT パッケージでポリシーを管理し、「誰が・どのオブジェクトの・どの列を照会したとき」 にマスキングを適用するかを条件式(expression)で制御します。

タイプ定数動作
完全リダクションDBMS_REDACT.FULL数値は 0、文字列は空文字に置き換え
部分リダクションDBMS_REDACT.PARTIAL一部の文字だけをマスク(例:クレジットカード番号の末尾4桁のみ表示)
ランダムDBMS_REDACT.RANDOMランダムな値を返す(毎回変わる)
正規表現DBMS_REDACT.REGEXP正規表現パターンに一致した部分を置換
リダクションなしDBMS_REDACT.NONE実際の値をそのまま返す(ポリシーの一時無効化などに使用)
  • 1オブジェクト(表/ビュー)につき 1 ポリシーのみ作成できる
  • 1 つのポリシーに複数列を追加するには DBMS_REDACT.ALTER_POLICY を使う
  • expression パラメータで適用条件を指定(例:SYS_CONTEXT('USERENV','SESSION_USER') = 'SALES_APP'
  • ポリシーの状態は redaction_policies / redaction_columns ビューで確認できる
プロシージャ用途
DBMS_REDACT.ADD_POLICY新規ポリシーを作成(最初の列を定義)
DBMS_REDACT.ALTER_POLICY既存ポリシーに列の追加・変更・有効/無効化
DBMS_REDACT.DROP_POLICYポリシーを削除

注意:アクセス制御機能ではない

Section titled “注意:アクセス制御機能ではない”

Data Redaction はデータを「見えにくくする」機能であり、アクセスを遮断する機能ではありませんWHERE 句や副問い合わせを使った条件フィルタリングは元データに対して実行されるため、絞り込み件数などからデータを推測できる場合があります。 機密データの保護には、VPD や Database Vault などのアクセス制御機能と組み合わせることが重要です。

詳しくは「注意点」ページを参照してください。

HR スキーマの EMPLOYEES 表を題材に、SALARY / COMMISSION_PCT 列に対して完全リダクションを適用し、ユーザー別の見え方の違いを確認します。

  1. Data Redactionの準備

    比較用ユーザー(SALES_APP)への権限付与と、DBMS_REDACT.ADD_POLICY / ALTER_POLICY を使ったリダクションポリシーの作成を行います。

  2. Redactionを体験する

    HR ユーザーと SALES_APP ユーザーでそれぞれ同じクエリを実行し、列の値がマスキングされることを確認します。最後にポリシーを削除して後片付けも行います。