Aller au contenu principal

Référence de politique de compute

remarque

Cette page utilise des exemples JSON de définitions de politique. Vous pouvez définir une politique à l'aide de JSON, ou utiliser l'interface utilisateur de politique de compute pour configurer les définitions de politique à l'aide de menus déroulants et d'autres éléments d'interface utilisateur.

Cette page est une référence pour les définitions de politique de compute, y compris une liste des attributs de politique disponibles et des types de limitation. Il existe également des exemples de politiques auxquels vous pouvez vous référer pour les cas d'utilisation courants.

Que sont les définitions de politique ?

Les définitions de politique sont des règles de politique individuelles exprimées en JSON.

Une définition peut ajouter une règle à l'un des attributs contrôlés avec l'API Clusters. Par exemple, ces définitions définissent un temps d'autoterminaison default, interdisent aux utilisateurs d'utiliser des Pools et imposent l'utilisation de Photon :

JSON
{
"autotermination_minutes": {
"type": "unlimited",
"defaultValue": 4320,
"isOptional": true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"runtime_engine": {
"type": "fixed",
"value": "PHOTON",
"hidden": true
}
}

Il ne peut y avoir qu'une seule limitation par attribut. Le chemin d'un attribut reflète le nom d'attribut de l'API. Pour les attributs imbriqués, le chemin concatène les noms d'attributs imbriqués en utilisant des points. Les attributs qui ne sont pas définis dans une définition de politique ne seront pas limités.

Configurer les définitions de politique à l'aide des éléments d'interface utilisateur

Le formulaire de politique vous permet de configurer des définitions de politique à l’aide de menus déroulants et d’autres éléments de l’interface utilisateur. Cela signifie que les administrateurs peuvent rédiger des politiques sans avoir à apprendre ou à se référer à la syntaxe de la politique.

Le formulaire prend également en charge la modification de la définition complète de la politique directement au format JSON. Pour modifier le JSON :

  • Cliquez sur le bouton Modifier la définition en JSON dans la section Définition > Options avancées pour ouvrir un éditeur JSON.
  • Cliquez sur l'onglet JSON pour afficher le JSON de définition. Depuis cette tab, vous pouvez également cliquer sur Modifier la définition en JSON pour ouvrir l'éditeur.

De plus, des règles JSON individuelles peuvent être ajoutées au champ **JSON personnalisé** sous **Options avancées**.

Nouveau formulaire de politique de compute

Limitations connues lors de l'utilisation du nouveau formulaire de politique

Si une politique n’est pas prise en charge par le nouveau formulaire de politique de compute, toutes les définitions incompatibles apparaîtront dans le champ JSON personnalisé de la section Options avancées . Pour les champs ci-dessous, seul un sous-ensemble de stratégies valides est pris en charge :

  • workload_type : La politique doit définir workload_type.clients.notebooks et workload_type.clients.jobs. Chacune de ces règles doit être fixée à true ou false.
  • dbus_per_hour : Seules les politiques de plage qui spécifient maxValue et ne spécifient pas minValue sont prises en charge.
  • ssh_public_keys : Seules les politiques fixes sont prises en charge. Les politiques ssh_public_keys ne doivent ignorer aucun index. Par exemple, ssh_public_keys.0, ssh_public_keys.1, ssh_public_keys.2 sont valides, mais ssh_public_keys.0, ssh_public_keys.2, ssh_public_keys.3 ne le sont pas.
  • cluster_log_conf : Le cluster_log_conf.path ne peut pas être une liste d'autorisation ou une liste de blocage.
  • init_scripts : les politiques indexées (c'est-à-dire init_scripts.0.volumes.destination) doivent être fixes. Les politiques avec caractères génériques (c'est-à-dire init_scripts.*.volumes.destination) doivent être interdites. Les politiques indexées ne doivent ignorer aucun index.

Attributs pris en charge

Les stratégies prennent en charge tous les attributs contrôlés avec l'API Clusters. Le type de restrictions que vous pouvez appliquer aux attributs peut varier selon le paramètre en fonction de leur type et de leur relation avec les éléments de l'interface utilisateur. Vous ne pouvez pas utiliser de politiques pour définir les autorisations de compute.

Vous pouvez également utiliser des stratégies pour définir le nombre maximal de DBU par heure et le type de clusters. Voir chemins d'attributs virtuels.

Le tableau suivant répertorie les chemins d'attributs de stratégie pris en charge :

Chemin d'attribut

Type

Description

autoscale.max_workers

nombre facultatif

Une fois masqué, supprime le champ de nombre maximal de Worker de l'interface utilisateur.

autoscale.min_workers

nombre facultatif

Lorsqu'il est masqué, le champ du nombre minimum de Worker est supprimé de l'interface utilisateur.

autotermination_minutes

Nombre

Une valeur de 0 signifie qu'il n'y a pas d'arrêt automatique. Lorsque masqué, supprime la case d'arrêt automatique et la saisie de valeur de l'interface utilisateur.

aws_attributes.availability

chaîne

Contrôle la disponibilité AWS (SPOT, ON_DEMAND ou SPOT_WITH_FALLBACK)

aws_attributes.ebs_volume_count

Nombre

Le nombre de volumes AWS EBS.

aws_attributes.ebs_volume_size

Nombre

La taille (en GiB) des volumes EBS AWS.

aws_attributes.ebs_volume_type

chaîne

Le type de volumes AWS EBS.

aws_attributes.first_on_demand

Nombre

Contrôle le nombre de nœuds de clusters qui utilisent des instances à la demande, en commençant par le nœud Driver. Par exemple, une valeur de 1 définit le nœud Driver comme à la demande. Une valeur de 2 définit le nœud Driver et un nœud Worker sur la demande.

aws_attributes.instance_profile_arn

chaîne

Contrôle le profil d'instance AWS.

aws_attributes.spot_bid_price_percent

Nombre

Contrôle le prix maximum pour les instances ponctuelles AWS.

aws_attributes.zone_id

chaîne

Contrôle l'ID de zone AWS.

cluster_log_conf.path

chaîne

L'URL de destination des fichiers Logs.

cluster_log_conf.region

chaîne

La Région de l'emplacement S3.

cluster_log_conf.type

S3, VOLUMES, DBFS, ou AUCUN

Le type de destination des Logs.

cluster_name

chaîne

Le nom du cluster.

custom_tags.*

chaîne

Contrôle les valeurs de tags spécifiques en ajoutant le nom du tag, par exemple : custom_tags.<mytag>.

data_security_mode

chaîne

Définit le mode d'accès du cluster. Unity Catalog nécessite SINGLE_USER ou USER_ISOLATION (mode d'accès Standard dans l'interface utilisateur). Une valeur de NONE signifie qu'aucune fonctionnalité de sécurité n'est activée.

docker_image.basic_auth.password

chaîne

Le mot de passe pour l'authentification de base de l'image Databricks Container Services.

docker_image.basic_auth.username

chaîne

Le nom d'utilisateur pour l'authentification de base de l'image Databricks Container Services.

docker_image.url

chaîne

Contrôle l'URL de l'image Databricks Container Services. Lorsqu'elle est masquée, supprime la section Databricks Container Services de l'interface utilisateur.

driver_node_type_id

chaîne facultative

Lorsqu'elle est masquée, supprime la sélection du type de nœud du Driver de l'interface utilisateur.

driver_node_type_flexibility.alternate_node_type_ids

chaîne

Spécifie les types de nœuds alternatifs pour le nœud Driver. Seules les politiques fixes sont prises en charge. Voir Types de nœuds flexibles.

enable_elastic_disk

booléen

Lorsque masqué, supprime la case à cocher **Activer le dimensionnement automatique du stockage local** de l'interface utilisateur.

enable_local_disk_encryption

booléen

Définissez à true pour activer, ou false pour désactiver, le chiffrement des disques attachés localement au cluster (tel que spécifié via l'API).

init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.s3.destination init_scripts.*.file.destination init_scripts.*.s3.region

chaîne

* fait référence à l'index du script d'initialisation dans le tableau d'attributs. Consultez Politiques de rédaction pour les attributs de tableau.

instance_pool_id

chaîne

Contrôle le Pool utilisé par les nœuds Worker si driver_instance_pool_id est également défini, ou pour tous les nœuds de clusters dans le cas contraire. Si vous utilisez des Pools pour les nœuds Worker, vous devez également utiliser des Pools pour le nœud Driver. Une fois masqué, supprime la sélection du Pool de l'interface utilisateur.

is_single_node

booléen

Lorsque la valeur est définie sur true, le compute doit être à nœud unique. Cet attribut n'est pris en charge que lorsque l'utilisateur utilise le formulaire simple.

driver_instance_pool_id

chaîne

Si spécifié, configure un Pool différent pour le nœud Driver que pour les nœuds Worker. Si non spécifié, hérite de instance_pool_id. Si vous utilisez des pools pour les nœuds Worker, vous devez également utiliser des pools pour le nœud Driver. Lorsqu'il est masqué, supprime la sélection du pool de Driver de l'interface utilisateur.

node_type_id

chaîne

Une fois masqué, supprime la sélection du type de nœud worker de l'interface utilisateur.

worker_node_type_flexibility.alternate_node_type_ids

chaîne

Spécifie les types de nœuds alternatifs pour les nœuds worker. Seules les politiques fixes sont prises en charge. Voir Types de nœuds flexibles.

num_workers

nombre facultatif

Une fois masqué, supprime la spécification du nombre de Worker de l'interface utilisateur.

runtime_engine

chaîne

Détermine si le cluster utilise Photon ou non. Les valeurs possibles sont PHOTON ou STANDARD.

single_user_name

chaîne

Contrôle quels utilisateurs ou groupes peuvent être attribués à la ressource de compute.

spark_conf.*

chaîne facultative

Contrôlez les valeurs de configuration spécifiques en ajoutant le nom de la clé de configuration. Par exemple, spark_conf.spark.executor.memory.

spark_env_vars.*

chaîne facultative

Contrôlez les valeurs de variables d'environnement Spark spécifiques en ajoutant la variable d'environnement, par exemple : spark_env_vars.<environment variable name>.

spark_version

chaîne

Le nom de la version de l'image Spark, tel que spécifié via l'API (le Databricks Runtime). Vous pouvez également utiliser des valeurs de stratégie spéciales qui sélectionnent dynamiquement le Databricks Runtime. Reportez-vous à Valeurs de politique spéciales pour la sélection de Databricks Runtime.

ssh_public_keys.*

chaîne

* fait référence à l'index de la clé publique dans le tableau d'attributs. Consultez Politiques de rédaction pour les attributs de tableau.

use_ml_runtime

booléen

Contrôle si une version ML du Databricks Runtime doit être utilisée. Cet attribut n'est pris en charge que lorsque l'utilisateur utilise le formulaire simple.

workload_type.clients.jobs

booléen

Définit si la ressource de compute peut être utilisée pour les Jobs. Voir empêcher le compute d'être utilisé avec les jobs.

workload_type.clients.notebooks

booléen

Définit si la ressource de compute peut être utilisée avec des Notebooks. Voir empêcher le compute d'être utilisé avec les jobs.

Chemin d'attribut

Type

Description

autoscale.max_workers

nombre facultatif

Une fois masqué, supprime le champ de nombre maximal de Worker de l'interface utilisateur.

autoscale.min_workers

nombre facultatif

Lorsqu'il est masqué, le champ du nombre minimum de Worker est supprimé de l'interface utilisateur.

autotermination_minutes

Nombre

Une valeur de 0 signifie qu'il n'y a pas d'arrêt automatique. Lorsque masqué, supprime la case d'arrêt automatique et la saisie de valeur de l'interface utilisateur.

aws_attributes.availability

chaîne

Contrôle la disponibilité AWS (SPOT, ON_DEMAND ou SPOT_WITH_FALLBACK)

aws_attributes.ebs_volume_count

Nombre

Le nombre de volumes AWS EBS.

aws_attributes.ebs_volume_size

Nombre

La taille (en GiB) des volumes EBS AWS.

aws_attributes.ebs_volume_type

chaîne

Le type de volumes AWS EBS.

aws_attributes.first_on_demand

Nombre

Contrôle le nombre de nœuds de clusters qui utilisent des instances à la demande, en commençant par le nœud Driver. Par exemple, une valeur de 1 définit le nœud Driver comme à la demande. Une valeur de 2 définit le nœud Driver et un nœud Worker sur la demande.

aws_attributes.instance_profile_arn

chaîne

Contrôle le profil d'instance AWS.

aws_attributes.spot_bid_price_percent

Nombre

Contrôle le prix maximum pour les instances ponctuelles AWS.

aws_attributes.zone_id

chaîne

Contrôle l'ID de zone AWS.

cluster_log_conf.path

chaîne

L'URL de destination des fichiers Logs.

cluster_log_conf.region

chaîne

La Région de l'emplacement S3.

cluster_log_conf.type

S3, VOLUMES, DBFS, ou AUCUN

Le type de destination des Logs.

cluster_name

chaîne

Le nom du cluster.

custom_tags.*

chaîne

Contrôle les valeurs de tags spécifiques en ajoutant le nom du tag, par exemple : custom_tags.<mytag>.

data_security_mode

chaîne

Définit le mode d'accès du cluster. Unity Catalog nécessite SINGLE_USER ou USER_ISOLATION (mode d'accès Standard dans l'interface utilisateur). Une valeur de NONE signifie qu'aucune fonctionnalité de sécurité n'est activée.

docker_image.basic_auth.password

chaîne

Le mot de passe pour l'authentification de base de l'image Databricks Container Services.

docker_image.basic_auth.username

chaîne

Le nom d'utilisateur pour l'authentification de base de l'image Databricks Container Services.

docker_image.url

chaîne

Contrôle l'URL de l'image Databricks Container Services. Lorsqu'elle est masquée, supprime la section Databricks Container Services de l'interface utilisateur.

driver_node_type_id

chaîne facultative

Lorsqu'elle est masquée, supprime la sélection du type de nœud du Driver de l'interface utilisateur.

driver_node_type_flexibility.alternate_node_type_ids

chaîne

Spécifie les types de nœuds alternatifs pour le nœud Driver. Seules les politiques fixes sont prises en charge. Voir Types de nœuds flexibles.

enable_elastic_disk

booléen

Lorsque masqué, supprime la case à cocher **Activer le dimensionnement automatique du stockage local** de l'interface utilisateur.

enable_local_disk_encryption

booléen

Définissez à true pour activer, ou false pour désactiver, le chiffrement des disques attachés localement au cluster (tel que spécifié via l'API).

init_scripts.*.workspace.destination init_scripts.*.volumes.destination init_scripts.*.s3.destination init_scripts.*.file.destination init_scripts.*.s3.region

chaîne

* fait référence à l'index du script d'initialisation dans le tableau d'attributs. Consultez Politiques de rédaction pour les attributs de tableau.

instance_pool_id

chaîne

Contrôle le Pool utilisé par les nœuds Worker si driver_instance_pool_id est également défini, ou pour tous les nœuds de clusters dans le cas contraire. Si vous utilisez des Pools pour les nœuds Worker, vous devez également utiliser des Pools pour le nœud Driver. Une fois masqué, supprime la sélection du Pool de l'interface utilisateur.

is_single_node

booléen

Lorsque la valeur est définie sur true, le compute doit être à nœud unique. Cet attribut n'est pris en charge que lorsque l'utilisateur utilise le formulaire simple.

driver_instance_pool_id

chaîne

Si spécifié, configure un Pool différent pour le nœud Driver que pour les nœuds Worker. Si non spécifié, hérite de instance_pool_id. Si vous utilisez des pools pour les nœuds Worker, vous devez également utiliser des pools pour le nœud Driver. Lorsqu'il est masqué, supprime la sélection du pool de Driver de l'interface utilisateur.

node_type_id

chaîne

Une fois masqué, supprime la sélection du type de nœud worker de l'interface utilisateur.

worker_node_type_flexibility.alternate_node_type_ids

chaîne

Spécifie les types de nœuds alternatifs pour les nœuds worker. Seules les politiques fixes sont prises en charge. Voir Types de nœuds flexibles.

num_workers

nombre facultatif

Une fois masqué, supprime la spécification du nombre de Worker de l'interface utilisateur.

runtime_engine

chaîne

Détermine si le cluster utilise Photon ou non. Les valeurs possibles sont PHOTON ou STANDARD.

single_user_name

chaîne

Contrôle quels utilisateurs ou groupes peuvent être attribués à la ressource de compute.

spark_conf.*

chaîne facultative

Contrôlez les valeurs de configuration spécifiques en ajoutant le nom de la clé de configuration. Par exemple, spark_conf.spark.executor.memory.

spark_env_vars.*

chaîne facultative

Contrôlez les valeurs de variables d'environnement Spark spécifiques en ajoutant la variable d'environnement, par exemple : spark_env_vars.<environment variable name>.

spark_version

chaîne

Le nom de la version de l'image Spark, tel que spécifié via l'API (le Databricks Runtime). Vous pouvez également utiliser des valeurs de stratégie spéciales qui sélectionnent dynamiquement le Databricks Runtime. Reportez-vous à Valeurs de politique spéciales pour la sélection de Databricks Runtime.

ssh_public_keys.*

chaîne

* fait référence à l'index de la clé publique dans le tableau d'attributs. Consultez Politiques de rédaction pour les attributs de tableau.

use_ml_runtime

booléen

Contrôle si une version ML du Databricks Runtime doit être utilisée. Cet attribut n'est pris en charge que lorsque l'utilisateur utilise le formulaire simple.

workload_type.clients.jobs

booléen

Définit si la ressource de compute peut être utilisée pour les Jobs. Voir empêcher le compute d'être utilisé avec les jobs.

workload_type.clients.notebooks

booléen

Définit si la ressource de compute peut être utilisée avec des Notebooks. Voir empêcher le compute d'être utilisé avec les jobs.

Chemins d'attributs virtuels

Cette table inclut deux attributs synthétiques supplémentaires pris en charge par les stratégies. Si vous utilisez le nouveau formulaire de politique, ces attributs peuvent être définis dans la section Options avancées .

Chemin d'attribut

Type

Description

dbus_per_hour

Nombre

Attribut calculé représentant le nombre maximal de DBU qu'une ressource peut utiliser par heure, y compris le nœud driver. Cette métrique est un moyen direct de contrôler les coûts au niveau individuel du compute. Utiliser avec limitation de plage.

cluster_type

chaîne

Représente le type de cluster qui peut être créé :

  • all-purpose pour le compute multifonction Databricks
  • job pour le compute de job créé par le planificateur de jobs
  • dlt pour le compute créé pour les Lakeflow pipelines

Autoriser ou bloquer les types de compute spécifiés qui peuvent être créés à partir de la politique. Si la valeur all-purpose n'est pas autorisée, la politique ne s'affiche pas dans l'interface utilisateur de création de compute polyvalent. Si la valeur job n'est pas autorisée, la politique ne s'affiche pas dans l'interface utilisateur de création de compute de Job.

Chemin d'attribut

Type

Description

dbus_per_hour

Nombre

Attribut calculé représentant le nombre maximal de DBU qu'une ressource peut utiliser par heure, y compris le nœud driver. Cette métrique est un moyen direct de contrôler les coûts au niveau individuel du compute. Utiliser avec limitation de plage.

cluster_type

chaîne

Représente le type de cluster qui peut être créé :

  • all-purpose pour le compute multifonction Databricks
  • job pour le compute de job créé par le planificateur de jobs
  • dlt pour le compute créé pour les Lakeflow pipelines

Autoriser ou bloquer les types de compute spécifiés qui peuvent être créés à partir de la politique. Si la valeur all-purpose n'est pas autorisée, la politique ne s'affiche pas dans l'interface utilisateur de création de compute polyvalent. Si la valeur job n'est pas autorisée, la politique ne s'affiche pas dans l'interface utilisateur de création de compute de Job.

Types de nœuds flexibles

Les attributs des types de nœuds flexibles vous permettent de spécifier des types de nœuds alternatifs que la ressource de compute peut utiliser si le type de nœud primaire n'est pas disponible. Ces attributs ont des exigences de stratégie spécifiques :

  • Seules les politiques fixes sont prises en charge. Tous les autres types de politique ne sont pas autorisés et seront rejetés au moment de la création de la politique.
  • Une chaîne vide dans la politique correspond à une liste vide de types de nœuds alternatifs, désactivant effectivement les types de nœuds flexibles.

Correction à une liste spécifique de types de nœuds

Contrairement aux champs d'API de clusters correspondants qui utilisent un tableau de chaînes, les attributs de politique de compute utilisent une seule valeur de chaîne qui encode le tableau de types de nœuds comme une liste séparée par des virgules. Par exemple :

JSON
{
"worker_node_type_flexibility.alternate_node_type_ids": {
"type": "fixed",
"value": "nodeA,nodeB"
}
}

Si vous utilisez l'API Clusters pour créer une ressource de compute avec une politique attribuée, Databricks recommande de ne pas définir les champs worker_node_type_flexibility ou driver_node_type_flexibility. Si vous définissez ces champs, les types de nœuds et l'ordre du tableau doivent correspondre exactement à la liste de la politique séparée par des virgules, sinon le compute ne peut pas être créé. Par exemple, la définition de politique ci-dessus serait définie comme suit :

JSON
"worker_node_type_flexibility": {
"alternate_node_type_ids": ["nodeA", "nodeB"]
}

Désactiver les types de nœuds flexibles

Pour désactiver les types de nœuds flexibles, définissez la valeur sur une chaîne vide. Par exemple :

JSON
{
"worker_node_type_flexibility.alternate_node_type_ids": {
"type": "fixed",
"value": ""
}
}

Valeurs de stratégie spéciales pour la sélection de Databricks Runtime

L'attribut spark_version prend en charge des valeurs spéciales qui mappent dynamiquement à une version de Databricks Runtime en fonction de l'ensemble actuel des versions de Databricks Runtime prises en charge.

Les valeurs suivantes peuvent être utilisées dans l'attribut spark_version :

  • auto:latest: Correspond à la dernière version GA de Databricks Runtime.
  • auto:latest-ml: Correspond à la dernière version de Databricks Runtime ML.
  • auto:latest-lts: correspond à la dernière version Databricks Runtime de support à long terme (LTS).
  • auto:latest-lts-ml: Correspond à la dernière version LTS de Databricks Runtime ML.
  • auto:prev-major: Correspond à l’avant-dernière version de Databricks Runtime de disponibilité générale. Par exemple, si auto:latest est 14,2, alors auto:prev-major est 13,3.
  • auto:prev-major-ml: Correspond à la deuxième version GA la plus récente de Databricks Runtime ML. Par exemple, si auto:latest est 14,2, alors auto:prev-major est 13,3.
  • auto:prev-lts: Correspond à la deuxième version LTS la plus récente de Databricks Runtime. Par exemple, si auto:latest-lts est 13,3, alors auto:prev-lts est 12,2.
  • auto:prev-lts-ml: Correspond à l'avant-dernière version LTS de Databricks Runtime ML. Par exemple, si auto:latest-lts est 13,3, alors auto:prev-lts est 12,2.
remarque

L'utilisation de ces valeurs n'entraîne pas la mise à jour automatique du compute lors de la publication d'une nouvelle version d'exécution. Un utilisateur doit explicitement modifier le compute pour que la version de Databricks Runtime change.

Types de politiques pris en charge

Cette section comprend une référence pour chacun des types de politiques disponibles. Il existe deux catégories de types de politiques : les politiques fixes et les politiques limitatives.

Les politiques fixes empêchent la configuration utilisateur sur un attribut. Les deux types de politiques fixes sont :

Les politiques de limitation limitent les options d'un utilisateur pour la configuration d'un attribut. Les stratégies de limitation vous permettent également de définir des valeurs par default et de rendre les attributs facultatifs. Voir Champs de politique de limitation supplémentaires.

Voici vos options pour limiter les politiques :

Politique fixe

Les politiques fixes limitent l'attribut à la valeur spécifiée. Pour les valeurs d'attribut autres que numériques et booléennes, la valeur doit être représentée par ou convertible en une chaîne de caractères.

Avec les politiques fixes, vous pouvez également masquer l'attribut de l'interface utilisateur en définissant le champ hidden sur true.

interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}

Cette politique d'exemple fixe la version de Databricks Runtime et masque le champ de l'interface utilisateur :

JSON
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}

Politique interdite

Une politique interdite empêche les utilisateurs de configurer un attribut. Les politiques interdites ne sont compatibles qu'avec les attributs facultatifs.

interface ForbiddenPolicy {
type: "forbidden";
}

Cette stratégie interdit d'attacher des pools au compute pour les nœuds worker. Les pools sont également interdits pour le nœud driver, car driver_instance_pool_id hérite de la stratégie.

JSON
{
"instance_pool_id": { "type": "forbidden" }
}

Politique de liste d'autorisation

Une politique de liste d'autorisation spécifie une liste de valeurs que l'utilisateur peut choisir lors de la configuration d'un attribut.

interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}

Cet exemple de liste blanche permet à l'utilisateur de choisir entre deux versions de Databricks Runtime :

JSON
{
"spark_version": { "type": "allowlist", "values": ["13.3.x-scala2.12", "12.2.x-scala2.12"] }
}

Forcez les utilisateurs à sélectionner une valeur dans la liste d'autorisation

Si vous ne définissez pas de valeur default pour la politique de liste d'autorisation, l'interface utilisateur prend par défaut la première valeur de la liste d'autorisation. Pour forcer l'utilisateur à sélectionner manuellement une valeur, définissez la valeur par default sur une valeur non valide. Par exemple : defaultValue?: "SELECT A VALUE";.

Politique de liste de blocage

La politique de liste de blocage répertorie les valeurs non autorisées. Puisque les valeurs doivent être des correspondances exactes, cette politique pourrait ne pas fonctionner comme prévu lorsque l'attribut est indulgent quant à la façon dont la valeur est représentée (par exemple, en autorisant les espaces de début et de fin).

interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}

Cet exemple empêche l’utilisateur de sélectionner 7.3.x-scala2.12 comme Databricks Runtime.

JSON
{
"spark_version": { "type": "blocklist", "values": ["7.3.x-scala2.12"] }
}

Politique Regex

Une politique regex limite les valeurs disponibles à celles qui correspondent à la regex. Pour des raisons de sécurité, assurez-vous que votre regex est ancrée au début et à la fin de la valeur de la chaîne.

interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}

Cet exemple limite les versions de Databricks Runtime qu'un utilisateur peut sélectionner :

JSON
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}

Politique de plage

Une politique de plage limite la valeur à une plage spécifiée en utilisant les champs minValue et maxValue. La valeur doit être un nombre décimal. Les limites numériques doivent être représentables en tant que valeur à virgule flottante double. Pour indiquer l’absence de limite spécifique, vous pouvez omettre minValue ou maxValue.

interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}

Cet exemple limite le nombre maximal de Worker à 10 :

JSON
{
"num_workers": { "type": "range", "maxValue": 10 }
}

Stratégie illimitée

La politique illimitée est utilisée pour rendre les attributs obligatoires ou pour définir la valeur default dans l'interface utilisateur.

interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}

Cet exemple ajoute le tag COST_BUCKET au compute :

JSON
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}

Pour définir une valeur default pour une variable de configuration Spark, mais également de l'omettre (la supprimer) :

JSON
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}

Champs de politique de limitation supplémentaires

Pour limiter les types de politique, vous pouvez spécifier deux champs supplémentaires :

  • defaultValue - La valeur qui se remplit automatiquement dans l'interface utilisateur de création de compute.
  • isOptional - Une politique de limitation sur un attribut le rend automatiquement obligatoire. Pour rendre l'attribut facultatif, définissez le champ isOptional sur true.
remarque

Les valeurs default ne sont pas automatiquement appliquées au compute créé avec l’ API Clusters. Pour appliquer les valeurs default à l’aide de l’API, ajoutez le parameter apply_policy_default_values à la définition du compute et définissez-le sur true.

Cette stratégie d'exemple spécifie la valeur par default id1 pour le Pool des nœuds Worker, mais la rend facultative. Lors de la création du compute, vous pouvez sélectionner un Pool différent ou choisir de ne pas en utiliser un. Si driver_instance_pool_id n'est pas défini dans la politique ou lors de la création du compute, le même pool est utilisé pour les nœuds Worker et le nœud Driver.

JSON
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}

Rédaction de stratégies pour les attributs de tableau

Vous pouvez spécifier des stratégies pour les attributs de tableau de deux manières :

  • Limitations génériques pour tous les éléments de tableau. Ces limitations utilisent le symbole générique * dans le chemin d’accès de la politique.
  • Limitations spécifiques pour un élément de tableau à un index spécifique. Ces limitations utilisent un nombre dans le chemin.
remarque

Les attributs de types de nœuds flexibles (worker_node_type_flexibility.alternate_node_type_ids et driver_node_type_flexibility.alternate_node_type_ids) sont des champs de type tableau dans l'API des clusters, mais ils ne suivent pas le modèle de chemin générique/indexé documenté ici. Ces attributs nécessitent une seule règle de politique qui spécifie la liste complète sous forme de chaîne séparée par des virgules. Voir Types de nœuds flexibles pour plus de détails.

Par exemple, pour l'attribut de tableau init_scripts, les chemins génériques start par init_scripts.* et les chemins spécifiques par init_scripts.<n>, où <n> est un index entier dans le tableau (starting par 0). Vous pouvez combiner des limitations génériques et spécifiques, auquel cas la limitation générique s’applique à chaque élément du tableau qui n’a pas de limitation spécifique. Dans chaque cas, une seule limitation de politique s'appliquera.

Les sections suivantes présentent des exemples courants qui utilisent des attributs de tableau.

Exiger des entrées spécifiques à l'inclusion

Vous ne pouvez pas exiger de valeurs spécifiques sans spécifier l'ordre. Par exemple :

JSON
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<required-script-2>"
}
}

Exiger une valeur fixe pour toute la liste

JSON
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}

Interdire totalement l'utilisation

JSON
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}

Autoriser les entrées qui suivent une restriction spécifique

JSON
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}

Corriger un ensemble spécifique de scripts d'initialisation

Dans le cas de init_scripts chemins, le tableau peut contenir l'une des multiples structures pour lesquelles toutes les variantes possibles peuvent devoir être gérées en fonction du cas d'usage. Par exemple, pour exiger un ensemble spécifique de scripts d'initialisation et interdire toute variante de l'autre version, vous pouvez utiliser le modèle suivant :

JSON
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.*.workspace.destination": {
"type": "forbidden"
},
"init_scripts.*.s3.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}

Exemples de politiques

Cette section comprend des exemples de politiques que vous pouvez utiliser comme références pour créer vos propres politiques. Vous pouvez également utiliser les familles de politiques fournies par Databricks comme modèles pour les cas d'utilisation courants des politiques.

Politique de compute générale

Une politique de compute à usage général destinée à guider les utilisateurs et à restreindre certaines fonctionnalités, tout en exigeant des tags, en limitant le nombre maximal d'instances et en imposant un délai d'expiration.

JSON
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-ml"
},
"node_type_id": {
"type": "allowlist",
"values": ["i3.xlarge", "i3.2xlarge", "i3.4xlarge"],
"defaultValue": "i3.2xlarge"
},
"driver_node_type_id": {
"type": "fixed",
"value": "i3.2xlarge",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 25,
"defaultValue": 5
},
"enable_elastic_disk": {
"type": "fixed",
"value": true,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 30,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}

Définir des limites pour le compute des LakeFlow Pipelines

remarque

Lors de l'utilisation de politiques pour configurer le compute des LakeFlow Pipelines, Databricks recommande d'appliquer une politique unique aux compute default et maintenance.

Pour configurer une politique pour un compute de pipeline, créez une politique avec le champ cluster_type défini sur dlt. L'exemple suivant crée une politique minimale pour un compute de LakeFlow pipeline :

JSON
{
"cluster_type": {
"type": "fixed",
"value": "dlt"
},
"num_workers": {
"type": "unlimited",
"defaultValue": 3,
"isOptional": true
},
"node_type_id": {
"type": "unlimited",
"isOptional": true
},
"spark_version": {
"type": "unlimited",
"hidden": true
}
}

Politique simple de taille moyenne

Permet aux utilisateurs de créer un compute de taille moyenne avec une configuration minimale. Le seul champ obligatoire à la création est le nom du compute ; le reste est fixe et masqué.

JSON
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_conf.spark.databricks.cluster.profile": {
"type": "forbidden",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "fixed",
"value": 10,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 60,
"hidden": true
},
"node_type_id": {
"type": "fixed",
"value": "i3.xlarge",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "i3.xlarge",
"hidden": true
},
"spark_version": {
"type": "fixed",
"value": "auto:latest-ml",
"hidden": true
},
"enable_elastic_disk": {
"type": "fixed",
"value": false,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}

Politique spécifique au job

Permet aux utilisateurs de créer du compute pour les Jobs afin d’exécuter des Jobs. Les utilisateurs ne peuvent pas créer de compute polyvalent à l’aide de cette politique.

JSON
{
"cluster_type": {
"type": "fixed",
"value": "job"
},
"dbus_per_hour": {
"type": "range",
"maxValue": 100
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"num_workers": {
"type": "range",
"minValue": 1
},
"node_type_id": {
"type": "regex",
"pattern": "[rmci][3-5][rnad]*.[0-8]{0,1}xlarge"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "[rmci][3-5][rnad]*.[0-8]{0,1}xlarge"
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-lts"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}

Politique de métastore externe

Permet aux utilisateurs de créer des compute avec un metastore défini par l'administrateur déjà attaché. Ceci est utile pour permettre aux utilisateurs de créer leur propre compute sans nécessiter de configuration supplémentaire.

JSON
{
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
"type": "fixed",
"value": "jdbc:sqlserver://<jdbc-url>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
"type": "fixed",
"value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
},
"spark_conf.spark.databricks.delta.preview.enabled": {
"type": "fixed",
"value": "true"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
"type": "fixed",
"value": "<metastore-user>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
"type": "fixed",
"value": "<metastore-password>"
}
}

Empêcher l’utilisation du compute avec les Jobs

Cette politique empêche les utilisateurs d'utiliser le compute pour exécuter des jobs. Les utilisateurs ne pourront utiliser le compute qu’avec des Notebooks.

JSON
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}

Supprimer la politique de dimensionnement automatique

Cette politique désactive le dimensionnement automatique et permet à l'utilisateur de définir le nombre de workers dans une plage donnée.

JSON
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}

Application de tags personnalisés

Pour ajouter une règle de balise de compute à une politique, utilisez l'attribut custom_tags.<tag-name>.

Par exemple, tout utilisateur utilisant cette politique doit renseigner un tag COST_CENTER avec 9999, 9921 ou 9531 pour que le compute se lance :

JSON
{ "custom_tags.COST_CENTER": { "type": "allowlist", "values": ["9999", "9921", "9531"] } }