建立政策

適用於:標記為 是 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()has_tag_value()): 在 和 MATCH COLUMNS中都支援WHEN。 在 中使用 WHEN時,它們會檢查直接放在表格上的標籤,或是從父目錄或結構繼承的標籤。 在 中 MATCH COLUMNS使用時,它們只檢查直接設定在欄位上的標籤。 舊的 camelCase 形式(hasTaghasTagValue)仍可向下相容。
    • 身份屬性函式( 和has_identity_attribute_value()has_identity_attribute_tag_match()):在WHEN欄位遮罩政策的條款中得到支援,該功能會評估執行查詢的使用者的身份屬性。 這些問題在政策DENYMATCH COLUMNSGRANT 請參閱 「根據查詢使用者的屬性遮罩欄位」。
    • 上下文屬性函式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

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