다음을 통해 공유


mask

적용 대상: 예로 표시된 확인Databricks SQL 예로 표시된 확인 Databricks Runtime 12.2 LTS 이상 예로 표시된 확인 Unity 카탈로그만

테이블에서 행을 가져올 때마다 열에 적용되는 함수를 지정합니다. 해당 열의 모든 후속 쿼리는 열의 원래 값 대신 열에 대해 해당 함수를 평가한 결과를 받게 됩니다. 이는 함수가 값을 수정할지 여부를 결정하기 위해 호출하는 사용자의 ID 및/또는 그룹 구성원을 검사할 수 있는 세분화된 액세스 제어 목적에 유용할 수 있습니다.

다음과 같은 경우 열 마스크를 추가할 수 있습니다.

Important

각 행을 데이터 원본에서 가져오는 즉시 마스크가 적용됩니다. 모든 식, 조건자 또는 순서는 마스킹 후에 적용됩니다. 예를 들어 다른 테이블의 다른 열에 대해 마스킹된 열 간의 조인은 조인 비교에 마스킹된 값을 사용합니다.

열 마스크를 사용하는 방법에 대한 자세한 내용은 행 필터 및 열 마스크를 사용하여 중요한 테이블 데이터 필터링을 참조하세요.

구문

MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]

매개 변수

  • func_name

    매개 변수가 하나 이상 있는 스칼라 SQL UDF입니다.

    SQL UDF의 첫 번째 매개 변수는 마스킹된 열과 1:1을 매핑합니다. 마스킹된 열의 형식은 SQL UDF 매개 변수 형식으로 캐스팅할 수 있어야 합니다. func_name에 더 많은 매개 변수가 필요한 경우 USING COLUMNS 절에서 인수를 제공해야 합니다.

    함수의 반환 형식은 마스킹된 열의 데이터 형식으로 캐스팅할 수 있어야 합니다.

  • other_column_name

    필요에 따라 func_name에 전달할 마스킹된 열 테이블의 추가 열을 지정합니다. 각 other_column_namefunc_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