すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:動的データマスキング

最終更新日:Dec 16, 2025

MaxCompute プロジェクトで特定のユーザーにマスキングされた機密データのみの表示を許可するには、動的データマスキングを有効にします。この機能は、データへのアクセスまたは表示中に機密データをリアルタイムで非表示または置換することにより、機密データの漏洩を防ぎます。このトピックでは、例を用いて MaxCompute で動的データマスキングを有効にする方法について説明します。

機能の説明

MaxCompute は、個人識別用情報 (PII) などの機密データを表示時にマスキングすることで保護する、動的データマスキング機能を提供します。この機能は、ビジネス開発のテスト、データ共有、運用保守 (O&M) などのシナリオに適用できます。動的データマスキングは、アクセス制御リスト (ACL) の列レベルの権限とは異なります。ACL の列レベルの権限を使用する場合、ユーザーはアクセス権のない列を除外するために SQL クエリを修正する必要があります。対照的に、データマスキングポリシーでは、ユーザーが既存の SQL クエリを変更する必要はありません。ユーザーがデータにアクセスすると、システムはユーザーの ID とロールに基づいて関連する列のデータを自動的にマスキングします。これにより、クエリ、ダウンロード、関連付け、およびユーザー定義関数 (UDF) の計算中にデータがマスキングされたままになり、機密データの漏洩を防ぎます。

データマスキングポリシーは、マスキング、ハッシュ化、文字置換、数値の丸め、日付の丸めなど、さまざまなメソッドをサポートしており、ID 情報、銀行カード番号、住所、電話番号など、さまざまなマスキング要件に対応します。MaxCompute は、ストレージからのデータ取得に最も近い時点でデータマスキングを実装するため、高いパフォーマンスと堅牢なセキュリティが保証されます。

image

適用範囲

  • サポートされているリージョン

    この機能はパブリックプレビュー段階にあり、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (深セン)、中国 (成都)、中国 (香港)、日本 (東京)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、米国 (シリコンバレー) の各リージョンで利用できます。

  • サポートされているドライバーバージョン

    MaxCompute 接続方法

    ドライバーバージョン

    データマスキングのサポート

    Java SDK

    0.48.0-public 以降

    サポート

    odpscmd

    0.47.1 以降

    サポート

    JDBC

    3.4.3 以降

    サポート

    MaxFrame

    制限なし

    サポート

    PyODPS

    制限なし

    サポート

    Go SDK

    制限なし

    サポート

  • 内部テーブル

    • MaxCompute は内部テーブルのデータマスキングポリシーをサポートしますが、外部テーブルはサポートしません。

    • 動的データマスキング機能と行レベルの権限機能は相互排他的です。同じテーブルにデータマスキングポリシーと行レベルの権限ポリシーの両方を設定することはできません。

    • マスキングポリシーを使用して中国語の文字をマスキングする場合、文字コードは UTF-8 である必要があります。

  • ビュー

    • 従来ビューはデータマスキングポリシーをサポートします。従来ビューのデータマスキングポリシーは、ソーステーブルのポリシーと同期されます。ソーステーブルからデータマスキングポリシーをアタッチまたはデタッチすると、その変更は従来ビューにも反映されます。

    • マテリアライズドビューを作成すると、ソーステーブルのデータマスキングポリシーがマテリアライズドビューに適用されます。マテリアライズドビューの作成後にソーステーブルに新しいマスキングポリシーをアタッチしたり、既存のマスキングポリシーをデタッチしたりしても、マテリアライズドビューのマスキングポリシーは変更されません。

  • データマスキングポリシー

    ユーザーが機密データにアクセスする際に、複数のデータマスキングポリシーが同時に有効である場合、システムは最も優先度の高いポリシーに基づいて機密データをマスキングします。詳細については、「事前定義されたデータマスキングポリシーの優先度」をご参照ください。

データマスキングのフロー

プロジェクトオーナーおよび Super_Administrator または Admin ロールが割り当てられたユーザーは、データマスキングポリシーを管理できます。ユーザーが機密データを含むテーブルにアクセスすると、システムはユーザーまたはロールに関連付けられたマスキングポリシーを確認し、マスキングされたデータまたはプレーンテキストのデータを返します。

image

データマスキングコマンド

プロジェクトのデータマスキング機能を有効または無効にする

odps.data.masking.policy.enable は、データマスキング機能を有効または無効にするために使用されるプロジェクトレベルのプロパティです。この機能を有効または無効にできるのは、プロジェクトオーナーまたはプロジェクトレベルの Super_Administrator もしくは Admin ロールが割り当てられたユーザーのみです。詳細については、「ユーザーへの組み込み管理ロールの割り当て」をご参照ください。

  • プロジェクトのデータマスキング機能を有効にします。

    setproject odps.data.masking.policy.enable=true;
  • プロジェクトのデータマスキング機能を無効にします。

    setproject odps.data.masking.policy.enable=false;

データマスキングポリシーの作成と削除

  • コマンドフォーマット

    • データマスキングポリシーを作成します。

      CREATE DATA MASKING POLICY [IF NOT EXISTS] <policy_name> 
      TO { USER <user_list> | ROLE <role_list> | default } 
      USING <定義済みマスキングポリシー>;
    • データマスキングポリシーを削除します。

      DROP DATA MASKING POLICY <policy_name>;
  • パラメーターの説明

    パラメーター

    必須

    説明

    policy_name

    はい

    データマスキングポリシーの名前。ポリシー名は大文字と小文字を区別せず、特殊文字を含めることはできません。英字、数字、アンダースコア (_) のみを含めることができます。名前は英字で始めることを推奨します。名前の長さは 128 バイトを超えることはできません。

    USER | ROLE | default

    はい

    3 つのパラメーターから 1 つを選択します。

    • USER:特定のユーザーのデータをマスキングします。<user_list> には、ユーザーの名前を指定します。MaxCompute で list users; コマンドを実行してロール情報を取得できます。

    • ROLE:特定のロールのデータをマスキングします。<role_list> には、ロールの名前を指定します。MaxCompute で list roles; コマンドを実行してロール情報を取得できます。

    • default:デフォルトのデータマスキングポリシー。ユーザーまたはロールが機密列にアクセスした際に、一致するデータマスキングポリシーがない場合、デフォルトのポリシーが使用されて機密列のデータがマスキングされます。

    定義済みマスキングポリシー

    はい

    定義済みのデータマスキングポリシー。詳細については、「定義済みデータマスキングポリシー」をご参照ください。

    • 例 1: ユーザー userA、userB、userC の MD5 ハッシュマスキングポリシーを作成します。

      CREATE data masking policy IF NOT EXISTS masking_test_001
      TO USER (userA, userB, userC)
      USING MASKED_MD5(0);
    • 例 2:プロジェクトの開発者および O&M ロールのために MD5 ハッシュマスキングポリシーを作成します。

      CREATE data masking policy IF NOT EXISTS masking_test_001
      TO ROLE (role_project_deploy, role_project_dev)
      USING MASKED_MD5(0);

機密データ列へのデータマスキングポリシーの適用

  • コマンドフォーマット

    --テーブルの機密データ列にデータマスキングポリシーを適用します。
    APPLY DATA MASKING POLICY <policy_name> BIND TO TABLE <table_name> COLUMN <column_name>;
    
    --テーブルの機密データ列に対して指定されたデータマスキングポリシーをキャンセルします。
    APPLY DATA MASKING POLICY <policy_name> UNBIND FROM TABLE <table_name> COLUMN <column_name>;
    
    --テーブルの機密データ列に対するすべてのデータマスキングポリシーをキャンセルします。
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name> COLUMN <column_name>;
    
    --テーブルのすべての機密データ列に対するすべてのデータマスキングポリシーをキャンセルします。
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name>;
  • パラメーターの説明

    パラメーター

    必須

    説明

    policy_name

    はい

    データマスキングポリシーの名前。

    table_name

    はい

    機密データを含むテーブルの名前。

    column_name

    はい

    機密データを含む列の名前。

データマスキングポリシーの表示

  • コマンドフォーマット

    --データマスキングポリシーの作成情報を表示します。
    DESC DATA MASKING POLICY <policy_name>;
    
    --機密データ列や適用されたデータマスキングポリシーの情報を含む、テーブルの拡張情報を表示します。
    DESC EXTENDED <table_name>;
    
    --現在のプロジェクト内のすべてのデータマスキングポリシーの名前を表示します。
    LIST DATA MASKING POLICY;
    
    --指定されたユーザーにアタッチされているデータマスキングポリシーの名前を表示します。
    LIST DATA MASKING POLICY TO USER <user_name>;
    
    --指定されたロールにアタッチされているデータマスキングポリシーの名前を表示します。
    LIST DATA MASKING POLICY TO ROLE <role_name>;
    
    --指定されたテーブルにアタッチされているすべてのデータマスキングポリシーの名前を表示します。
    LIST DATA MASKING POLICY ON <table_name>;
    
    --指定されたテーブルの指定された列にアタッチされているすべてのデータマスキングポリシーの名前を表示します。
    LIST DATA MASKING POLICY ON <table_name> TO COLUMN <column_name>;
  • パラメーターの説明

    パラメーター

    必須

    説明

    policy_name

    はい

    データマスキングポリシーの名前。

    table_name

    はい

    機密データを含むテーブルの名前。

    column_name

    はい

    機密データを含む列の名前。

    user_name

    はい

    ユーザー名。

    role_name

    はい

    ロールの名前。

定義済みデータマスキングポリシー

事前定義されたデータマスキングポリシーには、マスキング、ハッシュ化、文字置換、丸めが含まれます。データを保護するために、機密データのデータ型に基づいて事前定義されたデータマスキングポリシーを選択できます。

ポリシータイプ

ポリシー名

コマンドフォーマット

説明

一般

マスキングなし

UNMASKED

データをマスキングしません。

サポート対象の型:すべての型。

NULL に設定

MASKED_NULLIFY

値を NULL に設定します。データマスキング後、NULL が返されます。

  • サポート対象の型:すべての型。

  • --マスキング前、データ型は string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    
    --データマスキングポリシー
    MASKED_NULLIFY
    
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | NULL       | 
    +------------+

デフォルト値を割り当て

MASKED_DV

デフォルト値を使用してデータをマスキングします。各データ型のデフォルト値の詳細については、「MASKED_DV ポリシーのデータ型のデフォルト値」をご参照ください。

  • サポート対象の型:すべての型。

  • --マスキング前、データ型は timestamp
    +---------------+
    | col_timestamp |
    +---------------+
    | 2024-05-01 11:12:13 |
    +---------------+
    --データマスキングポリシー
    MASKED_DV
    --マスキング後、プロジェクトのデフォルトタイムゾーンは中国標準時 (UTC+8)
    +---------------+
    | col_timestamp | 
    +---------------+
    | 1970-01-01 08:00:00 | 
    +---------------+

年のみ保持

MASKED_DATE_YEAR

時刻値の年部分のみを保持します。年以外の部分は 1 月 1 日 00:00 (UTC) に設定されます。

  • サポート対象の型:DATE、DATETIME、TIMESTAMP_NTZ、TIMESTAMP。

  • --マスキング前、データ型は timestamp
    +---------------+
    | col_timestamp |
    +---------------+
    | 2024-05-01 11:12:13 |
    +---------------+
    --データマスキングポリシー
    MASKED_DATE_YEAR
    --マスキング後、プロジェクトのデフォルトタイムゾーンは中国標準時 (UTC+8)
    +---------------+
    | col_timestamp | 
    +---------------+
    | 2024-01-01 08:00:00 | 
    +---------------+

丸め

MASKED_POINT_RESERVE(<num>)

値を丸めて、小数点以下 0〜5 桁を保持します。

  • num:保持する小数点以下の桁数。num の値は 0 から 5 までの整数です。

  • サポート対象の型:DECIMAL、FLOAT、DOUBLE。

  • --マスキング前、データ型は float
    +-----------+
    | col_float |
    +-----------+
    | 1.12345   |
    +-----------+
    --データマスキングポリシー、小数点以下 2 桁を保持
    MASKED_POINT_RESERVE(2)
    --マスキング後
    +------------+
    | col_float  | 
    +------------+
    | 1.12       | 
    +------------+

マスク

文字列の先頭と末尾をマスク

MASKED_STRING_MASKED_BA(<before>, <after>)

文字列の先頭と末尾の部分を * でマスクし、中央部分をプレーンテキストで表示します。

  • before:文字列の最初の N 文字がアスタリスク (*) に置き換えられます。N は before パラメーターで指定します。before の値は 0 以上の整数です。before の値が 0 の場合、文字列の先頭部分はマスクされません。

  • after:文字列の末尾が * に置き換えられます。マスクの長さは after パラメーターで指定します。after の値は 0 以上の整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --データマスキングポリシー、最初の 3 文字と最後の 3 文字をアスタリスクに置き換え、中央部分をプレーンテキストで表示
    MASKED_STRING_MASKED_BA(3, 3)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | ***hael John*** | 
    +------------+

文字列の中央をマスク

MASKED_STRING_UNMASKED_BA(<before>, <after>)

文字列の先頭と末尾の部分をプレーンテキストで表示し、中央部分の文字をアスタリスク (*) に置き換えます。

  • before:文字列の先頭にあるプレーンテキストの文字数。before の値は 0 以上の整数です。

  • after:文字列の末尾にあるプレーンテキストの文字数。after の値は 0 以上の整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --データマスキングポリシー、最初と最後の文字をプレーンテキストで保持
    MASKED_STRING_UNMASKED_BA(1, 1)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | M*************n | 
    +------------+

ハッシュ

SHA256 ハッシュ化

MASKED_SHA256(<salt>)

SHA256 ハッシュアルゴリズムを使用してデータをマスキングします。

  • salt:ソルト値。num の値は 0 から 9 までの整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --データマスキングポリシー
    MASKED_SHA256(0)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | zwGMB1aCF1t705EfcwdDorql4MZb46XBqQJw/2RVx8U= | 
    +------------+

SHA512 ハッシュ化

MASKED_SHA512(<salt>)

SHA512 ハッシュアルゴリズムを使用してデータをマスキングします。

  • salt:ソルト値。num の値は 0 から 9 までの整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --データマスキングポリシー
    MASKED_SHA512(0)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | 3PPywfEIp08WuTUI8FZCCfdVuRu68wZTVwWWVAf4pboACUnH6w9kFMLpl2AARaGW/mvWvg26p0EIqmE0fAEiuA== | 
    +------------+

MD5 ハッシュ

MASKED_MD5(<salt>)

MD5 ハッシュアルゴリズムを使用してデータをマスキングします。

  • salt:ソルト値。num の値は 0 から 9 までの整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --データマスキングポリシー
    MASKED_MD5(0)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | mK/o08tew5g7S3XV/BkFfw== | 
    +------------+

SM3 ハッシュ

MASKED_SM3(<salt>)

SM3 ハッシュアルゴリズムを使用してデータをマスキングします。

  • salt:ソルト値。num の値は 0 から 9 までの整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --データマスキングポリシー
    MASKED_SM3(0)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | Q2TfwUh4B8QQH8jPL6DfdoGysx/CXBxn2T14dDwQtQw= | 
    +------------+

文字置換

ランダムな文字置換

MASKED_REPLACE_RANDOM(<position>)

データをランダムな文字に置き換えます。置換後も文字列の長さは変わりません。ランダムな値には数字と文字が含まれます。

  • position:文字置換の位置。値は整数です。

    • position = 0:すべてのデータがランダムな値に置き換えられます。

    • position > 0:最初の `position` 文字がランダムな値に置き換えられます。

    • position < 0:最後の `position` 文字がランダムな値に置き換えられます。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --データマスキングポリシー、文字列の最初の 7 文字をランダムな文字に置き換えます
    MASKED_REPLACE_RANDOM(7)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | 4DlJQxi Johnson | 
    +------------+

先頭と末尾のランダム文字置換

MASKED_REPLACE_RANDOM_BA(<before>, <after>)

データの先頭と末尾をランダムな文字に置き換えます。置換後も文字列の長さは変わりません。ランダムな値には数字と文字が含まれます。

  • before:データの先頭がランダムな文字に置き換えられます。置換の長さは before パラメーターで指定します。before の値は 0 以上の整数です。before の値が 0 の場合、先頭は置き換えられません。

  • after:データの末尾がランダムな文字に置き換えられます。置換の長さは after パラメーターで指定します。after の値は 0 以上の整数です。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --データマスキングポリシー、文字列の最初の 4 文字と最後の 4 文字をランダムな文字に置き換えます
    MASKED_REPLACE_RANDOM_BA(4, 4)
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | r0xEael JohnWNr | 
    +------------+

固定文字置換

MASKED_REPLACE_FIXED(<position>, <fixed_string>)

  • データを固定文字列に置き換えます。

  • position:文字置換の位置。値は整数です。

    • position = 0:すべてのデータが fixed_string に置き換えられます。

    • position > 0:最初の `position` 文字が fixed_string に置き換えられます。

    • position < 0:最後の `-position` 文字が fixed_string に置き換えられます。

  • fixed_string:固定文字列。固定文字列の長さは 100 文字以下である必要があります。固定文字列にスペースを含めることはできません。

  • サポート対象の型:STRING、VARCHAR、CHAR、BINARY。

  • --マスキング前、データ型は string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --データマスキングポリシー、文字列の最初の 7 文字を固定文字列 "Oli" に置き換えます
    MASKED_REPLACE_FIXED(7, "Oli")
    --マスキング後
    +------------+
    | col_string | 
    +------------+
    | Oli Johnson | 
    +------------+

機密性の高い個人情報をマスキングする

この例では、データマスキングポリシーを設定して機密性の高い個人情報をマスキングする方法を示します。

  1. データを準備します。

    個人情報用のテーブルを作成し、機密データを挿入します。

    -- 機密情報用のテーブルを作成します。
    CREATE TABLE if NOT EXISTS personal_info (
      id bigint COMMENT 'ユーザーの一意の ID。',
      name string COMMENT 'ユーザーの名前。',
      age int COMMENT 'ユーザーの年齢。',
      gender string COMMENT 'ユーザーの性別。',
      height float COMMENT 'ユーザーの身長。',
      birthday date COMMENT 'ユーザーの生年月日。',
      phone_number string COMMENT 'ユーザーの電話番号。',
      email string COMMENT 'ユーザーのメールアドレス。',
      address string COMMENT 'ユーザーの住所。',
      salary decimal(18, 2) COMMENT 'ユーザーの給与。',
      create_time timestamp COMMENT 'ユーザー情報が作成された時刻。',
      update_time timestamp COMMENT 'ユーザー情報が更新された時刻。',
      is_deleted boolean COMMENT 'ユーザー情報が削除されたかどうかを示すフラグ。'
    );
    -- 機密データを挿入します。
    INSERT INTO personal_info VALUES
        (1, '田中 太郎', 18, 'Male', 178.56, '1990-01-01', '13800000000', 'taro.tanaka@example.com', '東京都千代田区', 5000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false),
        (2, '鈴木 花子', 20, 'Female', 162.70, '1992-02-02', '13900000000', 'hanako.suzuki@example.com', '大阪府大阪市中央区', 6000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00',false),
        (3, '佐藤 次郎', 22, 'Male', 185.21, '1994-03-03', '14000000000', 'jiro.sato@example.com', '福岡県福岡市博多区', 7000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false);
  2. データマスキングポリシーの設定

    • 名前の最初の文字のみを保持し、他の文字を * に置き換えます。

      CREATE data masking policy IF NOT EXISTS masking_name
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_STRING_UNMASKED_BA(1, 0);
      
      apply data masking policy masking_name bind TO
      TABLE personal_info COLUMN name;
    • height フィールドの値を丸めます。

      CREATE data masking policy IF NOT EXISTS masking_height
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_POINT_RESERVE(0);
      
      apply data masking policy masking_height bind TO
      TABLE personal_info COLUMN height;
    • 生年月日の年のみを保持します。

      CREATE data masking policy IF NOT EXISTS masking_birthday
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_DATE_YEAR;
      
      apply data masking policy masking_birthday bind TO
      TABLE personal_info COLUMN birthday;
    • デフォルトユーザーの電話番号を SM3 アルゴリズムでハッシュ化します。

      CREATE DATA MASKING POLICY default_sm3
      TO DEFAULT
      USING MASKED_SM3(0);
      
      apply data masking policy default_sm3 bind TO
      TABLE personal_info COLUMN phone_number;
  3. データマスキングポリシーの対象となるアカウントを使用して、マスキングされたデータをクエリします。

    SELECT id, name, height, birthday, phone_number FROM personal_info;
    
    -- マスキング前
    +------------+-----------+--------+----------+--------------+
    | id         | name      | height | birthday | phone_number |
    +------------+-----------+--------+----------+--------------+
    | 1          | 田中 太郎 | 178.56 | 1990-01-01 | 13800000000  |
    | 2          | 鈴木 花子 | 162.7  | 1992-02-02 | 13900000000  |
    | 3          | 佐藤 次郎 | 185.21 | 1994-03-03 | 14000000000  |
    +------------+-----------+--------+----------+--------------+
    
    -- マスキング後
    +------------+------------+------------+------------+--------------+
    | id         | name       | height     | birthday   | phone_number | 
    +------------+------------+------------+------------+--------------+
    | 1          | 田*        | 179.0      | 1990-01-01 | lvYJaH4ElL2ilpQx/8tfMUw7xP22yblIgmfWp0/msUQ= | 
    | 2          | 鈴*        | 163.0      | 1992-01-01 | 9fFWacNSwCRZLAjMHqunlfwkqhTbP2ubuDOeOSh4N1c= | 
    | 3          | 佐*        | 185.0      | 1994-01-01 | k/0JoQCSarJg9ATJ5tyVnhQf1jIBxHXRbB+cvUm4OmE= | 
    +------------+------------+------------+------------+--------------+

すべてのユーザーとロールのデータをデフォルトでマスキングする

次の例は、ユーザーまたはロールが複数のデータマスキングポリシーに一致する場合、最も優先度の高いポリシーが有効になることを示しています。

デフォルトユーザーには MASKED_SHA256(5) マスキングポリシーを使用します。

CREATE DATA MASKING POLICY  default_hash_policy
TO DEFAULT
USING MASKED_SHA256(5);

特別なユーザー A と B には UNMASKED ポリシーを使用します。

CREATE DATA MASKING POLICY  ab_unmask_policy
TO USER (A, B)
USING UNMASKED;

結果:ユーザー A と B はプレーンテキストデータにアクセスできます。他のユーザーは SHA256 ハッシュアルゴリズムでマスキングされたデータにのみアクセスできます。

説明

ユーザー A と B は MASKED_SHA256(5) と UNMASKED の両方のポリシーにヒットします。UNMASKED ポリシーは優先度が高いため有効になります (詳細については、「事前定義されたマスキングポリシーの優先度」をご参照ください)。他のユーザーは MASKED_SHA256(5) ポリシーにヒットします。

付録

定義済みマスキングポリシーの優先順位

ユーザーが機密データにアクセスする際に、複数のデータマスキングポリシーが有効な場合、優先度の高いポリシーが実行されます。

たとえば、ユーザー A が col_string 列にアクセスし、優先度 3 の MASKED_REPLACE_RANDOM(3) と優先度 4 の MASKED_SM3 の 2 つのデータマスキングポリシーに一致した場合、システムは優先度の高いポリシーを実行します。この場合、MASKED_REPLACE_RANDOM(3) が使用され、ユーザー A にはランダムな文字に置き換えられたデータが表示されます。

優先度

事前定義されたデータマスキングポリシー

0 (高)

UNMASKED

1

MASKED_POINT_RESERVE(num)

2

MASKED_DATE_YEAR

3

MASKED_STRING_MASKED_BA(before, after)

MASKED_STRING_UNMASKED_BA(before, after)

MASKED_REPLACE_RANDOM(position)

MASKED_REPLACE_RANDOM_BA(before, after)

MASKED_REPLACE_FIXED(position)

4

MASKED_SHA256

MASKED_SHA512

MASKED_MD5

MASKED_SM3

5

MASKED_DV

6 (低)

MASKED_NULLIFY

MASKED_DV データマスキングポリシーのデフォルト値

データ型

デフォルト値

bigint

0

double

0.0

decimal

0

string

""

datetime

DATETIME'1970-01-01 00:00:00' (UTC)

boolean

false

tinyint

0

smallint

0

int

0

binary

''

float

0.0

double

0.0

decimal

0

varchar(n)

""

char(n)

" " (n 個のスペース)

date

DATE'1970-01-01'

timestamp

TIMESTAMP'1970-01-01 00:00:00' (UTC)

timestamp_ntz

TIMESTAMP'1970-01-01 00:00:00' (UTC)

array

{子クラスのデフォルト値}

map

{key:value} (key と value は子クラスのデフォルト値に対応)

json

""

struct

(子クラスのデフォルト値)