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

    WHEN är ett booleskt uttryck som avgör om policyn gäller, baserat på securablens taggar, användarens identitetsattribut och/eller förfrågarens kontext.

    MATCH COLUMNS är ett boolesk uttryck som matchar kolumner baserat på deras taggar (till exempel has_tag('pii')).

    Förhållandena utvärderas av kontrollplanet. Följande funktioner stöds under villkor:

    • Taggfunktionerna (has_tag() och has_tag_value()): stöds i både WHEN och MATCH COLUMNS. När de används i WHEN, kontrollerar de taggar som satts direkt på tabellen eller ärvts från en föräldrakatalog eller schema. När de används i MATCH COLUMNSkontrollerar de taggar som angetts direkt i kolumnen. De äldre camelCase-formulären (hasTag, hasTagValue) fortsätter att fungera för bakåtkompatibilitet.
    • Identitetsattributfunktioner (has_identity_attribute_value() och has_identity_attribute_tag_match()): stöds i klausulen WHEN om kolumnmaskpolicys, där de utvärderar identitetsattributen för användaren som kör frågan. De stöds inte i GRANT eller DENY policys eller i MATCH COLUMNS. Se Maskera en kolumn baserad på attribut hos den sökande användaren.
    • Kontextattributfunktioner (has_context_attribute() och has_context_attribute_value()): stöds i WHEN klausulen om radfilter- och kolumnmaskpolicys, där de utvärderar kontexten för begäran, såsom den anropande applikationen. De stöds inte i MATCH COLUMNS. Se Begränsa åtkomst för externa agenter som agerar på uppdrag av en användare.

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