Les directions de l'ingénierie logicielle évoluant dans des secteurs réglementés — tels que la fintech, la santé ou l'édition logicielle d'entreprise — font face à un dilemme marqué lors de l'adoption d'outils d'intelligence de code : des solutions comme Mutable.ai automatisent la documentation vivante (Auto Wiki), génèrent des diagrammes d'architecture et offrent une recherche conversationnelle avec citations à la ligne près, mais faire transiter du code source propriétaire par un service SaaS public multilocataire enfreint les règles strictes de sécurité et de conformité.
La réponse architecturale consiste à déployer Mutable.ai au sein d'un cloud privé virtuel (AWS VPC) dédié et contrôlé par l'entreprise. En isolant les moteurs d'analyse syntaxique et les index vectoriels dans des sous-réseaux privés, en acheminant les inférences de modèles de langage via AWS PrivateLink et en reliant le système aux dépôts Git internes, les organisations bénéficient d'une compréhension automatisée de leur code sans qu'aucune ligne ne quitte leur périmètre de sécurité ni ne participe à l'entraînement de modèles partagés.
1. Modèle de menaces et objectifs d'un déploiement privé
Dans une configuration SaaS multilocataire standard, le traitement du code source expose l'entreprise à trois risques majeurs :
- Contamination des modèles partagés : La logique métier propriétaire, les règles de calcul sensibles ou les composants cryptographiques risquent d'être absorbés par les jeux de données de réentraînement des modèles publics.
- Exposition des données en transit : Le code transitant par des points de terminaison publics est vulnérable à l'interception ou à des erreurs de configuration sur des infrastructures tierces.
- Délégation excessive de jetons d'accès : Accorder à un SaaS externe des permissions de lecture étendues sur l'ensemble des dépôts accroît la surface d'attaque sur la chaîne d'approvisionnement logicielle.
L'offre Enterprise de Mutable.ai propose une isolation à locataire unique (single-tenant). Déployée dans un VPC AWS dédié, l'intégralité du pipeline — analyse de l'arbre syntaxique abstrait (AST), vectorisation, rendu des diagrammes d'architecture et génération du wiki — s'exécute strictement à l'intérieur des frontières privées de l'entreprise. Des garanties contractuelles et techniques assurent que le code n'est jamais mutualisé pour entraîner des modèles de fondation externes.
2. Topologie réseau recommandée dans AWS VPC
Une architecture sécurisée dans AWS VPC isole complètement le plan de données (analyse du code et recherche vectorielle) d'Internet, en s'appuyant sur des points de terminaison d'interface privés.
+----------------------------------------------------------------------------------+
| VPC AWS Entreprise (Périmètre Réseau Isolé) |
| |
| [ Sous-réseaux Privés A et B - Couche de Calcul ] |
| - Workers d'analyse et de génération Auto Wiki de Mutable.ai (ECS / EKS) |
| - Moteur de recherche et de chat sur la base de code |
| - Magasin de vecteurs et métadonnées (Chiffré par clés AWS KMS) |
| | |
| |-- (Flux interne HTTPS / ENI privée) |
| v |
| [ Points de terminaison d'interface VPC (AWS PrivateLink) ] |
| +-- com.amazonaws.<region>.bedrock-runtime --> Inférence de modèle dédiée |
| +-- com.amazonaws.<region>.s3 --> Artéfacts et wikis statiques |
| +-- com.amazonaws.<region>.secretsmanager --> Jetons et secrets Git |
| +-- com.amazonaws.<region>.kms --> Clés de déchiffrement KMS |
| |
+----------------------------------------------------------------------------------+
^ ^
| (VPC Peering / Transit Gateway) | (PrivateLink / SSO d'entreprise)
v v
+-------------------------------+ +--------------------------+
| Dépôt Git Interne | | Fournisseur d'Identité |
| (GitHub Enterprise / GitLab) | | Okta / SAML / OIDC |
+-------------------------------+ +--------------------------+
Principes directeurs de l'architecture
- Zéro IPv4 publique et zéro passerelle Internet : Les sous-réseaux applicatifs n'ont aucune route par défaut
0.0.0.0/0pointant vers une passerelle Internet (IGW) ou une passerelle NAT ouverte. - Inférence fermée via AWS PrivateLink : Les requêtes adressées aux modèles de fondation (comme Amazon Bedrock Runtime) transitent exclusivement par le réseau fédérateur privé d'AWS via des VPC Endpoints d'interface.
- Connexions internes est-ouest restreintes : La communication avec les serveurs Git internes s'effectue via AWS Transit Gateway ou VPC Peering, en n'ouvrant que les ports strictement nécessaires au clonage et aux webhooks.
3. Guide de configuration étape par étape
Étape 1 : Provisionner les sous-réseaux isolés et les groupes de sécurité
Créez des sous-réseaux privés répartis sur au moins deux zones de disponibilité (AZ) pour assurer la haute disponibilité. Les tables de routage ne doivent contenir que les routes locales du VPC et les liaisons vers les passerelles internes.
Définissez un groupe de sécurité (Security Group) hautement restrictif pour le cluster Mutable.ai :
- Règles entrantes (Inbound) : Autorisez le port TCP 443 uniquement depuis les sous-réseaux de développement internes ou le bloc CIDR du Transit Gateway.
- Règles sortantes (Outbound) : Supprimez la règle par défaut
0.0.0.0/0et n'autorisez le port TCP 443 qu'à destination du groupe de sécurité associé aux points de terminaison VPC d'interface.
Étape 2 : Déployer les points de terminaison d'interface AWS PrivateLink
Créez les points de terminaison d'interface nécessaires dans les sous-réseaux privés afin que les conteneurs Mutable.ai puissent communiquer avec les services AWS sans accès à Internet :
- Inférence de modèles :
com.amazonaws.<region>.bedrock-runtimepour appeler les modèles de fondation autorisés (tels que Claude ou Llama hébergés sur Amazon Bedrock). - Gestion des secrets :
com.amazonaws.<region>.secretsmanagerpour récupérer de manière sécurisée les jetons d'accès aux dépôts Git. - Stockage d'objets :
com.amazonaws.<region>.s3(point de terminaison Gateway ou Interface) pour héberger les fichiers Markdown compilés, les diagrammes et les caches AST. - Gestion des clés :
com.amazonaws.<region>.kmspour les opérations de déchiffrement à la volée.
Activez l'option Private DNS sur chaque point de terminaison d'interface afin que les appels standards des SDK résolvent directement les adresses IP privées des interfaces réseau élastiques (ENI).
Étape 3 : Appliquer des stratégies de ressources aux points de terminaison (Endpoint Policies)
Restreignez l'accès aux seules ressources approuvées par le comité de sécurité directement au niveau du périmètre réseau :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSpecificModelsForMutableAI",
"Effect": "Allow",
"Principal": "*",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-5-sonnet*"
}
]
}
Étape 4 : Interconnexion avec les dépôts Git internes et automatisation des webhooks
L'atout de Mutable.ai réside dans la mise à jour continue de la documentation au fil des commits. Pour les serveurs GitHub Enterprise Server ou GitLab auto-hébergés :
- Interconnectez le VPC de Mutable.ai et le VPC hébergeant Git via AWS Transit Gateway.
- Stockez dans AWS Secrets Manager un jeton d'application Git avec des droits minimaux de lecture seule sur les dépôts sélectionnés.
- Pointez les webhooks de Pull Requests vers l'Application Load Balancer (ALB) interne de Mutable.ai afin de déclencher l'analyse différentielle et de publier les résumés d'architecture directement dans le PR.
Étape 5 : Chiffrement systématique au repos et en transit
- Au repos (At-Rest) : Chiffrez l'ensemble des volumes de la base vectorielle, des caches et des compartiments S3 à l'aide de clés gérées par le client (CMK) dans AWS KMS, avec rotation automatique annuelle.
- En transit (In-Transit) : Imposez TLS 1.3 sur toutes les communications internes et rejetez toute connexion HTTP non chiffrée au niveau de l'équilibreur de charge.
4. Contrôles opérationnels et critères d'audit
Avant et pendant l'exploitation en production, les équipes de sécurité doivent valider les critères suivants :
| Critère d'Audit | Outil et Mécanisme | Critère de Conformité |
|---|---|---|
| Blocage des sorties vers Internet | Analyse des journaux de flux (VPC Flow Logs) dans CloudWatch | Zéro paquet autorisé à destination d'adresses IP publiques non-AWS (0 paquet de fuite). |
| Non-rétention des données de modèle | Revue de la configuration Bedrock et des accords contractuels | Confirmation que ni les invites (prompts) ni les réponses générées ne sont conservées pour l'entraînement. |
| Héritage des autorisations Git | Intégration SSO via SAML 2.0 / OIDC (Okta / Entra ID) | Seuls les développeurs disposant de droits de lecture sur un dépôt peuvent consulter le wiki correspondant. |
| Audit des opérations de déchiffrement | Suivi des événements KMS Decrypt dans AWS CloudTrail | Les requêtes proviennent exclusivement du rôle d'exécution IAM associé au cluster Mutable.ai. |
5. Compromis d'architecture et conseils pratiques
| Approche Déployée | Avantage Principal | Contrainte Opérationnelle | Scénario Conseillé |
|---|---|---|---|
| VPC Client Totalement Privé (Auto-hébergé) | Souveraineté totale sur les données ; aucune dépendance externe à l'exécution | Maintenance des conteneurs, correctifs et dimensionnement à la charge de l'équipe interne | Défense, banques d'investissement, systèmes de santé critiques |
| VPC Géré à Locataire Unique (Liaison PrivateLink) | Aucune charge de gestion d'infrastructure ; mises à jour logicielles automatiques | Nécessite des conventions d'audit inter-entreprises et la gestion des points de terminaison | Fintechs en forte croissance, éditeurs de logiciels SaaS B2B |
Recommandations concrètes pour les architectes
- Démarrer par un périmètre restreint de composants partagés : Déployez la solution sur 2 à 3 bibliothèques transversales afin de valider la pertinence de l'analyse syntaxique et de mesurer la consommation de jetons.
- Nettoyer les secrets au niveau des hooks pré-commit et CI : Évitez que des clés d'API oubliées dans les commentaires de code ne soient indexées dans les pages Markdown de la documentation.
- Privilégier la synchronisation incrémentielle sur les monorépôts : Dans les dépôts volumineux, une réindexation intégrale à chaque commit consomme d'importantes ressources de calcul. Configurez Mutable.ai pour traiter uniquement les diffs Git lors des fusions.