Partager via


Utiliser les clés d’accès dans Azure Functions

Azure Functions vous permet d’utiliser des clés secrètes pour rendre plus difficile l’accès à vos points de terminaison de fonction. Cet article décrit les différents genres de clés d’accès pris en charge par Functions, et explique comment les utiliser.

Bien que les clés d’accès fournissent une certaine atténuation contre les accès indésirables, vous devez prendre en compte d’autres options pour sécuriser les points de terminaison HTTP en production. Par exemple, il n’est pas recommandé de distribuer des secrets partagés dans une application publique. Si votre fonction est appelée à partir d’un client public, vous devez implémenter les mécanismes de sécurité suivants, ou en appliquer d’autres :

Les clés d’accès fournissent la base de l’autorisation HTTP dans les fonctions déclenchées par des requêtes HTTP. Pour plus d’informations, consultez Niveau d’autorisation.

Comprendre les clés

L’étendue d’une clé d’accès et les actions qu’elle prend en charge dépendent du type de clé d’accès.

Type de clé Nom de clé Niveau d’authentification HTTP Description
Fonction default ou défini par l’utilisateur function Autorise l’accès uniquement à un point de terminaison de fonction spécifique.
Hôte default ou défini par l’utilisateur function Autorise l’accès à tous les points de terminaison de fonction dans une application de fonction.
Élément maître _master admin Clé d’hôte spéciale qui fournit également un accès administratif aux API REST d’exécution dans une application de fonction. Cette clé ne peut pas être révoquée. Dans la mesure où la clé principale octroie des autorisations élevées dans votre application de fonction, vous ne devez pas partager cette clé avec des tiers, ou la distribuer dans les applications clientes natives.
Système Dépend de l’extension n/a Certaines extensions peuvent nécessiter une clé gérée par le système pour accéder aux points de terminaison de webhook. Les clés système sont conçues pour les points de terminaison de fonctions spécifiques à l’extension qui sont appelés par les composants internes. Par exemple, le déclencheur Event Grid exige que l’abonnement utilise une clé système lors de l’appel du point de terminaison du déclencheur. Durable Functions utilise également des clés système pour appeler API d’extension de tâche durable.
Les clés système peuvent uniquement être créées par des extensions spécifiques, et vous ne pouvez pas définir explicitement leurs valeurs. À l’instar d’autres clés, vous pouvez générer une nouvelle valeur pour la clé à partir du portail ou à l’aide des API clé.

Chaque clé est nommée à titre de référence. Il existe une clé par défaut (nommée default) au niveau de la fonction et de l’hôte. Les clés de fonction prennent le pas sur les clés d’hôte. Quand deux clés portent le même nom, la clé de fonction est toujours utilisée.

Le tableau suivant compare les utilisations de différents types de clés d’accès :

Action Étendue Type de clé
Exécuter une fonction Fonction spécifique Fonction
Exécuter une fonction Toutes les fonctions Fonction ou hôte
Appeler un point de terminaison admin Conteneur de fonctions Principale uniquement
Appeler des API d’extension de tâche durables Application de fonction* System
Appeler un webhook spécifique à une extension (interne) Application de fonction* système

*Étendue déterminée par l’extension.

Conditions clés

Au sein de Functions, les clés d’accès sont des tableaux de 32 octets générés aléatoirement, et codés sous forme de chaînes au format base 64 utilisables de manière sécurisée dans les URL. Bien que vous puissiez générer vos propres clés d’accès et les utiliser avec Functions, nous vous recommandons vivement de laisser Functions générer toutes vos clés d’accès à votre place.

Les clés d’accès générées par Functions incluent des valeurs de signature et de somme de contrôle spéciales qui indiquent le type de clé d’accès, et le fait qu’elles ont été générées par Azure Functions. La présence de ces composants supplémentaires dans la clé elle-même facilite grandement la détermination de la source de ces genres de secrets durant l’analyse de sécurité et d’autres processus automatisés.

Pour permettre à Functions de générer vos clés à votre place, ne fournissez pas la clé value aux API qui vous permettent de générer des clés.

Gérer le stockage des clés

Les clés sont stockées dans votre Function App dans Azure, et chiffrées au repos. Par défaut, les clés sont stockées dans un conteneur de stockage Blob dans le compte fourni par le paramètre AzureWebJobsStorage. Vous pouvez utiliser le paramètre AzureWebJobsSecretStorageType pour remplacer ce comportement par défaut, et stocker plutôt les clés dans l’un de ces autres emplacements :

Emplacement Valeur Description
Un deuxième compte de stockage blob Stocke les clés au sein de Stockage Blob, dans un compte de stockage différent de celui utilisé par le runtime Functions. Le compte et le conteneur spécifiques utilisés sont définis par une URL SAP (signature d’accès partagé) définie dans le paramètre AzureWebJobsSecretStorageSas. Vous devez conserver le paramètre AzureWebJobsSecretStorageSas quand l’URL SAP change.
Azure Key Vault keyvault Le coffre de clés défini dans AzureWebJobsSecretStorageKeyVaultUri est utilisé pour stocker les clés.
Système de fichiers files Les clés sont conservées dans le système de fichiers local, ce qui est le comportement par défaut dans Functions v1.x. Le stockage dans le système de fichiers n’est pas recommandé.
Secrets Kubernetes kubernetes L’ensemble de ressources dans AzureWebJobsKubernetesSecretName est utilisé pour stocker des clés. Pris en charge uniquement quand votre application de fonction est déployée sur Kubernetes. Azure Functions Core Tools génère automatiquement les valeurs quand vous l’utilisez pour déployer votre application sur un cluster Kubernetes.

Quand vous utilisez Key Vault pour le stockage de clés, les paramètres d’application dont vous avez besoin dépendent du type de l’identité managée, affectée par le système ou affectée par l’utilisateur.

Nom du paramètre Attribué par le système Affecté par l’utilisateur Inscription d'application
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Utiliser des clés d’accès

Les fonctions déclenchées par HTTP peuvent généralement être appelées à l’aide d’une URL au format : https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Quand le niveau d’autorisation d’une fonction donnée se voit affecter une valeur autre que anonymous, vous devez également fournir une clé d’accès dans votre requête. La clé d’accès peut être fournie dans l’URL à l’aide de la chaîne de requête ?code=, ou dans l’en-tête de requête (x-functions-key). Pour plus d’informations, consultez les autorisations relatives aux clés d’accès.

Pour accéder aux API REST du runtime (sous /admin/), vous devez fournir la clé principale (_master) dans l’en-tête de requête x-functions-key. Vous pouvez supprimer les points de terminaison admin à l’aide de la propriété de site functionsRuntimeAdminIsolationEnabled.

Récupérer vos clés d’accès aux fonctions

Vous pouvez obtenir des clés de fonction et d’hôte par programmation à l’aide des API Azure Resource Manager suivantes :

Pour découvrir comment appeler les API Azure Resource Manager, consultez les informations de référence sur l’API REST Azure.

Vous pouvez utiliser ces méthodes pour obtenir des clés d’accès sans avoir à utiliser les API REST.

  1. Connectez-vous au portail Azure, puis recherchez et sélectionnez Application de fonction.

  2. Sélectionnez l’application de fonction que vous souhaitez utiliser.

  3. Dans le volet gauche, développez Functions, puis sélectionnez Clés d’application.

    La page Clés d’application s’affiche. Dans cette page s’affichent les clés d’hôte qui peuvent être utilisées pour accéder à n’importe quelle fonction de l’application. La clé système est également affichée, ce qui donne à n’importe quel utilisateur un accès de niveau administrateur à toutes les API d’application de fonction.

Vous pouvez également mettre en pratique le principe des privilèges minimum en utilisant la clé pour une fonction spécifique. Vous pouvez obtenir des clés spécifiques à une fonction sous l’onglet Clés de fonction d’une fonction particulière déclenchée par une requête HTTP.

Renouveler ou créer des clés d’accès

Quand vous renouvelez ou créez vos valeurs de clé d’accès, vous devez redistribuer manuellement les valeurs de clé mises à jour à tous les clients qui appellent votre fonction.

Vous pouvez renouveler les clés de fonction et d’hôte par programmation, ou en créer d’autres, à l’aide des API Azure Resource Manager suivantes :

Pour découvrir comment appeler les API Azure Resource Manager, consultez les informations de référence sur l’API REST Azure.

Vous pouvez utiliser ces méthodes pour obtenir des clés d’accès sans avoir à créer manuellement des appels aux API REST.

  1. Connectez-vous au portail Azure, puis recherchez et sélectionnez Application de fonction.

  2. Sélectionnez l’application de fonction que vous souhaitez utiliser.

  3. Dans le volet gauche, développez Functions, puis sélectionnez Clés d’application.

    La page Clés d’application s’affiche. Dans cette page s’affichent les clés d’hôte qui peuvent être utilisées pour accéder à n’importe quelle fonction de l’application. La clé système est également affichée, ce qui donne à n’importe quel utilisateur un accès de niveau administrateur à toutes les API d’application de fonction.

  4. Sélectionnez Renouveler la valeur de clé en regard de la clé à renouveler, puis sélectionnez Renouveler et enregistrer.

Vous pouvez également renouveler une clé de fonction sous l’onglet Clés de fonction d’une fonction particulière déclenchée par une requête HTTP.

Supprimer des clés d’accès

Vous pouvez supprimer des clés de fonction et d’hôte par programmation à l’aide des API Azure Resource Manager suivantes :

Pour découvrir comment appeler les API Azure Resource Manager, consultez les informations de référence sur l’API REST Azure.