# Identifier et migrer vos connexions hybrides sur Azure

# Introduction

Dans cet article, nous allons explorer comment identifier et extraire les informations sur les connexions hybrides utilisées par les applications web dans plusieurs souscriptions Azure. Nous utiliserons un script PowerShell pour automatiser ce processus et exporter les données dans un fichier CSV.

Ce fichier contiendra des informations précieuses telles que le nom de la souscription, le groupe de ressources, le nom de l'application web, le framework utilisé, la version de .NET, et le nom de la connexion hybride.

# Qu’est-ce qu’une connexion hybride ?

Dans le monde moderne d’Azure, les applications web doivent souvent communiquer avec des ressources locales ou d'autres services hébergés dans des environnements hybrides.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1741612473805/8703bdd1-6710-48f9-abda-30578cbcdcbe.png align="center")

Les connexions hybrides d'Azure permettent de créer des connexions sécurisées entre les applications web hébergées sur Azure et les ressources locales, sans avoir besoin de configurer des VPN complexes ou des tunnels SSH.

![Capture d’écran des détails des connexions hybrides.](https://learn.microsoft.com/fr-fr/azure/app-service/media/app-service-hybrid-connections/hybrid-connections-properties.png align="left")

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Cette solution peut être une alternative à la mise en place d'un VPN ou d'une express route, mais elle a des contraintes concernant la<strong> bande passante</strong> et la <strong>latence associée</strong>.</div>
</div>

# Comment extraire les connexions hybrides associées à vos web apps ?

```bash
# Description: This script lists all the hybrid connections for all the web apps in all the subscriptions defined in the $subscriptions variable.
# The output is written in a CSV file with the following columns: Subscription, ResourceGroup, WebAppName, Application, DotNetVersion, HybridConnectionName
$filename = "hybrid-connections.csv"
# Write the header of the CSV file
"Subscription, ResourceGroup, WebAppName, Application, DotNetVersion, HybridConnectionName" | Out-File -FilePath $filename
# Define the subscriptions to loop through
$subscriptions = @("MyApp-Development", "MyApp-Testing", "MyApp-Staging", "MyApp-Production")
# Loop through all subscriptions
foreach ($subscription in $subscriptions) {
    az account set --subscription $subscription
    $sites = az webapp list --query "[].{Name:name, Rg:resourceGroup, Application:tags.application}" -o json | ConvertFrom-Json
    foreach ($site in $sites) {
        # Get the .NET framework version of the web app
        $dotnetFrameworkVersion = az webapp config show --resource-group $site.Rg --name $site.Name --query netFrameworkVersion
        # Get all the hybrid connections for the web app
        $hybridConnections = az webapp hybrid-connection list --resource-group $site.Rg --name $site.Name | ConvertFrom-Json
        # Write output in CSV file format with the following columns: Subscription, ResourceGroup, WebAppName, Application, DotNetVersion, HybridConnectionName
        foreach ($hybridConnection in $hybridConnections) {
            $output = $subscription + "," + $site.Rg + "," + $site.Name + "," + $site.Application + "," + $dotnetFrameworkVersion + "," + $hybridConnection.name
            $output | Out-File -FilePath $filename -Append
        }
    }
}
```

# Quelle solution adopter pour les remplacer ?

Mon objectif a été de les identifier pour les migrer vers une solution plus robuste utilisant l'intégration vNet et une express route Azure.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1741613305386/36c33f79-76cb-4863-a821-04a9b7916066.png align="center")

## Intégration au réseau virtuel

La fonctionnalité d’intégration au réseau virtuel :

* Nécessite un plan tarifaire de base ou Standard pris en charge, Premium, Premium v2, Premium v3 ou Elastic Premium App Service.
    
* Le sous-réseau doit être dédié au service `Microsoft.Web/serverFarms`.
    
* Prend en charge les protocoles `TCP` et `UDP`.
    
* Fonctionne avec les applications App Service, les applications de fonction et les applications logiques.
    

## Routage de l’application

App Service dispose de paramètres d'application existants pour configurer l'application et l'acheminement de la configuration. Vous pouvez toujours utiliser le paramètre d’application `WEBSITE_VNET_ROUTE_ALL` ou `vnetRouteAllEnabled` pour configurer le routage des applications.

Il existe également des paramètres d’application pour certaines options de routage de la configuration. Ces paramètres d’application sont nommés `WEBSITE_CONTENTOVERVNET` et `WEBSITE_PULL_IMAGE_OVER_VNET`.

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">L’adresse&nbsp;IP privée assignée à une instance est exposée via la variable d’environnement <strong>WEBSITE_PRIVATE_IP</strong>.</div>
</div>

# Conclusion

En conclusion, l'intégration au réseau virtuel et le routage d'application offrent des solutions robustes pour améliorer la connectivité et la sécurité des applications. En utilisant des plans tarifaires adaptés et en configurant correctement les paramètres d'application, les entreprises peuvent tirer parti des fonctionnalités avancées d'Azure pour optimiser leurs services. Ces stratégies permettent non seulement de renforcer l'infrastructure, mais aussi de garantir une meilleure performance et une gestion efficace des ressources réseau.

# Liens utiles

* [Microsoft Learn - Connexions hybrides d’Azure App Service](https://learn.microsoft.com/fr-fr/azure/app-service/app-service-hybrid-connections?wt.mc_id=MVP_358598)
    
* [Microsoft Learn - Activer l’intégration au réseau virtuel dans Azure App Service](https://learn.microsoft.com/fr-fr/azure/app-service/configure-vnet-integration-enable?wt.mc_id=MVP_358598)
