共用方式為


建立政策

適用於:標記為 是 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('tag_name'))。 控制平面會根據可保護的元資料評估條件。 條件中唯一支援使用者的函數為 has_tag()has_tag_value()has_column_tag()has_column_tag_value()和 。 較舊的 camelCase 形式(hasTaghasTagValuehasColumnTaghasColumnTagValue) 仍能維持向下相容性。 如果條件無效,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

Examples

以下範例建立欄位遮罩策略:

> 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);