Oracle Cloud Infrastructureドキュメント

SQL式

用途

SQL式のマスキング・フォーマットを使用すると、SQL式を使用して列データをマスキングできます。 データ・マスキングでは、指定されたSQL式を使用して、元のデータを置換するために使用される値を生成します。

入力

  • SQL式: SQL式は、マスクされた値を生成します。 1つ以上の値、演算子、および値に評価されるSQL関数で構成できます。 置換列(マスキングされる列と同じ表の列)を含めることもできます。 パーセント(%)記号で置換列を指定します。 dbms_lobおよびその他のユーザー定義関数でSQLを使用し、ラージ・オブジェクト・データ型(LOBにはBLOB、CLOBおよびNCLOBが含まれる)の列をマスクします。

サポートされるデータ型

  • 文字
  • 数値
  • 日付
  • ラージ・オブジェクト(LOB)

説明

  • 組合せ可能: いいえ
  • Deterministic: はい。定義されたSQL式に依存
  • 逆仕訳不可: いいえ
  • 一意性: はい。ただし、一意性は保証されず、定義されたSQL式に依存します。 ただし、ORA_HASHでは32ビットのアルゴリズムが使用され、誕生日の疑似は考慮されています。また、232-1一意の値の後は、衝突の確率は0.5です。

  • ランダムなEメール・アドレスを生成します。
    dbms_random.string('u', 8) || '@example.com'
  • FIRST_NAMELAST_NAMEなどの代替列の値を使用して電子メール・アドレスを生成します。
    %FIRST_NAME% || '.' || %LAST_NAME% || '@example.com'
  • CLOBが空です。
    dbms_lob.empty_clob()
  • CLOB_COLなどのCLOB列にカスタム・マスキング関数を適用します。
    custom_mask_clob(%CLOB_COL%)
  • 条件付マスキングを実行します。 たとえば、次の式は、パーティ・タイプがPERSONの場合、姓と名を使用してPERSON_FULL_NAMEをマスクします。 それ以外の場合は、ランダム文字列を使用してデータをマスキングします。
    (case when %PARTY_TYPE%='PERSON' then %PERSON_FIRST_NAME%|| ' ' ||%PERSON_LAST_NAME% else (select dbms_random.string('U', 10) from dual) end)
  • 置換マスキングを実行します。 たとえば、次の式は置換表DATA_MASK.DATA_MASK_ADDRで1000行を選択します。 %ZIPCODE%は、置換表のMASK_ZIPCODE列でマスクされます。 選択される行はora_hashによって異なり、この場合、決定論的です。 dbms_random プロシージャを使用する場合、選択はランダムです。
    select MASK_ZIPCODE from DATA_MASK.DATA_MASK_ADDR where ADDR_SEQ = ora_hash( %ZIPCODE% , 1000, 1234)