정책 생성 (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 나열된 보안 주체는 정책에서 제외됩니다.

  • 조건

    WHEN 는 보안 대상 태그, 쿼리 사용자의 신원 속성, 그리고/또는 요청의 맥락을 바탕으로 정책이 적용되는지 여부를 결정하는 불리언 표현식입니다.

    MATCH COLUMNS 는 태그를 기반으로 열을 매칭하는 불리언 표현식입니다(예: has_tag('pii')).

    조건은 제어 평면에서 평가됩니다. 다음 기능들이 조건에서 지원됩니다:

    • 태그 함수 (has_tag() and has_tag_value()): 와 두 곳 모두 WHENMATCH COLUMNS에서 지원합니다. 에서 사용 WHEN될 때는 테이블에 직접 설정된 태그나 부모 카탈로그 또는 스키마에서 상속된 태그를 확인합니다. 사용되는 경우 열에 MATCH COLUMNS직접 설정된 태그만 확인합니다. 이전 camelCase 양식(hasTag, hasTagValue)은 이전 버전과의 호환성을 위해 계속 작동합니다.
    • 식별 속성 함수 (has_identity_attribute_value()has_identity_attribute_tag_match()): 컬럼 마스크 정책의 절에서 WHEN 지원되며, 쿼리를 실행하는 사용자의 식별 속성을 평가합니다. 정책이나 정책에서는 지원 GRANTDENYMATCH COLUMNS받지 않습니다. 쿼리 사용자의 속성에 기반한 열을 가리기 항목을 참조하세요.
    • 맥락 속성 함수 (has_context_attribute()has_context_attribute_value()): 행 필터와 컬럼 마스크 정책의 절에서 WHEN 지원되며, 호출 애플리케이션과 같이 요청의 맥락을 평가합니다. 이 카드들은 지원 MATCH COLUMNS되지 않습니다. 사용자를 대신해 행동하는 외부 에이전트의 접근 제한을 참조하세요.

    조건이 잘못된 경우 Azure Databricks는 UC_INVALID_POLICY_CONDITION 발생합니다.

  • alias

    에서 MATCH COLUMNS일치하는 열에 대한 선택적 식별자입니다 . 별칭은 (행 필터) 또는 열 마스크에서 USING COLUMNSON COLUMN 참조 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 has_tag('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 has_tag_value('sensitivity', 'high')
    MATCH COLUMNS has_tag('geo_region') AS region
    USING COLUMNS (region);