적용 대상:
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 [, ...] ) ]
매개 변수
-
정책의 이름입니다. 이름은 정책이 정의된 보안 개체로 범위가 지정됩니다. 이름이 같은 정책이 이미 있고
OR REPLACE지정되지 않은 경우 Azure Databricks는 POLICY_ALREADY_EXISTS 발생합니다. -
정책이 정의된 카탈로그의 이름입니다. 보안 형식이 정책에 대해 지원되지 않는 경우 Azure Databricks는 POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED 발생합니다.
-
정책이 정의된 스키마의 이름입니다.
-
정책이 정의된 테이블의 이름입니다.
묘사
정책에 대한 선택적 문자열 주석입니다.
-
행 필터 또는 열 마스크에 사용되는 UDF의 이름입니다.
principal
사용자, 그룹 또는 서비스 주체 이름입니다. 이후 여러 보안 주체를
TO나열할 수 있습니다. 이후에EXCEPT나열된 보안 주체는 정책에서 제외됩니다.-
WHEN는 보안 대상 태그, 쿼리 사용자의 신원 속성, 그리고/또는 요청의 맥락을 바탕으로 정책이 적용되는지 여부를 결정하는 불리언 표현식입니다.MATCH COLUMNS는 태그를 기반으로 열을 매칭하는 불리언 표현식입니다(예:has_tag('pii')).조건은 제어 평면에서 평가됩니다. 다음 기능들이 조건에서 지원됩니다:
-
태그 함수 (
has_tag()andhas_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);