Service Connections Custom dans Azure DevOps
Comment créer des Service Connections personnalisées dans Azure DevOps pour sécuriser et standardiser l’authentification vers des services externes, en les embarquant directement dans vos extensions.
Le Concept : Service Endpoint Types
Dans Azure DevOps, une Service Connection (ou Service Endpoint) est une ressource qui stocke les credentials pour se connecter à un service externe :
- Azure Resource Manager
- GitHub
- Docker Registry
- Kubernetes
- APIs tierces
Azure DevOps fournit des types de connexion prédéfinis, mais vous pouvez créer vos propres types custom via des extensions.
Pourquoi des Service Connections Custom ?
Problème : Credentials en clair
Sans Service Connection, les équipes doivent :
- Stocker les credentials dans des variables de pipeline
- Copier-coller les secrets manuellement
- Gérer les rotations manuellement
- Risque de fuite : credentials visibles dans les logs
Solution : Service Connection Custom
Créer un type de connexion custom permet de :
- Centraliser les credentials dans Azure DevOps (chiffrés)
- Réutiliser la même connexion dans tous les pipelines
- Gérer les rotations de manière centralisée
- Sécuriser : pas de credentials en clair dans le code
Anatomie d’une Service Connection Custom
Une Service Connection custom se définit dans le manifest de l’extension :
{
"id": "my-custom-connection",
"type": "ms.vss-endpoint.service-endpoint-type",
"targets": ["ms.vss-endpoint.endpoint-types"],
"properties": {
"name": "My Custom Service",
"displayName": "Connexion vers Mon Service",
"authenticationSchemes": [
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-basic",
"inputDescriptors": [
{
"id": "apiKey",
"name": "API Key",
"description": "Clé d'API du service",
"inputMode": "passwordbox"
},
{
"id": "endpoint",
"name": "Endpoint URL",
"description": "URL du service"
}
]
}
]
}
}
Composants clés
- authenticationSchemes : Comment authentifier (Basic, Token, OAuth, etc.)
- inputDescriptors : Champs du formulaire (API key, URL, etc.)
Le Game Changer : Embarquer dans l’Extension
Au lieu de demander aux équipes de créer manuellement le type de connexion, vous pouvez l’embarquer directement dans votre extension de type Task.
Approche classique ❌
- Publier les scripts dans un repo Git
- Écrire une doc expliquant comment créer le Service Endpoint Type
- Chaque équipe doit créer manuellement le type
- Divergence : chaque équipe configure différemment
Approche Extension ✅
- Définir le Service Endpoint Type dans l’extension
- Publier l’extension sur le Marketplace
- Les équipes installent l’extension → le type est automatiquement disponible
- Standardisation : même définition partout
Résultat : Installation en 1 clic, zéro configuration manuelle.
Liaison avec les Tasks
Une fois le Service Endpoint Type défini, vous pouvez le lier à vos tasks.
Dans la Task
{
"id": "my-task-id",
"name": "My Custom Task",
"inputs": [
{
"name": "serviceConnection",
"type": "connectedService:my-custom-connection",
"label": "Service Connection",
"required": true,
"helpMarkDown": "Sélectionnez la connexion vers le service"
}
]
}
Avantage : L’utilisateur sélectionne la connexion dans un dropdown, pas besoin de copier-coller des credentials.
Avantages de cette Approche
Sécurité
- ✅ Credentials chiffrés : Stockés dans Azure DevOps, pas dans le code
- ✅ Pas de credentials en clair : Jamais visibles dans les logs
- ✅ Rotation centralisée : Un seul endroit pour mettre à jour
UX
- ✅ Sélection simple : Dropdown au lieu de copier-coller
- ✅ Validation automatique : Test de connexion à la création
- ✅ Réutilisation : Une connexion pour tous les pipelines
Standardisation
- ✅ Même définition partout : Embarquée dans l’extension
- ✅ Pas de configuration manuelle : Installation = disponibilité
- ✅ Gouvernance : Contrôle centralisé
Intégration avec Auto-Renewal
Les Service Connections peuvent être intégrées avec des systèmes d’auto-renewal pour automatiser la rotation des secrets.
Principe :
Key Vault (rotation automatique)
↓
Détection de la rotation
↓
Service Connection (mise à jour via API Azure DevOps)
↓
Pipelines (utilisent les nouveaux secrets sans interruption)
Résultat : Zéro intervention manuelle pour la rotation des secrets.
Cas d’Usage Typiques
Les Service Connections custom sont idéales pour :
- APIs propriétaires : Services internes de l’entreprise
- SaaS tiers : Services externes sans type prédéfini
- Systèmes legacy : Intégration de systèmes existants
- Multi-cloud : GCP, AWS avec patterns custom
Ce Qu’il Faut Retenir
- Service Connections custom = Types de connexion personnalisés
- Embarquées dans extension = Installation automatique (pas de config manuelle)
- Sécurité = Credentials chiffrés, auto-renewal possible
- Liaison avec tasks =
connectedService:my-custom-connection - Standardisation = Même définition pour toutes les équipes
Les Service Connections custom transforment l’authentification vers des services externes en passant de credentials en clair à un modèle sécurisé et standardisé.
Articles Connexes
- Extensions Azure DevOps : Tasks et Marketplace - Comprendre le modèle de distribution
- DataSourceBindings : Cascading Dropdowns (à venir) - UX fluide avec auto-population