Administrer les adresses IP sortantes des App Services Azure
Il y a quelques semaines, nous avons reçu un email de Microsoft nous indiquant qu’une mise à jour des adresses IP entrantes et sortantes des Azure App Services pouvait rendre ces derniers non accessibles. Certaines de nos applications web étaient impactées par la mise à jour des adresses IP sortantes, nous avons donc du rapidement récupérer les nouvelles adresses IP sortantes à prendre en compte !
Voici le début de l’email en question :
Dans cet article, nous allons découvrir comment fonctionnent les adresses IP sortantes des App Services Azure et comment les récupérer.
Adresses IP entrantes VS adresses IP sortantes
Une application web Azure utilise deux types d’adresses IP :
- Une adresse IP entrante : Elle définit l’identité de l’application sur le web. Cette adresse IP peut être dynamique (par défaut) ou statique (si une liaison SSL sur l’IP est définie)
- N adresses IP sortantes : Elles définissent la source du trafic sortant de l’application web Azure, par exemple lors d’appels à des bases de données / services externes.
Pour des raisons de sécurité, certains services externes acceptent uniquement le trafic provenant d’adresses IP définies. La mise à jour des adresses IP sortantes des App Services Azure peuvent rendre obsolète les adresses IP sortantes existantes et certains services externes refuserons les connections entrantes provenant des App Services Azure.
Les adresses IP sortantes Azure peuvent être mise à jour des façon ponctuelle (c’est l’objet du mail !), mais également de façon automatique lors d’opérations de mises à l’échelle verticale.
Deux types d’adresses IP sortantes sont toujours à prendre en compte :
- Les adresses IP sortantes en cour d’utilisation par l’application web
- Les adresses IP sortantes potentiellement utilisable par l’application web, ces dernières sont habituellement nommées "possibleOutboundAdresses"
Récupération des adresses IP sortantes
Les portails web
Le portail Azure nous permet de récupérer les adresses IP sortantes de nos applications web, pour cela il suffit d’aller dans les propriétés de l'application web :
Sur la capture d’écran suivante, on peut voir les adresses IP sortantes d'une application web depuis le portail Azure:
Pour récupérer les adresses IP sortantes « possible », il est nécessaire d’utiliser les APIs Azure. Une façon simple de les utiliser est d’avoir recours au portail resources.azure.com qui permet de visualiser la définition des ressources Azure au format json.
Sur la capture d’écran suivante, on peut voir les adresses IP sortantes « possible » d'une application web depuis le portail https://resources.azure.com :
Ces portails sont relativement simples à utiliser, cependant lorsque nous avons de nombreuses applications web à administrer, l’utilisation de ces derniers peut devenir très longue et pénible ! Avec un script Powershell, nous pouvons récupérer les adresses IP sortantes relativement facilement.
Azure Powershell
Le script effectue les étapes suivantes :
- Connection à l’abonnement Azure cible
- Récupération de l’ensemble des applications web Azure de l’abonnement
- Itération sur chaque application web
- Récupération des propriétés de l’application web
- Ecriture dans la console des adresses IP sortantes ainsi que les adresses IP sortantes « possible »
$subscriptionId = "******" Login-AzureRmAccount -SubscriptionId $subscriptionId $webApps = Get-AzureRmWebApp foreach($webApp in $webApps){ $outboundIpAddresses = $webApp.OutboundIpAddresses $extendedConfig = Get-AzureRmResource -ResourceType Microsoft.Web/sites -ResourceName $WebApp.Name -ResourceGroupName $WebApp.ResourceGroup -ApiVersion 2015-08-01 | select -expand Properties $possibleOutboundIPAddresses = $extendedConfig.possibleOutboundIpAddresses $webApp.Name Write-Host `n if ($outboundIpAddresses.Length -gt 0){ Write-Host "OutboundIpAddresses" Write-Host `n $ips = $outboundIpAddresses.Split(",") $ips } if ($possibleOutboundIPAddresses.Length -gt 0){ Write-Host `n Write-Host "PossibleOutboundIPAddresses" Write-Host `n $possibleIps = $possibleOutboundIPAddresses.Split(",") $possibleIps Write-Host _________________________________ } }
Voici une capture d'écran de la console Powershell, après exécution du script :
Avec ce script, on peut facilement récupérer les deux types d’adresses IP sortantes de nos applications web !
Happy coding :)
Commentaires