Dela via


SKAPA PRINCIP

Gäller för:markerad som ja Databricks SQL markerad som ja Databricks Runtime 16.4 och senare markerad som ja Endast Unity Catalog

Skapar en namngiven princip för en skyddsbar princip. Principer kan vara radfilter eller kolumnmasker som tillämpas på kataloger, scheman eller tabeller. Principnamnet är begränsat till den skyddbara princip som principen definieras på.

Om du vill köra den här instruktionen måste du ha behörighet att MANAGE skydda målet eller vara dess ägare.

Syntax

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 [, ...] ) ]

Parameters

  • policy_name

    Namnet på principen. Namnet är begränsat till det skyddbara som principen definieras på. Om det redan finns en princip med samma namn och OR REPLACE inte har angetts, genererar Azure Databricks POLICY_ALREADY_EXISTS.

  • catalog_name

    Namnet på katalogen där principen definieras. Om den skyddsbara typen inte stöds för principer genererar Azure Databricks POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    Namnet på det schema som principen har definierats för.

  • table_name

    Namnet på den tabell där principen definieras.

  • beskrivning

    En valfri strängkommentering för principen.

  • function_name

    Namnet på den UDF som används för radfiltret eller kolumnmasken.

  • principal

    En användare, grupp eller tjänstens huvudnamn. Flera huvudkonton kan visas efter TO. Huvudkonton som anges efter EXCEPT undantas från principen.

  • Villkor

    För WHEN: ett booleskt uttryck som matchar skyddsbara objekt (till exempel taggvillkor på tabellnivå). För MATCH COLUMNS: ett booleskt uttryck som matchar kolumner (till exempel has_tag('tag_name')). Villkor utvärderas av kontrollplanet på säkra metadata. De enda användarinriktade funktioner som stöds under villkor är has_tag(), has_tag_value(), has_column_tag()och has_column_tag_value(). De äldre camelCase-formulären (hasTag, hasTagValue, hasColumnTag, hasColumnTagValue) fortsätter att fungera för bakåtkompatibilitet. Om villkoret är ogiltigt genererar Azure Databricks UC_INVALID_POLICY_CONDITION.

  • alias

    I MATCH COLUMNS, en valfri identifierare för den matchade kolumnen. Aliaset kan refereras i USING COLUMNS (radfilter) eller i ON COLUMN och USING COLUMNS (kolumnmask).

  • function_arg

    I USING COLUMNSär varje argument antingen ett konstant uttryck eller ett alias från MATCH COLUMNS. Argumenten skickas till principfunktionen i ordning. Om alternativen inte matchar principtypen genererar Azure Databricks UC_POLICY_TYPE_OPTIONS_MISMATCH.

Exempel

I följande exempel skapas en kolumnmaskprincip:

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

I följande exempel skapas en radfilterprincip:

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