Column mask
항목
적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 이상 Unity 카탈로그만 표시
테이블에서 행을 가져올 때마다 열에 적용되는 함수를 지정합니다. 해당 열의 모든 후속 쿼리는 열의 원래 값 대신 열에 대해 해당 함수를 평가한 결과를 받습니다. 이 기능은 함수가 호출하는 사용자의 ID 또는 그룹 멤버 자격을 검사하여 값을 수정할지 여부를 결정할 수 있는 세분화된 액세스 제어 목적에 유용할 수 있습니다.
다음과 같은 경우 열 마스크를 추가할 수 있습니다.
- CREATE TABLE사용하여 테이블을 만듭니다.
- ALTER TABLE 사용하여 테이블에 열 추가... 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