web-dev-qa-db-fra.com

Quels sont les moyens de sécuriser les fonctions Azure

J'ai écrit 5 fonctions Azure dans Azure Portal à l'aide de c #.

Voici les étapes pour installer mon application: -

  • Copiez les scripts de déploiement sur le nœud Edge du cluster
  • Scripts de déploiement pour effectuer les opérations suivantes
    • Appelez les fonctions Azure pour obtenir mes versions d'application auprès de WASB.
    • Installer mon application sur le nœud Edge
    • Appelez les fonctions Azure pour effectuer une mise à jour.

Le processus ci-dessus sera exécuté sur le nœud Customer Edge.

L'autorisation utilisant " keys " décrite ici est juste pour fournir une autre couche d'autorisation de clé API et n'est pas applicable lorsque mon script doit être appelé par un client public (comme le nœud Edge) car il est découvert - là-bas.

Quelles sont les meilleures façons de sécuriser les fonctions Azure dans mon scénario?

16
Galet

Par défaut, les fonctions Azure sont publiques. Vous les déployez donc et le point de terminaison est disponible publiquement via l'adresse sur la fonction. Comme vous l'avez mentionné, vous pouvez définir l'accès au niveau de la fonction, ce qui signifie que vous devez passer une clé d'accès. Ils sont donc gentils s'ils sont protégés.

Il existe cependant d'autres options:

Vous pouvez créer des fonctions à l'intérieur d'un vnet à l'aide du service d'environnement Azure. Mais pour cela, vous payez beaucoup d'argent et vous devez utiliser la version de plan de service des fonctions Azure.

J'ai combiné API Management avec des fonctions. La gestion des API est un moyen d'exposer vos API aux consommateurs, mais de garder un bon contrôle sur l'utilisation. Le composant de gestion Api n'empêche pas la disponibilité de l'adresse publique Azure, mais j'ai implémenté un modèle dans le code qui recherche un jeton spécial qui est ajouté à une demande http dans le cadre de la gestion de l'application. Ou vous pouvez également définir des restrictions IP sur l'application Function pour autoriser le trafic uniquement à partir du point de terminaison de gestion des API. (Adresse IP) Donc, vous ne pouvez accéder à la fonction que via la gestion des applications.

Juste une note sur ce qui précède, le portail Azure a supprimé la possibilité de définir des restrictions IP via l'onglet réseau des fonctions standard. Vous devez donc aller dans l'explorateur de ressources et définir manuellement les restrictions IP dans la section de configuration Web.

Enfin, vous pouvez configurer un serveur oauth et valider le jeton dans la fonction ou dans un composant de gestion de l'API ou les deux.

10
Noel

Azure ASE (App Service Environment) est beaucoup trop cher pour seulement 5 fonctions. Vous pouvez sécuriser les fonctions en ajoutant une passerelle d'application et ajouter à la liste blanche l'adresse IP de la passerelle d'application dans la fonction. Vous pouvez trouver plus de détails ici: Whitelisting dans Azure Functions

Tout cela en plus d'avoir une authentification et une autorisation basées sur des jetons ou sur AAD (comme "Noel" mentionné dans la réponse précédente).

3
MuazzamAli