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. Le policy possono essere filtri riga, maschere a colonna o policy ABACGRANT. I filtri per righe e le maschere a colonna sono applicati a cataloghi, schemi o tabelle, e sono disponibili su Databricks Runtime 16.4 e superiori. Le politiche ABAC GRANT vengono applicate a cataloghi o schemi e concedono dinamicamente privilegi sui titoli che essi sono destinati. Puoi anche aggiungere una policy al metastore in modo che si applichi a tutti i cataloghi del metastore. Vedi le politiche ABAC a livello Metastore (Beta). 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. Per creare una policy ON METASTORE (Beta), devi essere un amministratore del metastore.

Creare, modificare o eliminare una policy DENY o policy ABAC GRANT (Beta) con SQL richiede Databricks Runtime 18 LTS o superiore. Nei SQL warehouse, il supporto dipende dal canale di rilascio del warehouse. Vedi i requisiti di calcolo per GRANT policy e DENY policy.

Creare, modificare o eliminare una policy a livello di metastore (Beta) con SQL richiede Databricks Runtime 19 o superiore. Vedere Requisiti di calcolo.

Note

Databricks Runtime 18 è più recente di Databricks Runtime 18.0, 18.1 e 18.2. Le funzionalità che in precedenza sarebbero state rilasciate come una successiva versione numerata ora vengono invece rilasciate sotto forma di aggiornamenti datati di Databricks Runtime 18. Per ulteriori dettagli, consulta Informazioni sulle note di rilascio unificate.

Sintassi

CREATE [ OR REPLACE ] POLICY policy_name
ON { METASTORE | CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[ COMMENT description ]
{ row_filter_body | column_mask_body | grant_policy_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 [, ...] ) ]

grant_policy_body
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  GRANT privilege [, ...]
  FOR grant_target_type
  [ WHEN condition ]

Le policy di filtro a riga e maschera a colonna possono essere definite su un metastore (Beta), catalogo, schema o tabella. GRANT Le politiche possono essere definite su un metastore, catalogo o schema. ON METASTORE Non prende nome e prende di mira il metastore in cui stai operando attualmente.

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.

  • privilegio

    In grant_policy_body, un privilegio da concedere su ogni garantia che corrisponda alla polizza. I privilegi validi dipendono da grant_target_type. Vedi Tipi e privilegi di sicurezza supportati.

  • grant_target_type

    In grant_policy_body, il tipo di garantible a cui si applicano i privilegi concessi. Usa la forma plurale: MODELS, MODEL SERVICES, MODEL PROVIDER SERVICES, MCP SERVICES, o AGENT SERVICES. La forma sottolineata, come MODEL_SERVICES, è accettata. Le forme singolari non sono accettate.

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

Il seguente esempio crea una politica ABAC GRANT che concede EXECUTE a ogni servizio modello creato da Anthropic:

> CREATE POLICY grant_anthropic_model_services
    ON SCHEMA system.ai
    COMMENT 'Grant EXECUTE on Anthropic model services'
    TO data_scientists
    EXCEPT contractors
    GRANT EXECUTE FOR MODEL SERVICES
    WHEN has_tag_value('ai.model_creator', 'anthropic');