다음을 통해 공유


Column 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