Gouvernance de la sortie réseau des notebooks
Contrôlez les hôtes externes accessibles aux notebooks Python isolés : PyPI, domaines personnalisés ou politique entièrement hors ligne.
Les notebooks Marimo exécutent du code Python dans un runtime isolé dont les seules destinations accessibles sont celles qu'autorise la politique de sortie réseau de votre organisation. Une organisation qui n'en a pas configuré applique la valeur par défaut de la plateforme — Autoriser le trafic Scrydon par défaut activé, ce qui autorise les registres de paquets sélectionnés et rien d'autre — de sorte que pip install fonctionne immédiatement tandis que toutes les autres destinations restent bloquées. Le panneau Trafic sortant permet à un administrateur IT d'élargir, de restreindre ou de fermer entièrement cette politique selon la posture de risque de l'organisation.
La sortie réseau est propre à l'organisation et figée dans un instantané lors de la préparation des ressources de calcul. Une modification de politique clôture et remplace les runtimes de notebooks concernés avant toute nouvelle exécution de code ; le runtime d'une autre organisation n'est pas affecté.
Comment la sortie réseau est appliquée
Le Runtime Plane construit l'instantané effectif de sortie réseau à partir des valeurs par défaut de l'opérateur et de la politique active de l'organisation. Chaque runtime interactif et chaque tâche de notebook à usage unique reçoit un contrôleur de sortie réseau de confiance intégré au runtime. Le conteneur Python non fiable ne dispose d'aucune capacité réseau lui permettant de reconfigurer ou de contourner ce contrôleur.
Le support en production exige également un CNI Kubernetes qui applique les NetworkPolicy — Calico, Cilium ou la politique réseau Azure sur AKS. Les NetworkPolicy limitent les chemins est-ouest du plan de contrôle et des workloads ; le contrôleur intégré au runtime gère la politique de destination. Les opérateurs doivent qualifier ces deux contrôles avant de revendiquer la frontière.
Confirmez l'application des NetworkPolicy et le niveau de runtime isolé avant de vous appuyer sur la gouvernance de sortie réseau comme contrôle de sécurité. Sur AKS, configurez un moteur de politique réseau approprié lors du provisionnement du cluster.
az aks update --resource-group <rg> --name <cluster> --network-policy azureou provisionnez le cluster avec Calico ou Cilium.
Ouvrir le panneau
- Connectez-vous en tant que propriétaire de l'organisation ou administrateur de l'organisation.
- Allez dans Paramètres → Gouvernance → Trafic sortant.
Le panneau affiche deux contrôles :
- Autoriser le trafic Scrydon par défaut — un interrupteur qui active la liste d'autorisation sélectionnée de la plateforme.
- Domaines autorisés personnalisés — une liste que vous gérez pour les destinations propres à votre organisation.
La liste d'autorisation par défaut de Scrydon
Lorsque Autoriser le trafic Scrydon par défaut est activé, le bac à sable obtient l'accès aux hôtes de registres de paquets dont pip a besoin pour installer des paquets depuis PyPI :
| Hôte | Rôle |
|---|---|
pypi.org | Index des paquets — pip y récupère les métadonnées et les listes de versions |
files.pythonhosted.org | Téléchargement des wheels et des distributions sources |
registry.npmjs.org | Registre npm — npm install dans le bac à sable de l'Agent |
Ces trois hôtes constituent l'ensemble sélectionné complet. La règle d'inclusion est stricte : un hôte n'y figure que lorsqu'un gestionnaire de paquets livré avec le bac à sable (pip, npm) en a besoin, et rien d'autre. Les hôtes de sources tels que github.com, les hubs de modèles et les registres d'autres chaînes d'outils ne sont pas inclus — ajoutez-les comme domaines personnalisés si vous en avez besoin.
Scrydon maintient cette liste. Lorsque de nouveaux registres publics de confiance sont ajoutés, ils apparaissent dans une note de version de la plateforme. L'activation de cet interrupteur utilise toujours la version actuelle de la liste.
Ajouter des domaines autorisés personnalisés
Cliquez sur Ajouter un domaine pour ajouter un domaine à votre liste d'autorisation personnalisée. Saisissez soit :
- Un nom d'hôte exact —
cdn.example.comn'autorise que ce sous-domaine. - Un domaine parent —
example.comautoriseexample.comet tous ses sous-domaines (par ex.api.example.com,cdn.example.com).
La correspondance des domaines ne tient pas compte de la casse. Les adresses IP ne sont pas acceptées comme entrées de liste d'autorisation.
Après avoir modifié la liste, cliquez sur Enregistrer. Un notebook déjà connecté sous un instantané différent est remplacé avant sa prochaine exécution ; reconnectez-vous si l'interface signale que le runtime précédent est devenu obsolète.
Deux plans : le noyau et le navigateur
Chaque entrée comporte également un interrupteur Ressources du navigateur, qui compte plus souvent qu'il n'y paraît.
Une entrée de la liste d'autorisation régit le noyau — le processus Python dans le bac à sable. Mais certaines sorties de notebook sont récupérées par le navigateur : les tuiles de fond de carte d'une carte Plotly, une image distante, une police web. Ces requêtes sont régies par la Content-Security-Policy du document du notebook, si bien qu'une entrée utilisable uniquement par le noyau ne permettra pas d'afficher une carte.
- Désactivé (la valeur par défaut, et le sens de toute entrée préexistante) — le noyau peut atteindre l'hôte. Le navigateur ne le peut pas.
- Activé — le noyau peut l'atteindre et les documents de notebook peuvent charger depuis cet hôte des ressources non exécutables : images, tuiles, polices et
fetch/XHR. Il n'autorise jamais les scripts, cadres ou plugins provenant de cet hôte, quelle que soit la position de l'interrupteur.
Ne l'activez que pour les hôtes dont vous acceptez que le navigateur de chaque lecteur de notebook les contacte directement — l'hôte voit l'adresse IP de chaque lecteur et, pour les tuiles de carte, également la zone et le niveau de zoom consultés. Une API de données que vos notebooks appellent côté serveur doit rester désactivée.
C'est l'activation de l'interrupteur pour tile.openstreetmap.org qui permet l'affichage de go.Scattermap(..., style="open-street-map"). L'interrupteur n'est pas disponible en mode liste de refus, où les entrées sont les hôtes que vous bloquez.
Les utilisateurs n'ont pas à deviner. Lorsqu'une ressource de navigateur est refusée à un notebook, un avis apparaît au-dessus de celui-ci en nommant l'hôte exact, de sorte que la demande qui vous parvient est « veuillez autoriser tile.openstreetmap.org pour les ressources du navigateur » plutôt que « la carte est cassée ». Les scripts bloqués ne sont volontairement pas signalés de cette façon — la politique n'accorde jamais l'exécution de scripts à un hôte externe, il n'y a donc rien à activer de votre côté.
Exemple : autoriser un index de paquets privé
Si votre organisation héberge un miroir PyPI privé à pypi.internal.example.com :
- Ajoutez
internal.example.com(domaine parent) — cela couvre également tous les autres hôtes internes de ce domaine. - Ou ajoutez le nom d'hôte exact
pypi.internal.example.comsi vous préférez une portée plus restreinte. - Cliquez sur Enregistrer.
Les notebooks pourront désormais exécuter pip install depuis votre index privé en plus (ou à la place) des hôtes PyPI publics.
Désactiver entièrement la sortie réseau (refus total)
Avec Autoriser le trafic Scrydon par défaut désactivé et aucun domaine personnalisé ajouté, le bac à sable n'a aucun accès réseau externe.
Ce n'est pas le point de départ d'une nouvelle organisation — la liste d'autorisation sélectionnée reste activée jusqu'à ce qu'un administrateur la désactive. Le refus total est la posture appropriée lorsque tous les paquets nécessaires sont préintégrés dans l'image du notebook ou téléversés manuellement.
Dans ce mode :
- La réconciliation des dépendances échoue lorsqu'un paquet déclaré doit être récupéré depuis PyPI.
requests.get("https://api.example.com")lève une erreur de connexion.- Toute tentative d'atteindre un hôte externe est bloquée et enregistrée.
Paquets préinstallés
L'image épinglée du notebook est livrée avec un ensemble de base de paquets — aucune sortie réseau n'est nécessaire pour les utiliser :
- Données / calcul numérique :
pandas,numpy,scipy,duckdb - Visualisation :
matplotlib,altair - Runtime du notebook :
marimo,pyarrow,polars - Utilitaires Scrydon :
scrydon(le client intégré pour les tables / bases de connaissances / LLM)
Si un paquet dont vous avez besoin ne figure pas dans cette liste, déclarez-le dans la source du notebook. Scrydon réconcilie l'ensemble des dépendances avec uv avant que le noyau ne soit prêt. Par exemple, un notebook qui importe plotly a besoin que pypi.org et files.pythonhosted.org soient accessibles — c'est ce qu'accorde Autoriser le trafic Scrydon par défaut, activé sauf si un administrateur l'a désactivé. S'il est désactivé, la préparation échoue avant l'exécution de la cellule.
Téléversement de paquets (bientôt disponible) : une prochaine version vous permettra de téléverser des fichiers wheel Python directement sur la plateforme, pour les rendre disponibles aux notebooks sans aucune sortie réseau. C'est utile pour les déploiements entièrement isolés (air-gapped) ou pour les paquets indisponibles dans les registres publics.
Autorisations
| Rôle | Peut consulter | Peut modifier |
|---|---|---|
| Propriétaire de l'organisation | Oui | Oui |
| Administrateur de l'organisation | Oui | Oui |
| Membre | Non (redirigé vers les paramètres du compte) | Non |
Dépannage
Consultez la section de dépannage dédiée de la page Notebooks Marimo pour les solutions pas à pas lorsqu'un notebook ne parvient pas à installer un paquet ou à atteindre un hôte.
Voir aussi
- Notebooks Marimo — comment les notebooks s'exécutent, ce à quoi ils peuvent accéder et le dépannage des paquets.
- Prévention de la perte de données — les contrôles DLP qui s'appliquent au sein des workflows.
- Utilisation et coûts de la gouvernance — surveillez les dépenses en capacités d'IA depuis la même section Gouvernance.