Veuillez activer Javascript pour voir le contenu

[Azure] Autoriser un agent de build hébergé à déployer sur Azure

· ☕ 2 min de lecture

Azure DevOps (Travis, Google Cloud build & co) proposent des agents de build en mode Saas (hébergés par un tier).
Ils sont très pratique car il n’y a aucune infrastructure à gérer mais ils peuvent poser problème lorsque la build doit se faire sur un service protégé.
En effet les agents étant public ils peuvent ne pas avoir les autorisations pour déployer sur un service.

J’ai rencontré le problème avec le service Azure Service Fabric protégé par un Network Security Group, lors de l’exécution de la tâche de déploiement cette dernière ne se fait pas car la sécurité refuse toutes les ip public.

Si vous utilisez ExpressRoute le problème ne se pose pas car vous avez une liaison privée avec Azure.

Solutions

Première solution (qui sera la meilleure dans le futur)

Première solution mais qui n’est pas encore faisable aurait été d’ajouter le Service Tag Azure Devops au Network Security Group, mais ce dernier n’existe pas encore.
Néanmoins il est possible d’ajouter le tag AzureCloud en attendant, mais c’est un “légèrement” bourrin…

Deuxième solution (bourrin)

Seconde solution est d’ajouter les plages d’ip liées à votre service de build.
L’ensemble des ip public Azure est présente ici : https://www.microsoft.com/en-us/download/details.aspx?id=56519 et tout les services fournissent ces données : travis, google cloud

Ca marche mais c’est pas top, en effet les ip public peuvent changer (la liste est mise à jour par Microsoft toutes les semaines), donc il va falloir penser à les mettre à jour et cela implique d’ajouter des plages d’ip pour “gérer tous les cas”.

Troisième solution

Troisième solution que je préfère est d’ajouter lors de la build l’ip de l’agent de build au Network Security Group.
Sur Azure Devops cela se fait via la tâche Azure Cli et il existe des équivalents ailleurs (Jenkins: azure-cli, Bamboo: azure-cli-run…).
Voici le script générique (à adapter en fonction du service de build utilisé et des ports requis):

On oublie pas de supprimer la règle après la build

Et voilà!

Sources

Documentation

Partager sur

Jérémy Landon
ÉCRIT PAR
Jérémy Landon
Freelance / Author / Speaker / Open source contributor

Contenu de cette page