Devin Connect est actuellement en accès anticipé. Les fonctionnalités et la configuration peuvent évoluer. Contactez l’équipe en charge de votre compte Cognition si l’accès anticipé vous intéresse.
Rôle de Devin Connect
Devin Connect comporte deux parties, configurées indépendamment l’une de l’autre. Un proxy de politique au sein de votre réseau. Le Gateway est un proxy HTTP CONNECT doté d’une liste d’autorisation en mode refus par défaut. Il reçoit une demande de connexion vershost:port, la confronte à vos routes, résout le nom avec votre propre DNS, ouvre la connexion vers la destination et relaie des octets opaques. Ni le Gateway ni l’infrastructure Devin ne terminent ni n’inspectent le TLS entre la VM Devin et votre service, et chaque connexion est consignée dans le journal d’audit.
Un chemin privé entre Devin et ce proxy. Devin doit atteindre le proxy sans qu’aucune des deux parties n’expose quoi que ce soit sur l’internet public. Deux approches sont possibles, et le proxy se comporte de façon identique dans les deux cas :
- Tunnel inverse : le Gateway ouvre une connexion sortante vers un endpoint côté Devin via TLS, et Devin renvoie les demandes de connexion par ce tunnel. Aucun flux entrant n’est ouvert vers votre réseau, et aucune intégration avec un fournisseur cloud n’est nécessaire.
- AWS PrivateLink : vous placez un Network Load Balancer et un VPC Endpoint Service devant le Gateway, et Cognition le consomme au moyen d’un Interface VPC Endpoint dans le VPC de votre dedicated tenant. Le trafic reste sur le backbone AWS et Devin se connecte directement au Gateway via des IP privées.
- VPC mono-locataire dédié. Votre Devin déploiement s’exécute dans son propre VPC (voir le modèle Customer Dedicated Deployment). Les VM Devin acheminent le trafic destiné à vos destinations routées vers le Gateway via un contrôle de sortie configuré par Cognition.
- Refus par défaut, appliqué à deux niveaux. Les routes sont appliquées sur le Gateway et côté Devin : une modification de configuration d’un seul côté ne peut donc pas élargir les accès. Router une destination n’élargit jamais les autorisations d’une session : le security profile de la session doit toujours l’autoriser.
- Le TLS de votre application est de bout en bout. Le Gateway se contente de transmettre des flux d’octets opaques.
- Le DNS reste dans votre réseau. Les cibles des routes sont résolues par vos resolvers (par défaut le résolveur système de l’hôte du Gateway, ou les nameservers que vous configurez).
- Un seul déploiement couvre toutes les destinations routées. Vous ajoutez les hostnames et les plages IPv4 dans les Settings de Devin plutôt que de mettre en place une tuyauterie propre à chaque service.
Choisir un mode de connectivité
Configurer Devin Connect
Dans les deux modes, la configuration s’effectue dans la webapp Devin, sur la page « Devin Connect » des paramètres Enterprise, accessible aux utilisateurs disposant du rôle d’administrateur approprié. Un compte peut disposer de plusieurs gateways, chacune acheminant son propre groupe de destinations : une gateway à tunnel inverse au maximum, et autant de gateways PrivateLink que nécessaire.- Choisissez « Add gateway », donnez-lui un nom et sélectionnez un type de connexion : « Tunnel » pour le tunnel inverse, ou « Direct » pour AWS PrivateLink. Pour « Direct », saisissez également le nom DNS et le port de l’Interface Endpoint (voir l’onglet AWS PrivateLink).
- Sur la carte de la gateway, choisissez « Add destination » pour chaque destination que Devin doit joindre par son intermédiaire : un hostname exact, ou bien une adresse IPv4 ou un bloc CIDR tel que
10.20.0.0/16. Les caractères génériques ne sont pas pris en charge. Une destination ne peut appartenir qu’à une seule gateway. - Pour une gateway à tunnel, choisissez « Generate token » pour l’enrôler. Le token d’enrôlement ne s’affiche qu’une seule fois, n’est jamais stocké par Devin et peut être renouvelé ou révoqué à tout moment via « Regenerate token ». Les gateways directes n’ont pas de tunnel à authentifier : cette étape ne les concerne donc pas.
- Pour une gateway à tunnel, copiez l’extrait de déploiement correspondant à votre plateforme (Docker, Kubernetes, AWS ECS, Terraform sur ECS ou EC2, ou un hôte Linux). L’extrait contient un fichier
config.yamlprêt à l’emploi, généré à partir des destinations de la gateway : pensez à le copier de nouveau après toute modification de celles-ci.
Destinations par hostname et IPv4
- Les hostnames sont mis en correspondance avec le nom auquel la session se connecte, lu dans le SNI TLS ou dans l’en-tête HTTP
Host. Ils n’acheminent donc que le trafic TLS et HTTP en clair. Le Gateway résout le nom à l’aide de votre DNS. - Les adresses IPv4 et les CIDR sont mis en correspondance avec l’adresse IP de destination de la connexion ; ils acheminent donc tout protocole TCP, y compris les connexions SSH et les connexions aux bases de données. Devin ne résout pas vos noms internes pour ces routes : les sessions se connectent par adresse IP, ou bien vous fournissez la résolution de noms dans l’environnement, par exemple au moyen d’entrées
/etc/hostsdéfinies dans votre blueprint.
config.yaml du Gateway lui-même, autorisez les destinations IPv4 à l’aide de règles ipv4 ; le snippet généré les inclut.
Modes de connectivité
- Tunnel inverse
- AWS PrivateLink
Connectivité sortante uniquement, du gateway de votre réseau vers votre VPC Devin dédié
<customer>.gateway.devinenterprise.com:443. Vous n’ouvrez jamais de port entrant. Un tunnel enregistré ne transporte que les flux ouverts par le côté Devin en direction de votre Gateway ; il ne constitue pas une voie d’accès entrante vers Devin.L’enrôlement se déroule ainsi :- Devin vous délivre un token d’enrôlement pour le gateway du tunnel depuis la settings page “Devin Connect”.
- Vous installez le token sur l’hôte du Gateway, à l’emplacement indiqué par
tunnel.auth_token_file. - Le Gateway se connecte à
<customer>.gateway.devinenterprise.com:443, vérifie le certificat serveur de l’edge Devin et présente le token. - L’edge valide le token (comparaison à temps constant avec une empreinte stockée ; le token brut n’est jamais conservé côté Devin) et enregistre le tunnel. Les connexions initiées côté Devin vers les destinations du gateway transitent alors par ce tunnel.
tunnel et sans adresse listen : l’hôte du Gateway n’expose ainsi aucun port de proxy :Points supplémentaires à vérifier pour ce mode :
- Autorisez le trafic sortant de la Gateway vers
<customer>.gateway.devinenterprise.com:443et vers vos services internes figurant dans la liste d’autorisation. Aucune règle entrante n’est nécessaire. - Stockez le token d’enrôlement dans votre gestionnaire de secrets et montez-le sous forme de fichier. Ne l’inscrivez jamais en dur dans des images, dans une configuration versionnée ou dans des logs ; la Gateway ne le consigne jamais.
- Vous pouvez également fournir à Cognition vos plages CIDR de sortie afin de restreindre l’endpoint public au niveau IP (défense en profondeur ; le token d’enrôlement reste le point de contrôle de l’authentification).
Référence de configuration
Le Gateway se configure à l’aide d’un seul fichier YAML, strictement validé et en mode fail-closed : une configuration qui ne passe pas la validation est rejetée dans son intégralité et la configuration précédente reste active. Le fichier est interrogé périodiquement toutes les 5 secondes et rechargé à chaud.Routes (liste d’autorisation)
Tout ce qui ne correspond à aucune route est refusé ; une liste de routes vide refuse tout. Les routes sont évaluées dans l’ordre et la première correspondance l’emporte.
Les hostnames sont mis en correspondance tels qu’ils ont été demandés, avant la résolution DNS : la politique s’applique donc au nom lui-même, et non à l’IP vers laquelle il se résout.
Écouteurs
DNS
Les routes par nom d’hôte sont refusées si votre DNS les résout vers des adresses de bouclage, link-local ou non spécifiées : un nom figurant dans la liste d’autorisation ne peut donc pas être redirigé vers l’hôte du Gateway lui-même ni vers un endpoint de métadonnées.
Exécution du Gateway
Le Gateway est distribué sous forme d’image de container contenant un unique binary statique (l’image est construiteFROM scratch et s’exécute avec un user non-root). Montez la config à l’emplacement /etc/devin-gateway/config.yaml et, en mode tunnel, le fichier de token à l’emplacement indiqué par tunnel.auth_token_file.
admin_listen :
/healthzpour l’état d’activité du processus./readyzpour la disponibilité./metricspour les métriques Prometheus.
- Exécutez le Gateway dans un sous-réseau privé.
- Raccordez
/healthzet/readyzaux health checks de votre orchestrator. - Maintenez la synchronisation entre les destinations de chaque gateway dans les Settings de Devin et les routes de la config de son Gateway ; une destination autorisée d’un seul côté n’est pas joignable.
Journalisation et intégration SIEM
Le Gateway écrit ses logs sur stdout. Lorsque stdout n’est pas un terminal (le cas normal dans un container), les logs sont émis sous forme de lignes JSON, directement exploitables par une machine. Pour les acheminer vers votre SIEM, utilisez le pipeline de logs standard de votre plateforme : le pilote de logs du container ou l’agent (CloudWatch Logs, Fluent Bit, Vector, agent Datadog, etc.) collecte stdout et le transmet comme les logs de n’importe quelle autre charge de travail. Le Gateway ne nécessite aucune configuration spécifique au SIEM. Les événements d’audit de connexion comprennent :conn_openetconn_close, avec l’hôte et le port de destination, le nom de la route correspondante, l’adresse du client, les octets transférés dans chaque direction et la durée.deny, avec la destination et le motif (par exemple, aucune route de liste d’autorisation correspondante).

