-- 1. 마스킹 함수 생성: 이메일 마스킹
CREATE FUNCTION production.ecommerce.mask_email(email_col STRING)
RETURN
CASE
WHEN IS_ACCOUNT_GROUP_MEMBER('admin') THEN email_col -- 관리자: 원본
WHEN IS_ACCOUNT_GROUP_MEMBER('analysts') THEN
CONCAT(LEFT(email_col, 2), '***@', SPLIT(email_col, '@')[1]) -- 분석가: 부분 마스킹
ELSE '***@***.***' -- 기타: 완전 마스킹
END;
-- 2. 마스킹 함수 생성: 전화번호 마스킹
CREATE FUNCTION production.ecommerce.mask_phone(phone_col STRING)
RETURN
CASE
WHEN IS_ACCOUNT_GROUP_MEMBER('admin') THEN phone_col
ELSE CONCAT(LEFT(phone_col, 3), '-****-', RIGHT(phone_col, 4))
END;
-- 3. 테이블에 마스킹 적용
ALTER TABLE production.ecommerce.customers
ALTER COLUMN email SET MASK production.ecommerce.mask_email;
ALTER TABLE production.ecommerce.customers
ALTER COLUMN phone SET MASK production.ecommerce.mask_phone;
-- 4. 마스킹 제거
ALTER TABLE production.ecommerce.customers
ALTER COLUMN email DROP MASK;