Adresse IP fixe en sortie de Function App via VNET

Tanguy SCHOUBERT
Publié par Tanguy SCHOUBERT
Catégorie : Azure / Azure Functions
01/07/2022

Depuis une fonction Azure, nous avons besoin d’aller déposer des fichiers sur un SFTP. Celui-ci est configuré de telle sorte que toutes les adresse IP entrantes sont bloquées par défaut. Pour avoir les droits d’accès et d’écriture, les adresses IP des processus doivent être white-listées au préalable. Il est donc nécessaire que notre fonction Azure se présente auprès du serveur SFTP avec une adresse IP fixe.

 

Description du besoin

 

Dans la configuration réseau de notre Function App, nous avons la liste d’adresses IP que notre fonction utilise pour le traffic sortant :

 

liste_adresses_ip_ pour_traffic_sortant

 

Il nous suffirait donc théoriquement de white-lister ces adresses IP. Mais le problème est que cette liste d’adresses peut changer, elle n’est pas garantie dans le temps. Cela implique qu’il nous faudrait en fait white-lister toutes les adresses potentiellement utilisables par les data centers Azure, en fonction de leur région. Cette liste globale est téléchargeable sur le site de Microsoft (https://www.microsoft.com/en-us/download/details.aspx?id=56519). Mais cette approche reste contraignante, puisqu’il faut ajouter non pas une mais potentiellement plusieurs centaines d’adresses IP à la configuration du SFTP.

Pour éviter cela, nous avons une alternative : utiliser un Virtual Network.

 

Mise en place de la solution

 

Nous devons créer trois ressources : une adresse IP publique, un Virtual Network et une NAT Gateway.

 

liste_de_ressources

 

Une fois l’adresse IP créée, nous pouvons créer la NAT Gateway en ajoutant dans la section Outbound IP la nouvelle adresse :

 

nat_gateway

 

Ensuite, nous pouvons créer le Virtual Network, lui ajouter un Subnet et configurer le lien vers la NAT Gateway fraîchement instanciée :

 

virtual_network_subnet_lien_vers_nat_gateway

 

Et enfin nous pouvons lier notre Function App à notre Virtual Network et à notre Subnet, dans la section Networking :

 

liaison_function_app_virtual_network_subnet_dans_section_networking

 

Toutes les fonctions qui seront hébergées dans le Function App disposeront désormais d’une seule adresse IP fixe de sortie. Il ne reste plus qu’à white-lister cette adresse IP du côté SFTP. Attention, seuls certains plans des Azure Functions prennent en charge les Virtual Networks (https://docs.microsoft.com/en-us/azure/azure-functions/functions-networking-options#matrix-of-networking-features).