policy et régit les Sandbox placées sur cet exécuteur.
Pour un guide pas à pas axé sur les tâches, consultez Configurer une politique de sandbox. Pour des exemples complets, consultez Exemples de politiques.
Champs de premier niveau
Une politique vide est valide et ne fournit ni valeurs par défaut de base ni contraintes explicites. Les gates de sécurité de la plateforme s’appliquent toutefois, et en l’absence de liste d’autorisation des classes de runtime, aucune valeur concrète ne peut être épinglée pour
runtime_class. Les groupes base, constraints et control_plane_access sont facultatifs. En l’absence de liste d’autorisation des adresses IP sources, aucune restriction n’est appliquée à l’adresse source.
Ordre de résolution
Un sandbox est résolu en deux étapes :- 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 parbasesont toujours appliqués. - 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.
base est vérifiée dans les mêmes conditions qu’une valeur fournie par le sandbox.
base
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 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 les suivants :
affinity- Le
securityContextdu pod et du conteneur. runtimeClassNameinitContainers- Les namespaces de l’hôte.
- Les volumes
hostPath. - Les comptes de service autres que celui par défaut.
control_plane_access
ControlPlaneAccessPolicy restreint les requêtes API Sandbox qui sélectionnent un exécuteur ou ciblent une sandbox placée sur celui-ci. Ces contrôles viennent s’ajouter à l’authentification et à l’autorisation. Ils ne restreignent pas le trafic envoyé directement aux services exposés par une sandbox.
SourceIpAllowlist
L’API normalise les préfixes, supprime les doublons ainsi que les préfixes couverts par une entrée plus large. Les CIDR non valides, y compris les adresses IPv6 qualifiées par une zone, sont rejetés.
0.0.0.0/0 autorise explicitement toutes les sources IPv4. ::/0 autorise explicitement toutes les sources IPv6.
Les contrôles d’accès sont évalués au moment de la requête, indépendamment de la résolution de la spécification lors de la création. Les modifications s’appliquent aux nouvelles opérations sur les bacs à sable existants, une fois le cache de politiques propagé. Les administrateurs conservent l’accès à l’administration des politiques, quelle que soit la liste d’autorisation. Pour la configuration, le comportement des flux, les erreurs et la récupération, voir Restreindre l’accès à l’API Sandbox par IP source.
constraints
PolicyConstraints regroupe les bornes typées qu’une politique applique. Chaque groupe est facultatif. Si un groupe est omis, aucune contrainte explicite de ce type n’est ajoutée, mais les gates de sécurité de la plateforme et les restrictions de classe de runtime définies dans SecurityConstraints continuent de s’appliquer.
ResourceConstraints
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.
ImageConstraints
NetworkConstraints
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. Les mêmes contraintes encadrent les mises à jour dynamiques du réseau.
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.
EgressRule
Chaque règle désigne exactement une destination, éventuellement restreinte à certains ports.
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, 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.
IngressRule
Les règles d’Ingress s’appliquent aux ports existants dont la visibilité est
CUSTOM. Elles ne modifient pas la visibilité du service et ne permettent pas de sélectionner des sources par nom d’hôte ni par étiquette.
CidrBlock
PortRange
TenantScope
SelectorBlock
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.
SecurityConstraints
Les namespace de l’hôte ne sont pas configurables via les champs de sécurité de la politique v1. Les anciens champs
allow_host_network et allow_host_pid ont été supprimés. Pour les profils v1beta2 hérités, voir Exemple : autoriser une posture de profil privilégié.
allowed_runtime_classes est fermé par défaut (fail-closed) : une liste vide ou absente n’autorise aucun épinglage concret de runtime_class. La sélection de classes portables via runtime_class_selection s’appuie plutôt sur runtime_class_mappings.
La politique limite les privilèges qu’un sandbox peut demander au sein de l’invité, ainsi que les classes de runtime qu’il peut sélectionner.
RuntimeClassMapping
Une liste runtime_class_mappings non vide active la sélection portable de la classe de runtime. Chaque classe mappée peut être sélectionnée par l’appelant. RUNTIME_CLASS_CPU_DEFAULT et RUNTIME_CLASS_GPU_DEFAULT assurent en outre la sélection automatique pour leur famille de ressources. Si l’une de ces classes par défaut est omise, la sélection automatique est désactivée pour la famille concernée. Les classes non mappées sont indisponibles, et les épinglages explicites de runtime_class sont rejetés.
Les mappages ne peuvent pas être combinés avec allowed_runtime_classes, default_cpu_runtime_class ou default_gpu_runtime_class. Chaque classe portable ne peut apparaître qu’une seule fois.
InstanceConstraints
LifecycleConstraints
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.
MetadataConstraints
VolumeConstraints
StorageMedium
Retirez
STORAGE_MEDIUM_MEMORY de allowed_media pour interdire les volumes en RAM.
Règles de validation
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_egresscontient des règleshttps_hostname.- Les règles par défaut de trafic sortant ou d’Ingress ne respectent pas la liste d’autorisation correspondante.
- Une liste d’autorisation d’adresses IP source contient un CIDR IPv4 ou IPv6 non valide, plus de 256 entrées ou plus de 16 Kio de texte CIDR.
Voir aussi
- Configurer une politique de sandbox : le guide pas à pas, orienté tâches, qui couvre chaque groupe présenté sur cette page.
- Exemples de politiques : cinq politiques complètes correspondant aux postures de cluster les plus courantes.
- Aperçu des politiques : comment une sandbox est résolue en fonction d’une politique.
- Déployer et gérer un exécuteur : où se trouve la politique et comment la définir.