NetworkConfig, qui contient les règles réseau souhaitées. Pour modifier l’accès, mettez à jour cette ressource. Les règles que vous pouvez demander restent toutefois limitées par la politique réseau du placement : CoreWeave gère cette politique pour les Sandbox sans serveur, tandis que votre administrateur la configure pour les exécuteurs CoreWeave Kubernetes Service (CKS).
Avant de commencer
Les politiques réseau dynamiques prennent en charge aussi bien les Sandbox sans serveur que les Sandbox CKS, dès lors que la fonctionnalité est disponible sur les exécuteurs sélectionnés. Le mode sans serveur s’appuie sur des exécuteurs managés par CoreWeave : vous n’avez donc besoin ni de votre propre cluster CKS ni de votre propre exécuteur. Avant de commencer, assurez-vous de disposer des éléments suivants :- Un jeton d’accès à l’API CoreWeave doté de l’autorisation
sandbox_user. Voir Gérer les jetons d’accès à l’API. - La prise en charge de
NetworkConfigactivée sur l’API qui dessert votre organisation. Voir Disponibilité et prérequis. - Les mises à jour réseau à chaud activées sur l’exécuteur utilisé par votre Sandbox. CoreWeave s’en charge pour les exécuteurs sans serveur. Pour un exécuteur géré CKS, définissez
spec.overrides.env.ENABLE_LIVE_NETWORK_UPDATEsur la chaîne"true". Voir Gérer les exécuteurs. - Des autorisations de nom d’hôte HTTPS prises en charge et permises par la politique réseau du placement, comme l’exigent les exemples de ce guide.
curletjqinstallés localement.
https://api.cwsandbox.com. Les clients Python et TypeScript n’exposent pas les opérations NetworkConfig.
Définissez votre jeton. Remplacez [API-ACCESS-TOKEN] par votre jeton d’accès à l’API CoreWeave :
Set the API token
Créer et associer une configuration réseau
Créez une configuration appartenant à l’appelant qui autorise le trafic HTTPS vers l’index des paquets Python et son hôte de téléchargement. Choisissez un ID unique au sein de votre organisation. Cet exemple utilisebuild-egress.
Create a network configuration
NetworkConfig contenant son ID, la spec souhaitée, l’etag et le status. La syntaxe des règles est validée lors de la création. Lorsque vous associez la configuration à une sandbox, la plateforme vérifie la politique de l’exécuteur.
Créez une sandbox sans serveur qui utilise cette configuration. Cet exemple alloue un CPU et 1 Gio de mémoire :
Create a sandbox with the configuration
sandboxId renvoyé. La plateforme applique les règles initiales avant que la sandbox n’atteigne l’état RUNNING. Pour CKS, remplacez la valeur de spec.mode par SANDBOX_MODE_CKS et sélectionnez éventuellement spec.runnerIds.
Une configuration ne peut être liée qu’à une seule sandbox non terminée à la fois. N’envoyez pas à la fois spec.networkConfigId et spec.network en ligne dans la même requête de création.
Si vous omettez networkConfigId, la plateforme crée une configuration pour la sandbox. Elle copie les éventuelles règles spec.network en ligne ou, à défaut, utilise une configuration vide qui applique les valeurs par défaut de la politique. Récupérez l’ID attribué dans GetSandbox.spec.networkConfigId.
Mettre à jour les règles de la sandbox en cours d’exécution
Avant de modifier les règles, testez de nouvelles connexions HTTPS verspypi.org et files.pythonhosted.org depuis la sandbox en cours d’exécution. Pour savoir comment procéder, consultez le guide d’exécution. Vérifiez que les deux connexions aboutissent, puis enregistrez les commandes de sonde afin de les relancer après la mise à jour. Corrigez tout échec de connexion avant de poursuivre.
Lorsque vous êtes prêt à restreindre l’accès, effacez les autorisations de trafic sortant de la sandbox et bloquez le trafic DNS sortant sur le port 53, en UDP et en TCP. La mise à jour ne modifie pas l’ingress déclaré.
Pour rejeter une écriture obsolète de l’état souhaité, lisez la configuration actuelle et transmettez son etag avec la mise à jour :
Restrict outbound access
NetworkConfig mis à jour. La sandbox continue de s’exécuter avec le même ID et le même état de processus. Le trafic requis par la plateforme, comme l’accès autorisé au stockage sur d’autres ports, peut rester disponible. denyEgress n’assure pas une isolation réseau complète.
Utilisez un masque explicite pour effacer une liste. Une liste de trafic sortant vide, avec denyEgress non défini ou défini sur false, rétablit la valeur par défaut de la politique. Elle ne signifie pas que tout le trafic est refusé.
Vérifier le résultat
Remplacez[SANDBOX-ID] par l’ID obtenu lors de la création, puis inspectez la sandbox :
Inspect sandbox network status
RUNNING, qu’elle référence toujours le même spec.networkConfigId et qu’elle renvoie les valeurs mises à jour de status.effectiveEgress, status.effectiveIngress et status.effectiveDnsEgress. La réponse JSON peut omettre les champs répétés vides.
Relancez les sondes de connexion qui réussissaient avant la mise à jour. Vérifiez que les nouvelles connexions HTTPS sortantes vers les deux hôtes précédemment autorisés échouent et que la charge de travail existante continue de s’exécuter. Écartez les causes d’échec sans rapport, comme une destination indisponible, avant de considérer l’échec d’une sonde comme la preuve de l’application des règles. Les champs de statut reflètent la dernière mise à jour réussie telle qu’elle a été enregistrée, et non une mesure en temps réel de l’application.
Réutiliser ou supprimer la configuration
Lorsque la sandbox se termine, une configuration créée par l’appelant devient disponible pour être réutilisée. Son champstatus.sandboxId peut conserver brièvement l’ancien ID, le temps que le nettoyage s’achève. Vous pouvez associer la configuration à une nouvelle sandbox ou la supprimer :
Delete an unused network configuration
spec de la configuration dans une nouvelle configuration ou dans l’entrée de création en ligne. Copier GetSandbox.spec revient à copier l’ID de la configuration, et non un ensemble de règles indépendant.
Modifications prises en charge et limites
Les modifications et limites suivantes s’appliquent aux politiques réseau dynamiques :- Vous pouvez mettre à jour les autorisations de destination du trafic sortant, les sources d’ingress déclarées pour les services
CUSTOMexistants, ainsi quedenyEgress,denyIngressetdnsEgress. Les règles doivent rester dans les limites de la politique de l’exécuteur. - Les ports et la visibilité des services restent des paramètres définis à la création. Voir Points de terminaison publics.
- Les autorisations de nom d’hôte HTTPS restent limitées au HTTPS sur le port TCP
443. Vous ne pouvez modifier les autorisations de nom d’hôte à chaud que sur une Sandbox créée avec au moins une autorisationhttpsHostname. Pour ajouter des autorisations de nom d’hôte à une Sandbox créée sans ce type d’autorisation, créez une nouvelle Sandbox. - Certaines Sandbox plus anciennes ne permettent pas de modifier leurs autorisations de nom d’hôte à chaud, y compris pour les supprimer. Si la mise à jour est rejetée avec
CWSANDBOX_INVALID_REQUEST, créez une nouvelle Sandbox avec les autorisations requises. - L’exécuteur doit prendre en charge les autorisations de nom d’hôte HTTPS. S’il ne peut pas les appliquer, les requêtes qui les ajoutent ou les modifient renvoient
CWSANDBOX_INVALID_REQUEST.