적용 대상:
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나열된 보안 주체는 정책에서 제외됩니다.-
For
WHEN: 보안 개체와 일치하는 부울 식(예: 테이블 수준 태그 조건)입니다. ForMATCH 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);