Condividi tramite


CREATE POLICY

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

    Per WHEN: un'espressione booleana che corrisponde a entità a protezione diretta (ad esempio, condizioni di tag a livello di tabella). Per MATCH COLUMNS: un'espressione booleana che corrisponde alle colonne , ad esempio hasTag('tag_name'). Le condizioni vengono valutate dal piano di controllo sui metadati a protezione diretta. Le uniche funzioni rivolte all'utente supportate nelle condizioni sono hasTag() e hasTagValue(). 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 hasTag('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 hasTagValue('sensitivity', 'high')
    MATCH COLUMNS hasTag('geo_region') AS region
    USING COLUMNS (region);