> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Référence des politiques

> Tous les champs d’une politique de sandbox, avec leurs types, leurs valeurs par défaut et leurs règles de validation.

Cette page décrit tous les champs d’une politique de sandbox. Une politique est définie sur un exécuteur géré dans le champ `policy`. Comme un cluster héberge au plus un exécuteur, chaque politique régit un seul cluster.

Pour un guide pas à pas axé sur les tâches, consultez [Configurer une politique de sandbox](/fr/products/sandboxes/profiles/configure). Pour des exemples complets, consultez [Exemples de politiques](/fr/products/sandboxes/profiles/profile-examples).

<h2 id="top-level-fields">
  Champs de premier niveau
</h2>

| Champ | Type | Description |
| - | - | - |
| `display_name` | string | Nom lisible de la posture décrite par cette politique. |
| `base` | object | Valeurs par défaut d’exécution et éléments joints appliqués avant la spécification du bac à sable. Voir [`base`](#base). |
| `constraints` | `PolicyConstraints` | Bornes typées validées par rapport à la spécification résolue. Voir [`constraints`](#constraints). |

Une politique vide est valide et déclare une posture entièrement permissive. `base` et `constraints` sont tous deux facultatifs, de sorte que la posture d’un cluster est toujours déclarée explicitement plutôt qu’héritée par inadvertance.

<h2 id="resolution-order">
  Ordre de résolution
</h2>

Un sandbox est résolu en deux étapes :

1. **Base.** Les valeurs par défaut du runtime, puis `base`, puis la spécification du bac à sable. Le sandbox l’emporte, valeur par valeur. Les éléments de liste joints par `base` sont toujours appliqués.
2. **Contraintes.** Les bornes sont validées par rapport à la spécification entièrement résolue. Toute violation entraîne un rejet, jamais une réécriture silencieuse.

Comme les contraintes valident la spécification résolue et non celle qui a été soumise, une valeur fournie par `base` est vérifiée dans les mêmes conditions qu’une valeur fournie par le sandbox.

<h2 id="base">
  `base`
</h2>

Un fragment de valeurs par défaut et d’éléments joints du runtime. Sur un exécuteur Kubernetes, il s’agit d’un fragment de spécification de pod.

`base` regroupe les paramètres d’infrastructure qu’une sandbox n’a pas à déclarer : l’ordonnanceur, les sélecteurs de nœuds, les tolérances, la classe de priorité, la répartition topologique, les comptes de service, les secrets d’extraction d’image, les volumes de la plateforme, la configuration DNS et les métadonnées du pod, comme les annotations épinglées. Les champs sensibles sur le plan de la sécurité sont rejetés d’office, notamment `affinity`, le `securityContext` du pod et du conteneur, `runtimeClassName` et `initContainers`.

<h2 id="constraints">
  `constraints`
</h2>

`PolicyConstraints` regroupe les bornes typées qu’une politique applique. Chaque groupe est facultatif, et un groupe omis n’impose aucune restriction.

| Groupe | Type | Régit |
| - | - | - |
| `resources` | `ResourceConstraints` | Limites et valeurs par défaut du CPU, de la mémoire et du GPU. |
| `image` | `ImageConstraints` | Les images qu’une sandbox peut exécuter. |
| `network` | `NetworkConstraints` | Listes d’autorisation et valeurs par défaut pour le trafic sortant et l’Ingress. |
| `security` | `SecurityConstraints` | Privilèges, capacités et isolation. |
| `instance` | `InstanceConstraints` | Les types d’instance de nœud sur lesquels une sandbox peut être placée. |
| `lifecycle` | `LifecycleConstraints` | La durée de vie maximale d’une sandbox. |
| `metadata` | `MetadataConstraints` | Clés d’annotation et leur nombre. |
| `volumes` | `VolumeConstraints` | Supports de stockage et taille par volume. |

<h2 id="resourceconstraints">
  `ResourceConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `max_cpu` | string | CPU maximum qu’un conteneur peut demander, exprimé sous forme de quantité Kubernetes. |
| `max_memory` | string | Mémoire maximale qu’un conteneur peut demander. |
| `min_cpu` | string | CPU minimum qu’un conteneur peut demander. |
| `min_memory` | string | Mémoire minimale qu’un conteneur peut demander. |
| `default_cpu` | string | CPU appliqué lorsque la sandbox n’en demande aucun. |
| `default_memory` | string | Mémoire appliquée lorsque la sandbox n’en demande aucune. |
| `max_gpu_count` | int64 | Nombre maximal de GPU qu’une sandbox peut demander. |
| `cpu_ceiling` | string | Plafond du CPU total résolu pour la sandbox. |
| `memory_ceiling` | string | Plafond de la mémoire totale résolue pour la sandbox. |
| `require_limits` | bool | Si la valeur est true, rejette toute sandbox qui ne déclare pas à la fois des limites de CPU et de mémoire. |

Les plafonds se distinguent des maximums : `max_cpu` borne la demande d’un seul conteneur, tandis que `cpu_ceiling` borne le total résolu, ce qui a son importance lorsque `base` ajoute ses propres conteneurs.

<h2 id="imageconstraints">
  `ImageConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `allowed_registries` | liste de string | Registres dont peut provenir l’image d’une sandbox. Si la liste est vide, tous les registres sont autorisés. |
| `allowed_images` | liste de string | Images précises qu’une sandbox est autorisée à exécuter. Si la liste est vide, toutes les images sont autorisées. |

<h2 id="networkconstraints">
  `NetworkConstraints`
</h2>

Les contraintes réseau définissent des listes d’autorisation encadrant l’accès qu’une sandbox peut demander. Lorsqu’une sandbox déclare du trafic sortant, la politique accepte ou rejette cette déclaration sans l’élargir. Lorsque la sandbox ne déclare aucun trafic sortant, la politique applique `default_egress`, sauf si la sandbox définit `deny_egress`. L’accès au DNS de la plateforme et au stockage est accordé séparément.

| Champ | Type | Description |
| - | - | - |
| `allowed_egress` | liste de `EgressRule` | Liste d’autorisation du trafic sortant, vérifiée à la création d’une sandbox. Si elle n’est pas vide, chaque règle déclarée doit s’y inscrire. Si elle est vide, tout ce qui peut être déclaré est autorisé. |
| `default_egress` | liste de `EgressRule` | Appliquée lorsque la sandbox ne déclare aucun trafic sortant, sauf si elle définit `deny_egress`. Entièrement remplacée dès qu’une déclaration est faite. Doit s’inscrire dans `allowed_egress` et ne doit pas contenir de règles `https_hostname`. |
| `allowed_ingress` | liste de `IngressRule` | Liste d’autorisation de l’Ingress pour les ports de visibilité `CUSTOM`, vérifiée à la création d’une sandbox. Si elle n’est pas vide, chaque règle déclarée doit s’y inscrire. Si elle est vide, tout ce qui peut être déclaré est autorisé. |
| `default_ingress` | liste de `IngressRule` | Appliquée lorsqu’une sandbox expose un port de visibilité `CUSTOM` sans déclarer d’Ingress, sauf si elle définit `deny_ingress`. Entièrement remplacée par des règles d’Ingress explicites. Doit s’inscrire dans `allowed_ingress`. |
| `deny_https_hostname_rules` | bool | Si la valeur est true, rejette les règles `https_hostname` dans `allowed_egress` et dans les requêtes de sandbox. Ne bloque ni les requêtes DNS ni le trafic HTTPS autorisé par des règles CIDR. |
| `dns_egress` | `DNSEgressMode` | Contrôle le trafic DNS sortant sur le port UDP/TCP 53. Si aucune valeur n’est spécifiée, la valeur par défaut est `DNS_EGRESS_MODE_ALLOW`. Une sandbox peut choisir `DNS_EGRESS_MODE_DENY`, mais ne peut pas demander `ALLOW` lorsque la politique exige `DENY`. |

Lorsqu’une liste d’autorisation n’est pas vide, l’inclusion est vérifiée en fonction du type de destination ou de source et du port. Un CIDR déclaré doit s’inscrire dans l’ensemble des plages CIDR autorisées ou dans une règle `any`. Une portée de tenant déclarée nécessite une règle de tenant correspondante ou une règle `any`, et la déclaration de `any` nécessite une règle `any`.

<h3 id="egressrule">
  `EgressRule`
</h3>

Chaque règle désigne exactement une destination, éventuellement restreinte à certains ports.

| Champ | Type | Description |
| - | - | - |
| `cidr` | `CidrBlock` | Une plage d’adresses, avec des exclusions facultatives. |
| `https_hostname` | string | Un nom d’hôte HTTPS, exact ou comportant une unique étiquette générique en première position (à gauche), tel que `*.example.com`. Nécessite un exécuteur qui prend en charge les règles HTTPS basées sur le nom d’hôte. Dans `allowed_egress`, `*` autorise toute déclaration de nom d’hôte. |
| `https_hostname_except` | liste de string | Noms d’hôte exclus de cette règle. Valide uniquement avec `https_hostname` dans `allowed_egress`. Accepte les mêmes modèles de noms d’hôte, à l’exception de `*`. |
| `tenant` | `TenantScope` | Autres bacs à sable, sélectionnés selon leur relation. |
| `any` | bool | Toutes les destinations accessibles, à l’exception des plages internes à la plateforme. Utilisez des règles tenant ou selector pour atteindre d’autres bacs à sable ou des charges de travail du cluster. |
| `selector` | `SelectorBlock` | Charges de travail sélectionnées par étiquette. |
| `ports` | liste de `PortRange` | Ports auxquels la règle s’applique. Omettez ce champ pour couvrir tous les ports, sauf pour les règles `https_hostname`, qui n’autorisent que le port TCP 443. |

Les règles de nom d’hôte autorisent l’accès HTTPS, et non les requêtes DNS. Lorsque `allowed_egress` n’est pas vide, un nom d’hôte déclaré doit correspondre à un modèle de nom d’hôte autorisé (exclusions comprises) ou à une règle `any`. Une liste d’autorisation composée uniquement de CIDR n’autorise aucune déclaration de nom d’hôte. Placez les autorisations de noms d’hôte réutilisables dans un [modèle de sandbox](/fr/products/sandboxes/profiles/templates), et non dans `default_egress`.

`dns_egress` contrôle séparément le trafic sortant UDP/TCP sur le port 53. `DNS_EGRESS_MODE_ALLOW` autorise l’accès au résolveur de la plateforme ; les autres résolveurs nécessitent une règle de trafic sortant. `DNS_EGRESS_MODE_DENY` bloque le trafic sortant sur le port 53, même si une autre règle l’autorise. Ce mode ne bloque ni les recherches résolues localement ni le DNS acheminé par d’autres transports autorisés, comme HTTPS.

<h3 id="ingressrule">
  `IngressRule`
</h3>

| Champ | Type | Description |
| - | - | - |
| `cidr` | `CidrBlock` | Plage d’adresses, avec des exclusions facultatives. |
| `tenant` | `TenantScope` | Autres bacs à sable, sélectionnés selon leur relation. |
| `any` | bool | N’importe quelle source. |
| `ports` | liste de `PortRange` | Ports auxquels la règle s’applique. Omettez ce champ pour l’appliquer à tous les ports dont la visibilité est `CUSTOM`. |

Les règles d’Ingress ne désignent jamais une source par son nom, car les paquets entrants ne portent aucun nom.

<h3 id="cidrblock">
  `CidrBlock`
</h3>

| Champ | Type | Description |
| - | - | - |
| `cidr` | string | Requis. La plage d’adresses, par exemple `10.0.0.0/8`. |
| `except` | liste de string | Plages exclues de `cidr`. Une exclusion ne restreint que la règle à laquelle elle appartient. |

<h3 id="portrange">
  `PortRange`
</h3>

| Champ | Type | Description |
| - | - | - |
| `protocol` | string | Facultatif. Valeur par défaut : TCP. |
| `port` | int32 | Requis. Le port ou le début d’une plage. |
| `end_port` | int32 | Facultatif. La fin d’une plage. |

<h3 id="tenantscope">
  `TenantScope`
</h3>

| Valeur | Sélectionne |
| - | - |
| `TENANT_SCOPE_SAME_USER` | Les bacs à sable appartenant au même utilisateur. |
| `TENANT_SCOPE_SAME_ORG` | Les bacs à sable de la même organisation. |
| `TENANT_SCOPE_SANDBOX_NETWORK` | Les bacs à sable situés sur le même réseau de sandbox. Pas encore pris en charge ; toute règle de trafic sortant qui utilise cette valeur est rejetée. |

<h3 id="selectorblock">
  `SelectorBlock`
</h3>

| Champ | Type | Description |
| - | - | - |
| `pod_labels` | string map | Requis. Étiquettes à faire correspondre sur le pod de destination. |
| `namespace_labels` | string map | Facultatif. Étiquettes à faire correspondre sur le namespace de destination. |

La correspondance repose sur des paires d’étiquettes exactes, mais les déclarations peuvent comporter des étiquettes supplémentaires. Lorsque la liste d’autorisation du trafic sortant n’est pas vide, un sélecteur déclaré doit comporter toutes les paires d’étiquettes d’une règle de sélecteur correspondante. Les deux sélecteurs doivent soit omettre tous deux les étiquettes de namespace, soit les inclure tous deux, auquel cas la déclaration doit comporter toutes les paires d’étiquettes de namespace requises. Une règle `any` ne couvre jamais les sélecteurs, mais une liste d’autorisation vide autorise les déclarations de sélecteurs.

<h2 id="securityconstraints">
  `SecurityConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `allow_privileged` | bool | Indique si un conteneur peut s’exécuter en mode privilégié. |
| `allowed_capabilities` | string list | Capacités Linux qu’un conteneur peut ajouter. |
| `allowed_seccomp_profiles` | string list | Profils seccomp autorisés, tels que `RuntimeDefault` ou `Unconfined`. |
| `allow_host_network` | bool | Indique si un sandbox peut utiliser le namespace réseau de l’hôte. Obsolète, en cours de suppression. |
| `allow_host_pid` | bool | Indique si un sandbox peut utiliser le namespace PID de l’hôte. Obsolète, en cours de suppression. |
| `allowed_runtime_classes` | string list | Classes de runtime qu’un sandbox peut épingler. Fermé par défaut (fail-closed) : une liste vide n’autorise aucun épinglage. |
| `default_cpu_runtime_class` | string | Classe de runtime appliquée à un sandbox CPU qui n’en épingle aucune. |
| `default_gpu_runtime_class` | string | Classe de runtime appliquée à un sandbox GPU qui n’en épingle aucune. |

`allowed_runtime_classes` est la seule liste pour laquelle une valeur vide signifie « rien » et non « tout ». Un sandbox ne peut sélectionner qu’une classe de runtime que vous avez explicitement nommée.

Les paramètres qui donnent accès à l’hôte se définissent uniquement dans la politique et n’apparaissent jamais dans une spécification du bac à sable, quel que soit le mode d’isolation utilisé.

<h2 id="instanceconstraints">
  `InstanceConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `allowed_instance_types` | liste de string | Types d’instance de nœud sur lesquels une sandbox peut être placée. Si la liste est vide, tous les types sont autorisés. |

<h2 id="lifecycleconstraints">
  `LifecycleConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `default_lifetime_seconds` | int32 | Durée de vie appliquée lorsque la sandbox n’en demande aucune. |

La politique ne comporte aucun plafond de durée de vie. Le maximum de la plateforme, actuellement fixé à 30 jours, s’impose à toute sandbox : toute requête de création qui le dépasse est rejetée. Le champ `max_lifetime_seconds` a été supprimé du document de politique, et `cwic` rejette toute politique qui le contient encore.

<h2 id="metadataconstraints">
  `MetadataConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `denied_annotation_prefixes` | liste de string | Préfixes de clés d’annotation refusés. |
| `max_annotation_count` | int32 | Nombre maximal d’annotations qu’une sandbox peut définir. `0` signifie qu’il n’y a aucune limite. |

<h2 id="volumeconstraints">
  `VolumeConstraints`
</h2>

| Champ | Type | Description |
| - | - | - |
| `allowed_media` | liste de `StorageMedium` | Supports de stockage autorisés. Si la liste est vide, tous sont autorisés. |
| `max_size` | string | Taille maximale par volume, par exemple `100Gi`. |

<h3 id="storagemedium">
  `StorageMedium`
</h3>

| Valeur | Description |
| - | - |
| `STORAGE_MEDIUM_UNSPECIFIED` | Valeur par défaut de la plateforme, qui repose sur le disque. |
| `STORAGE_MEDIUM_DISK` | Repose sur le disque. |
| `STORAGE_MEDIUM_MEMORY` | Repose sur la RAM et est décompté de la mémoire du conteneur. |

Retirez `STORAGE_MEDIUM_MEMORY` de `allowed_media` pour interdire les volumes en RAM.

<h2 id="validation-rules">
  Règles de validation
</h2>

Une politique est rejetée si l’une des conditions suivantes est remplie :

* Le document encodé dépasse 256 Kio.
* La politique a la valeur null. Une politique configurée ne peut pas être effacée, seulement remplacée.
* `default_egress` contient des règles `https_hostname`.
* Les règles par défaut de trafic sortant ou d’Ingress ne respectent pas la liste d’autorisation correspondante.

<h2 id="see-also">
  Voir aussi
</h2>

* [Configurer une politique de sandbox](/fr/products/sandboxes/profiles/configure) : le guide pas à pas, orienté tâches, qui couvre chaque groupe présenté sur cette page.
* [Exemples de politiques](/fr/products/sandboxes/profiles/profile-examples) : cinq politiques complètes correspondant aux postures de cluster les plus courantes.
* [Aperçu des politiques](/fr/products/sandboxes/profiles/profiles) : comment une sandbox est résolue en fonction d’une politique.
* [Déployer et gérer un exécuteur](/fr/products/sandboxes/operations/managed-runners) : où se trouve la politique et comment la définir.
