열 mask
절
적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 이상 Unity 카탈로그만
테이블에서 행을 가져올 때마다 열에 적용되는 함수를 지정합니다. 해당 열의 모든 후속 쿼리는 열의 원래 값 대신 열에 대해 해당 함수를 평가한 결과를 받게 됩니다. 이는 함수가 값을 수정할지 여부를 결정하기 위해 호출하는 사용자의 ID 및/또는 그룹 구성원을 검사할 수 있는 세분화된 액세스 제어 목적에 유용할 수 있습니다.
다음과 같은 경우 열 마스크를 추가할 수 있습니다.
- CREATE TABLE을 사용하여 테이블을 만듭니다.
- ALTER TABLE … ADD COLUMN을 사용하여 테이블에 열을 추가합니다.
- ALTER TABLE … ALTER COLUMN을 사용하여 열을 변경합니다.
Important
각 행을 데이터 원본에서 가져오는 즉시 마스크가 적용됩니다. 모든 식, 조건자 또는 순서는 마스킹 후에 적용됩니다. 예를 들어 다른 테이블의 다른 열에 대해 마스킹된 열 간의 조인은 조인 비교에 마스킹된 값을 사용합니다.
열 마스크를 사용하는 방법에 대한 자세한 내용은 행 필터 및 열 마스크를 사용하여 중요한 테이블 데이터 필터링을 참조하세요.
구문
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
매개 변수
-
매개 변수가 하나 이상 있는 스칼라 SQL UDF입니다.
SQL UDF의 첫 번째 매개 변수는 마스킹된 열과 1:1을 매핑합니다. 마스킹된 열의 형식은 SQL UDF 매개 변수 형식으로 캐스팅할 수 있어야 합니다.
func_name
에 더 많은 매개 변수가 필요한 경우USING COLUMNS
절에서 인수를 제공해야 합니다.함수의 반환 형식은 마스킹된 열의 데이터 형식으로 캐스팅할 수 있어야 합니다.
-
필요에 따라
func_name
에 전달할 마스킹된 열 테이블의 추가 열을 지정합니다. 각other_column_name
은func_name
의 해당 매개 변수로 캐스팅할 수 있어야 합니다.열 마스크를 사용하여
table_name
에 대한 쿼리를 실행하는 사용자,column_identifier
의 값 및 선택적other_column
을 기준으로column_identifier
의 값을 선택적으로 익명화합니다. constant_literal
함수 매개 변수와 일치하는 형식으로 상수 매개 변수를 지정합니다. 지원되는 형식은
STRING
, 숫자(INTEGER
,FLOAT,
,DOUBLE
,DECIMAL
...),BOOLEAN
,INTERVAL
,NULL
입니다.
예제
행 필터 및 열 마스크를 사용하여 중요한 테이블 데이터 필터링에서 더 많은 예제를 확인할 수 있습니다.
-- Create a table with a masked column
> CREATE FUNCTION mask_ssn(ssn STRING) RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
> CREATE TABLE persons(name STRING, ssn STRING MASK mask_ssn);
> INSERT INTO persons VALUES('James', '123-45-6789';
-- As a non-member of 'HumanResourceDept'
> SELECT * FROM persons;
James ***-**-****
-- As a member of 'HumanResourceDept'
> SELECT * FROM persons;
James 123-45-6789
-- Create a masking function with multiple parameters. When applied first parameter will be the column that masking function applies to
> CREATE FUNCTION mask_pii_regional(value STRING, region STRING)
RETURN IF(is_account_group_member(region || '_HumanResourceDept'), value, 'REDACTED');
-- Create a table with a masked column. Masking function first parameter will be the column that is masked.
-- The rest of the parameters should be specified in `USING COLUMNS (<columnList>)` clause
> CREATE TABLE persons(name STRING, address STRING MASK mask_pii_regional USING COLUMNS (region), region STRING);
> INSERT INTO persons('James', '160 Spear St, San Francisco', 'US')
-- As a non-member of 'US_HumanResourceDept'
> SELECT * FROM persons;
James | REDACTED | US
-- As a member of 'US_HumanResourceDept'
> SELECT * FROM persons;
James | 160 Spear St, San Francisco | US