CREA POLITICA

Si applica a:selezionato con sì Databricks SQL selezionato con sì Databricks Runtime 16.4 e versioni successive selezionato con sì solo per Unity Catalog

Crea un criterio denominato in un'entità a protezione diretta. I criteri possono essere filtri di riga o maschere di colonna applicati a cataloghi, schemi o tabelle. Il nome del criterio ha come ambito l'entità a protezione diretta in cui è definito il criterio.

Per eseguire questa istruzione, è necessario avere il MANAGE privilegio per l'entità a protezione diretta di destinazione o essere il proprietario.

Sintassi

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

Parametri

  • policy_name

    Nome dei criteri. Il nome ha come ambito l'entità a protezione diretta in cui è definito il criterio. Se esiste già un criterio con lo stesso nome e OR REPLACE non viene specificato, Azure Databricks genera POLICY_ALREADY_EXISTS.

  • catalog_name

    Nome del catalogo in cui è definito il criterio. Se il tipo a protezione diretta non è supportato per i criteri, Azure Databricks genera POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    Nome dello schema in cui è definito il criterio.

  • table_name

    Nome della tabella in cui è definito il criterio.

  • descrizione

    Commento stringa facoltativo per il criterio.

  • function_name

    Nome della funzione definita dall'utente utilizzata per il filtro di riga o la maschera di colonna.

  • principal

    Un utente, un gruppo o un nome di entità servizio. È possibile elencare più entità dopo TO. Le entità elencate dopo EXCEPT vengono escluse dai criteri.

  • Condizione

    WHEN è un'espressione booleana che determina se la policy si applica, basandosi sui tag del securable, sugli attributi di identità dell'utente che fa la query e/o sul contesto della richiesta.

    MATCH COLUMNS è un'espressione booleana che corrisponde alle colonne in base ai loro tag (ad esempio, has_tag('pii')).

    Le condizioni sono valutate dal piano di controllo. Le seguenti funzioni sono supportate in condizioni:

    • Funzioni tag (has_tag() e has_tag_value()): supportate sia WHEN in .MATCH COLUMNS Quando usati in WHEN, controllano i tag impostati direttamente sulla tabella o ereditati da un catalogo o schema genitore. Se usato in MATCH COLUMNS, controllano i tag impostati direttamente sulla colonna. I formati camelCase precedenti (hasTag, hasTagValue) continuano a funzionare per garantire la compatibilità con le versioni precedenti.
    • Funzioni di attributo identità (has_identity_attribute_value() e has_identity_attribute_tag_match()): supportate nella WHEN clausola delle policy di maschera a colonna, dove valutano gli attributi identità dell'utente che esegue la query. Non sono supportate in GRANT politiche DENY o in MATCH COLUMNS. Vedi Mascherare una colonna basata sugli attributi dell'utente che fa la query.
    • Funzioni di attributo di contesto (has_context_attribute() e has_context_attribute_value()): supportate nella WHEN clausola di policy di filtro riga e maschera a colonna, dove valutano il contesto della richiesta, come l'applicazione chiamante. Non sono supportati in MATCH COLUMNS. Vedi Restringire l'accesso per agenti esterni che agiscono per conto di un utente.

    Se la condizione non è valida, Azure Databricks genera UC_INVALID_POLICY_CONDITION.

  • alias

    In MATCH COLUMNSun identificatore facoltativo per la colonna corrispondente. È possibile fare riferimento all'alias in USING COLUMNS (filtro di riga) o in ON COLUMN e USING COLUMNS (maschera di colonna).

  • function_arg

    In USING COLUMNSogni argomento è un'espressione costante o un alias di MATCH COLUMNS. Gli argomenti vengono passati alla funzione di criteri in ordine. Se le opzioni non corrispondono al tipo di criterio, Azure Databricks genera UC_POLICY_TYPE_OPTIONS_MISMATCH.

Examples

Nell'esempio seguente viene creato un criterio della maschera di colonna:

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

Nell'esempio seguente viene creato un criterio di filtro di riga:

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