ClickHouse Cloud 専用
マスキングポリシーを作成します。これにより、特定のユーザーまたはロールがテーブルをクエリする際に、カラムの値を動的に変換またはマスクできます。
構文:
CREATE MASKING POLICY [IF NOT EXISTS | OR REPLACE] policy_name ON [database.]table
UPDATE column1 = expression1 [, column2 = expression2 ...]
[WHERE condition]
TO {role1 [, role2 ...] | ALL | ALL EXCEPT role1 [, role2 ...]}
[PRIORITY priority_number]UPDATE 句
UPDATE 句では、マスクするカラムとその変換方法を指定します。1 つのポリシーで複数のカラムをマスクできます。
例:
- シンプルなマスキング:
UPDATE email = '***masked***' - 部分的なマスキング:
UPDATE email = concat(substring(email, 1, 3), '***@***.***') - ハッシュベースのマスキング:
UPDATE email = concat('masked_', substring(hex(cityHash64(email)), 1, 8)) - 複数カラム:
UPDATE email = '***@***.***', phone = '***-***-****'
WHERE句
オプションのWHERE句を使うと、行の値に基づく条件付きマスキングを適用できます。条件に一致する行にのみマスキングが適用されます。
例:
CREATE MASKING POLICY mask_high_salaries ON employees
UPDATE salary = 0
WHERE salary > 100000
TO analyst;TO 句
TO 句では、ポリシーを適用するユーザーとロールを指定します。
TO user1, user2: 特定のユーザー/ロールに適用しますTO ALL: すべてのユーザーに適用しますTO ALL EXCEPT user1, user2: 指定したユーザーを除くすべてのユーザーに適用します
PRIORITY 句
1 人のユーザーに対して複数のマスキングポリシーが同じカラムを対象とする場合、PRIORITY 句によって適用順序が決まります。ポリシーは、優先度の高いものから低いものの順に適用されます。
デフォルトの優先度は 0 です。同じ優先度のポリシーは、適用順序が定義されていません。
例:
-- Applied second (lower priority)
CREATE MASKING POLICY mask1 ON users
UPDATE email = 'low@priority.com'
TO analyst
PRIORITY 1;
-- Applied first (higher priority)
CREATE MASKING POLICY mask2 ON users
UPDATE email = 'high@priority.com'
TO analyst
PRIORITY 10;
-- analyst sees 'low@priority.com' because it's applied last