CRÉER UNE POLITIQUE

S’applique à :coche marqué oui Databricks SQL coche marqué oui Databricks Runtime 16.4 et versions ultérieures coche marqué oui Unity Catalog uniquement

Crée une stratégie nommée sur un élément sécurisable. Les politiques peuvent être des filtres à lignes, des masques à colonnes ou des politiques ABACGRANT. Les filtres de lignes et les masques de colonnes sont appliqués aux catalogues, schémas ou tableaux, et sont disponibles sur Databricks Runtime 16.4 et versions ultérieures. Les politiques ABAC GRANT sont appliquées aux catalogues ou schémas, et accordent dynamiquement des privilèges sur les valeurs sécurisées qu’elles ciblent. Le nom de la stratégie est limité à l’élément sécurisable sur lequel la stratégie est définie.

Pour exécuter cette instruction, vous devez disposer du MANAGE privilège sur la cible sécurisable ou être son propriétaire.

La création, la modification ou la suppression d’une politique ABAC GRANT avec SQL nécessite Databricks Runtime 18 LTS ou plus. Sur les entrepôts SQL, le support dépend du canal de publication de l’entrepôt. Consultez la configuration requise pour le calcul.

Note

Databricks Runtime 18 est plus récent que Databricks Runtime 18.0, 18.1 et 18.2. Les fonctionnalités qui auraient auparavant été publiées dans une version ultérieure numérotée sont désormais publiées sous forme de mises à jour datées de Databricks Runtime 18. Pour plus d’informations, consultez À propos des notes de publication unifiées.

Syntaxe

CREATE [ OR REPLACE ] POLICY policy_name
ON { 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 ]

Les politiques de filtre de ligne et de masque de colonne peuvent être définies sur un catalogue, un schéma ou une table. GRANT Les politiques peuvent être définies uniquement sur un catalogue ou un schéma.

Paramètres

  • policy_name

    Nom de la stratégie. Le nom est limité à l’élément sécurisable sur lequel la stratégie est définie. Si une stratégie portant le même nom existe déjà et OR REPLACE n’est pas spécifiée, Azure Databricks déclenche POLICY_ALREADY_EXISTS.

  • catalog_name

    Nom du catalogue sur lequel la stratégie est définie. Si le type sécurisable n’est pas pris en charge pour les stratégies, Azure Databricks déclenche POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    Nom du schéma sur lequel la stratégie est définie.

  • table_name

    Nom de la table sur laquelle la stratégie est définie.

  • description

    Commentaire de chaîne facultatif pour la stratégie.

  • function_name

    Nom de la fonction UDF utilisée pour le filtre de ligne ou le masque de colonne.

  • privilege

    Dans grant_policy_body, un privilège à accorder à chaque valeur garantie correspondant à la police. Les privilèges valides dépendent de grant_target_type. Voir Types et privilèges sécurisés supportés.

  • grant_target_type

    Dans grant_policy_body, le type de sécurisant auquel s’appliquent les privilèges accordés. Utilisez la forme plurielle : MODELS, MODEL SERVICES, MODEL PROVIDER SERVICES, MCP SERVICES, ou AGENT SERVICES. La forme soulignée, telle que MODEL_SERVICES, est également acceptée. Les formes singulières ne sont pas acceptées.

  • principal

    Nom d’utilisateur, de groupe ou de principal de service. Plusieurs principaux peuvent être répertoriés après TO. Les principaux répertoriés après EXCEPT sont exclus de la stratégie.

  • Condition

    WHEN est une expression booléenne qui détermine si la politique s’applique, en fonction des tags du sécurisé, des attributs d’identité de l’utilisateur interrogé, et/ou du contexte de la requête.

    MATCH COLUMNS est une expression booléenne qui correspond aux colonnes en fonction de leurs balises (par exemple, has_tag('pii')).

    Les conditions sont évaluées par le plan de commande. Les fonctions suivantes sont prises en charge dans des conditions :

    • Fonctions de balise (has_tag() et has_tag_value()) : supportées à la fois WHEN dans et MATCH COLUMNS. Lorsqu’elles sont utilisées dans WHEN, elles vérifient les tags posés directement sur la table ou hérités d’un catalogue ou schéma parent. Lorsqu’elles sont utilisées, MATCH COLUMNSelles vérifient les balises définies directement sur la colonne uniquement. Les anciennes formes camelCase (hasTag, hasTagValue) continuent de fonctionner pour la compatibilité descendante.
    • Fonctions d’attribut d’identité (has_identity_attribute_value() et has_identity_attribute_tag_match()) : prises en charge dans la WHEN clause des politiques de masque de colonne, où elles évaluent les attributs d’identité de l’utilisateur effectuant la requête. Ils ne sont pas soutenus dans GRANT les politiques DENY ou dans MATCH COLUMNS. Voir Masquer, une colonne basée sur les attributs de l’utilisateur interrogé.
    • Fonctions d’attribut de contexte (has_context_attribute() et has_context_attribute_value()) : prises en charge dans la WHEN clause de filtre de ligne et de politiques de masque de colonne, où elles évaluent le contexte de la requête, comme l’application appelante. Ils ne sont pas pris en charge dans MATCH COLUMNS. Voir Restreindre l’accès pour les agents externes agissant au nom d’un utilisateur.

    Si la condition n’est pas valide, Azure Databricks déclenche UC_INVALID_POLICY_CONDITION.

  • alias

    Dans MATCH COLUMNS, identificateur facultatif pour la colonne correspondante. L’alias peut être référencé dans USING COLUMNS (filtre de lignes) ou dans ON COLUMN et USING COLUMNS (masque de colonne).

  • function_arg

    Dans USING COLUMNS, chaque argument est une expression constante ou un alias de MATCH COLUMNS. Les arguments sont passés à la fonction de stratégie dans l’ordre. Si les options ne correspondent pas au type de stratégie, Azure Databricks déclenche UC_POLICY_TYPE_OPTIONS_MISMATCH.

Exemples

L’exemple suivant crée une stratégie de masque de colonne :

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

L’exemple suivant crée une stratégie de filtre de lignes :

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

L’exemple suivant crée une politique ABAC GRANT qui accorde EXECUTE à chaque service modèle créé par 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');