Hello tout le monde, aujourd’hui je vais vous montrer comment configurer Azure Key Vault pour vos Azure Functions en 3 minutes montre en main (posez là quand même, c’est plus pratique pour utiliser l’ordinateur).

Sommaire Link to heading

Prérequis Link to heading

  • Un compte Azure
  • Une instance Azure Function qui utilise des secrets (ex : une connexion à une base de données)

TLDR; Link to heading

  1. Créer un Key Vault.
  2. Créer une identité pour votre Azure Function.
  3. Ajouter l’identité à la politique d’accès du Key Vault
  4. Sélectionner “Obtenir” dans la colonne “Authorisations du secret” (ajuster au besoin).
  5. Créer les secrets dans le Key Vault.
  6. Modifier les variables d’environnement de l’Azure Function avec la bonne syntaxe : @Microsoft.KeyVault(VaultName={{Nom du Key Vault}};SecretName={{Nom du secret}}).

Créer un Key Vault Link to heading

C’est un peu le point central de ce tutoriel, il va vous falloir un Azure Key Vault. Vous pouvez le créer que ce soit via le portail, le CLI ou autre. Dans mon cas, je vais utiliser le portail.

Modifiez les paramètres suivants pour convenir à vos besoins :

  • Abonnement : votre abonnement
  • Groupe de ressources : souvent le groupe où se trouve votre instance azure function (ici je vais créer un groupe “tutoriel-vsantele.dev”)
  • Nom : le nom de votre Key Vault unique (ici “mon-super-keyvault”)
  • Région : la région où vous souhaitez créer votre Key Vault (ici “West Europe”)
  • Niveau Tarifaire : “Standard” (Standard utilise des clés logicielles tandis que les clés Premium sont protégées par HSM, un module de sécurité matériel.)
Création d’un Azure Key Vault via le Portail

Création d’un Azure Key Vault via le Portail

Dans l’onglet suivant “Stratégie d’accès”, vous pouvez définir le mode d’accès au Key Vault. Par défaut via le coffre ou bien via Azure RBAC. Pour aller à l’essentiel, je vais rester sur “Stratégie d’accès au coffre”.

Dans le même onglet, vous pouvez ajouter des utilisateurs ou services qui peuvent accéder au coffre. Par défaut, vous êtes déjà ajouté avec tous les droits. Vous pouvez modifier les accès après la création du coffre.

Ajout d’une politique d’accès au Key Vault

Ajout d’une politique d’accès au Key Vault

Je vous laisse régler vos paramètres réseau et mettre vos tags sur la ressource si vous en avez besoin. Les valeurs par défauts sont suffisantes pour ce tutoriel.

Vous pouvez maintenant créer votre Azure Key Vault.

Via le CLI
az keyvault create --name {{Nom du Key Vault}} --resource-group {{Nom du resource group}} --location westeurope --sku standard

Créer une identité pour l’Azure Function Link to heading

Pour que votre Azure function ait accès au coffre, il lui faut une identité. Je vais la créer via le portail, mais vous pouvez aussi utiliser le CLI.

Sur la page de votre instance Azure Function, Aller dans “Identité dans le menu de gauche.

Vérifiez que vous êtes bien dans l’onglet “Affecté par le système” et cliquez sur “Activé”. Ensuite, cliquez sur “Enregistrer”.

Création de l'identité pour la Function App depuis le portail

Ajout d’une identité à une Azure Function

Info

La différence entre Système et Utilisateur se trouve au niveau de la durée de vie. Une identité Système est supprimée lorsque l’instance Azure Function est supprimée. Une identité Utilisateur est créée et supprimée manuellement.

Plus d’info

Via le CLI
az functionapp identity assign --name {{Nom du Function App}} --resource-group {{Nom du resource group}}

Ajout de l’identité à la politique d’accès du Key Vault Link to heading

Une fois que vous avez une identité pour votre Azure Function, vous pouvez l’ajouter à la politique d’accès du Key Vault. Une fois de plus, via le portail, mais vous pouvez aussi utiliser le CLI.

Sur la page de votre Key Vault, allez dans “Stratégie d’accès” dans le menu de gauche et cliquez sur “Créer” en haut.

Ensuite, dans “Autorisations”, sélectionnez uniquement “Obtenir” dans la colonne “Autorisations du secret”. Vous pouvez ajouter d’autres droits si vous en avez besoin.

Ajout de l'identité via le portail en sélectionnant les accès

Ajout de l’identité

Attention
Évitez de donner trop de droits à votre Azure Function. Sélectionnez seulement ceux dont elle aura vraiment besoin.

Cliquez sur Suivant et chercher votre Azure function dans la barre de recherche. Sélectionnez-la et cliquez sur Suivant.

Cliquez sur Suivant puis Créer pour les 2 derniers onglets.

Via le CLI

Récupérer l’object id de votre Azure Function

az functionapp identity show --name {{Nom de la Function App}} --resource-group {{Nom du resource group}} --query principalId

Ajouter l’identité à la politique d’accès du Key Vault

az keyvault set-policy --name {{Nom du Key Vault}} --resource-group {{Nom du resource group }} --object-id {{Object Id obtenu avant}} --secret-permissions get

Créer un secret Link to heading

Pour utiliser un secret depuis votre Azure Function, il faut le créer.

Dans la page de votre Key Vault, allez dans “Secrets” dans le menu de gauche et cliquez sur “Générer/Importer” en haut.

Remplissez les informations suivantes vos besoins :

  • Options de chargement : Manuellement
  • Nom : le nom de votre secret (ici “CosmosDBEndpoint”)
  • Valeur de secret : la valeur de votre secret (ici mon endpoint)
  • Type de contenu : le type de votre contenu pour aider, je n’ai rien mis ici.
  • Définir la date d’activation : Activez l’option si vous voulez spécifier une date d’activation du secret.
  • Définir la date d’expiration : Même chose qu’au-dessus pour une date de fin.
  • Activé : Décidez manuellement si le secret est activé ou non. (Ici Oui)
  • Balise : Ajoutez des balises pour retrouver plus facilement votre secret.
Création du secret dans Azure Keyvault via le portail

Création du secret

Utilisation du secret Link to heading

C’est ici que toute la magie opère. Pas besoin de modifier mon code, je peux simplement utiliser mon secret comme une variable d’environnement.

Pour ce faire, il suffit de respecter une syntaxe comme valeur de la variable d’environnement.

Voici les syntaxes possibles :

  • @Microsoft.KeyVault(SecretUri=https://mon-super-keyvault.vault.azure.net/secrets/CosmosDBEndpoint)
  • @Microsoft.KeyVault(VaultName=mon-super-keyvault;SecretName=ComosDBEndpoint)

Utilisation en développement Link to heading

Le Key Vault n’est pas uniquement utilisable en production. Il est aussi possible de l’utiliser en développement.

Le principe reste le même, mais il faut faire attention à une chose supplémentaire : être connecté au bon compte Azure. Via le CLI, c’est très simple :

az login

Et voilà, vous pouvez utiliser votre Key Vault en développement.

Conclusion Link to heading

C’était rapide non ? Vous n’avez plus aucune excuse pour protéger vos secrets et vos clés d’accès, que ce soit pendant le développement ou en production !

N’hésitez pas à me faire part de vos retours sur Twitter @vsantele

Et à la prochaine pour d’autres astuces !