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

Les clés d’accès Azure Functions agissent comme des secrets partagés qui autorisent l’accès aux points de terminaison de fonction. Cet article décrit les types de clés d’accès pris en charge par Functions et comment utiliser des clés d’accès.

Bien que les clés d’accès offrent une certaine protection contre les accès indésirables, envisagez d’autres options pour sécuriser les terminaux HTTP en production. Par exemple, ne distribuez pas de secrets partagés dans une application publique. Si un client public appelle votre fonction, envisagez de mettre en œuvre ces mécanismes de sécurité ou d’autres :

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

Types de clés d’accè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 Descriptif
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.
Master _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. Puisque la clé maîtresse accorde des permissions élevées dans votre application de fonction, ne partagez pas cette clé avec des tiers ni ne la distribuez dans des 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 terminaux de fonction spécifiques à l’extension que les composants internes appellent. 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.
Seules les extensions spécifiques peuvent créer des clés système. 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 touche a un nom de référence. L’application de fonction et les niveaux de fonction ont chacun une touche par défaut nommée default. Les clés de fonction prennent le pas sur les clés d’hôte. Lorsque deux touches portent le même nom, la touche 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 Maître
Appeler des API d’extension de tâche durables Application de fonction* Système
Appelez un webhook spécifique à une extension (interne) Application de fonction* Système

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

Exigences de clé d’accè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, utilisez plutôt le processus de génération par défaut.

Les clés d’accès générées par les fonctions incluent des valeurs spéciales de signature et de somme de contrôle qui indiquent le type de clé d’accès et qu’Azure Functions l’a générée. Ces composants supplémentaires dans la clé facilitent la détermination de la source de ce type de secrets lors des analyses de sécurité et d’autres processus automatisés.

Pour permettre à Functions de générer vos clés, ne fournissez pas la clé value à aucune des API que vous pouvez utiliser pour générer des clés.

Stockage des clés d’accès

Votre application de fonctions dans Azure stocke les clés et les chiffre au repos. Par défaut, le AzureWebJobsStorage paramètre stocke les clés dans un conteneur de stockage Blob au sein du compte fourni. Utilisez ce AzureWebJobsSecretStorageType paramètre pour remplacer ce comportement par défaut et stockez les clés dans l’un de ces emplacements alternatifs :

Emplacement Valeur Descriptif
Un deuxième compte de stockage blob Stocke les clés dans le stockage Blob dans un compte de stockage différent de celui utilisé par l’exécution des fonctions. Le compte et le conteneur spécifiques utilisés sont définis par une URL de signature d’accès partagé (SAP) définie dans le AzureWebJobsSecretStorageSas paramètre. Vous devez conserver le paramètre AzureWebJobsSecretStorageSas quand l’URL SAP change.
Azure Key Vault keyvault Stocke les clés dans le coffre-fort à clés fixé dans AzureWebJobsSecretStorageKeyVaultUri.
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 Stocke les clés dans l’ensemble de ressources dans AzureWebJobsKubernetesSecretName. 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. Les secrets immuables ne sont pas compatibles.
Les secrets d'Azure Container Apps containerapps Les clés sont stockées dans le magasin de secrets Azure Container Apps, qui est le système de gestion des secrets interne pour Container Apps. Prise en charge uniquement lorsque votre application de fonction est déployée sur Azure Container Apps. Pour plus d’informations, voir Configurer le magasin secret des applications conteneur.

Lorsque vous utilisez Key Vault pour le stockage de clés, les paramètres nécessaires dépendent de la façon dont l’application s’authentifie à Key Vault : une identité managée attribuée par le système, une identité managée attribuée par l’utilisateur, ou une inscription à l’application.

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

Important

Les secrets ne sont pas limités aux applications de fonction individuelles par le biais du AzureWebJobsSecretStorageKeyVaultUri paramètre. Si plusieurs applications de fonction sont configurées pour utiliser le même coffre de clés, elles partagent les mêmes secrets, ce qui peut entraîner des collisions ou des remplacements de clés. Pour éviter un comportement inattendu, nous vous recommandons d’utiliser une instance Key Vault distincte pour chaque application de fonction.

Appeler les points de terminaison avec clés d’accès

Vous pouvez appeler des fonctions déclenchées par HTTP en utilisant une URL qui inclut le nom de la fonction. Lorsque vous définissez le niveau d’autorisation d’une fonction à une valeur autre que anonymous, vous devez également fournir une clé d’accès dans votre requête. Vous pouvez inclure la clé d’accès dans l’URL en utilisant la ?code= chaîne de requête 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 désactiver les terminaux administratifs en définissant la functionsRuntimeAdminIsolationEnabled propriété site.

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.

Remarque

Lorsque vous déployez votre application de fonction sur Azure Container Apps et utilisez AzureWebJobsSecretStorageType=ContainerApps, vous devez utiliser des méthodes spécifiques aux applications conteneurs pour récupérer les clés de fonction. Pour plus d’informations, consultez la gestion des clés d’accès dans la documentation des applications conteneur.

Utilisez ces méthodes pour obtenir des clés d’accès sans 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 menu de gauche, développez Fonctions, puis sélectionnez Clés d’application.

    La page Clés d’application s’affiche. Sur cette page, les touches hôtes sont affichées, que vous pouvez utiliser 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.

Conseil / Astuce

Vous pouvez également obtenir des clés d’accès pour vos fonctions en utilisant la commande func azure functionapp list-functions Azure Functions Core Tools avec cette --show-keys option. Pour plus d’informations, consultez la référence d’Azure Functions Core Tools.

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 menu de gauche, développez Fonctions, puis sélectionnez Clés d’application.

    La page Clés d’application s’affiche. Sur cette page, les touches hôtes sont affichées, que vous pouvez utiliser 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 la clé à côté de la clé que vous souhaitez 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.