다음을 통해 공유


CREATE POLICY

적용 대상:확인된 예 Databricks SQL 확인된 예 Databricks Runtime 16.4 이상 확인된 예 Unity Catalog 전용

보안 개체에 명명된 정책을 만듭니다. 정책은 행 필터 또는 카탈로그, 스키마 또는 테이블에 적용되는 열 마스크일 수 있습니다. 정책 이름은 정책이 정의된 보안 개체로 범위가 지정됩니다.

이 문을 실행하려면 대상 보안 개체에 대한 권한이 있거나 소유자여야 합니다 MANAGE .

문법

CREATE [ OR REPLACE ] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[ COMMENT description ]
{ row_filter_body | column_mask_body }

row_filter_body
  ROW FILTER function_name
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  FOR TABLES
  [ WHEN condition ]
  [ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
  [ USING COLUMNS ( function_arg [, ...] ) ]

column_mask_body
  COLUMN MASK function_name
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  FOR TABLES
  [ WHEN condition ]
  [ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
  ON COLUMN alias
  [ USING COLUMNS ( function_arg [, ...] ) ]

매개 변수

  • policy_name

    정책의 이름입니다. 이름은 정책이 정의된 보안 개체로 범위가 지정됩니다. 이름이 같은 정책이 이미 있고 OR REPLACE 지정되지 않은 경우 Azure Databricks는 POLICY_ALREADY_EXISTS 발생합니다.

  • catalog_name

    정책이 정의된 카탈로그의 이름입니다. 보안 형식이 정책에 대해 지원되지 않는 경우 Azure Databricks는 POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED 발생합니다.

  • schema_name

    정책이 정의된 스키마의 이름입니다.

  • table_name

    정책이 정의된 테이블의 이름입니다.

  • 묘사

    정책에 대한 선택적 문자열 주석입니다.

  • function_name

    행 필터 또는 열 마스크에 사용되는 UDF의 이름입니다.

  • principal

    사용자, 그룹 또는 서비스 주체 이름입니다. 이후 여러 보안 주체를 TO나열할 수 있습니다. 이후에 EXCEPT 나열된 보안 주체는 정책에서 제외됩니다.

  • 조건

    For WHEN: 보안 개체와 일치하는 부울 식(예: 테이블 수준 태그 조건)입니다. For MATCH COLUMNS: 열과 일치하는 부울 식입니다(예: hasTag('tag_name')). 조건은 보안 메타데이터의 컨트롤 플레인에 의해 평가됩니다. 조건에서 지원되는 유일한 사용자 연결 함수는 다음과 같습니다 hasTag()hasTagValue(). 조건이 잘못된 경우 Azure Databricks는 UC_INVALID_POLICY_CONDITION 발생합니다.

  • alias

    에서 MATCH COLUMNS일치하는 열에 대한 선택적 식별자입니다 . 별칭은 (행 필터) 또는 열 마스크에서 ON COLUMNUSING COLUMNS 참조 USING COLUMNS 할 수 있습니다.

  • function_arg

    에서 USING COLUMNS각 인수는 상수 식 또는 별칭 MATCH COLUMNS입니다. 인수는 순서대로 정책 함수에 전달됩니다. 옵션이 정책 유형과 일치하지 않으면 Azure Databricks는 UC_POLICY_TYPE_OPTIONS_MISMATCH 발생합니다.

예제

다음 예제에서는 열 마스크 정책을 만듭니다.

> CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
    RETURN right(ssn, nr);

> CREATE POLICY ssn_mask
    ON CATALOG employees
    COLUMN MASK ssn_to_last_nr
    TO 'All Users' EXCEPT 'HR admins'
    FOR TABLES
    MATCH COLUMNS hasTag('ssn') AS ssn
    ON COLUMN ssn
    USING COLUMNS (4);

다음 예제에서는 행 필터 정책을 만듭니다.

> CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
    RETURN geo_region <> 'eu';

> CREATE POLICY hide_eu_customers
    ON SCHEMA prod.customers
    COMMENT 'Hide European customers from sensitive tables'
    ROW FILTER non_eu_region
    TO analysts
    FOR TABLES
    WHEN hasTagValue('sensitivity', 'high')
    MATCH COLUMNS hasTag('geo_region') AS region
    USING COLUMNS (region);