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. Pour des exemples complets, consultez Exemples de politiques.
Champs de premier niveau
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.
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 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.
constraints
PolicyConstraints regroupe les bornes typées qu’une politique applique. Chaque groupe est facultatif, et un groupe omis n’impose aucune restriction.
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.
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 ne désignent jamais une source par son nom, car les paquets entrants ne portent aucun nom.
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
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é.
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.
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.