Démarrage rapide : Bibliothèque de client de secrets Azure Key Vault pour Python

Bien démarrer avec la bibliothèque de client de secrets Azure Key Vault pour Python. Suivez les étapes suivantes pour installer le package et essayer un exemple de code pour les tâches de base. En stockant des secrets à l’aide de Key Vault, vous évitez de les stocker dans votre code, ce qui renforce la sécurité de votre application.

Documentation de référence de l’API | Code source bibliothèqueC | Package (Index package Python)

Prérequis

Ce démarrage rapide suppose que vous exécutez Azure CLI ou Azure PowerShell dans une fenêtre de terminal Linux.

Configurer votre environnement local

Ce guide de démarrage rapide utilise la bibliothèque Azure Identity avec Azure CLI ou Azure PowerShell pour authentifier l’utilisateur auprès des services Azure. Les développeurs peuvent également utiliser Visual Studio ou Visual Studio Code pour authentifier leurs appels. Pour plus d’informations, consultez Authentifier le client avec la bibliothèque de client Azure Identity.

Connexion à Azure

  1. Exécutez la commande az login.

    az login
    

    Si l’interface CLI peut ouvrir votre navigateur par défaut, elle le fait et charge une page de connexion Azure par la même occasion.

    Sinon, ouvrez une page de navigateur à l’adresse https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal.

  2. Dans le navigateur, connectez-vous avec les informations d’identification de votre compte.

Installer les packages

  1. Dans un terminal ou une invite de commandes, créez un dossier de projet approprié, puis créez et activez un environnement virtuel Python comme décrit dans Utiliser des environnements virtuels Python.

  2. Installez la bibliothèque d’identités Azure Active Directory :

    pip install azure-identity
    
  3. Installez la bibliothèque de secrets Key Vault :

    pip install azure-keyvault-secrets
    

Créer un groupe de ressources et un coffre de clés

  1. Utilisez la commande az group create pour créer un groupe de ressources :

    az group create --name myResourceGroup --location eastus
    

    Si vous préférez, vous pouvez remplacer « eastus » par un emplacement plus proche de vous.

  2. Utilisez az keyvault create pour créer le coffre de clés :

    az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
    

    Remplacez <your-unique-keyvault-name> par un nom unique à l’échelle d’Azure. La pratique courante consiste à utiliser son nom ou le nom de son entreprise et à ajouter des chiffres ou des identificateurs.

Définir la variable d’environnement KEY_VAULT_NAME

Notre script utilise la valeur attribuée à la variable d’environnement KEY_VAULT_NAME comme nom du coffre de clés. Vous devez donc définir cette valeur à l’aide de la commande suivante :

export KEY_VAULT_NAME=<your-unique-keyvault-name>

Accorder l’accès à votre coffre de clés

Créez une stratégie d’accès pour votre coffre de clés qui accorde une autorisation de secret à votre compte d’utilisateur.

az keyvault set-policy --name <your-unique-keyvault-name> --upn user@domain.com --secret-permissions delete get list set

Créer l’exemple de code

La bibliothèque de client de secrets Azure Key Vault pour Python vous permet de gérer des secrets. L’exemple de code suivant vous montre comment créer un client et définir, récupérer et supprimer un secret.

Créez un fichier nommé kv_secrets.py qui contient ce code.

import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = f"https://{keyVaultName}.vault.azure.net"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)

secretName = input("Input a name for your secret > ")
secretValue = input("Input a value for your secret > ")

print(f"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...")

client.set_secret(secretName, secretValue)

print(" done.")

print(f"Retrieving your secret from {keyVaultName}.")

retrieved_secret = client.get_secret(secretName)

print(f"Your secret is '{retrieved_secret.value}'.")
print(f"Deleting your secret from {keyVaultName} ...")

poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()

print(" done.")

Exécuter le code

Vérifiez que le code de la section précédente se trouve dans un fichier nommé kv_secrets.py. Exécutez ensuite le code avec la commande suivante :

python kv_secrets.py
  • Si vous rencontrez des erreurs d’autorisation, vérifiez que vous avez exécuté la commande az keyvault set-policy ou Set-AzKeyVaultAccessPolicy.
  • Le fait de réexécuter le code avec le même nom de secret a pour effet de générer l’erreur : « Le secret (en conflit) <name> est actuellement à l’état supprimé mais récupérable. » Utilisez un autre nom secret.

Détails du code

Authentifier et créer un client

Dans ce démarrage rapide , l’utilisateur connecté est utilisé pour l’authentification auprès du coffre de clés. C’est la méthode recommandée pour le développement local. Pour les applications déployées sur Azure, l’identité managée doit être affectée à App Service ou à une machine virtuelle. Pour plus d’informations, consultez Vue d’ensemble des identités managées.

Dans cet exemple, le nom de votre coffre de clés est développé à l’aide de la valeur de la variable « KVUri », au format : https://<nom-votre-coffre-clés>.vault.azure.net. Cet exemple utilise la classe « DefaultAzureCredential() », qui permet d’utiliser le même code dans différents environnements avec des options différentes pour fournir une identité. Pour plus d’informations, consultez Authentification des informations d’identification Azure par défaut.

credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)

Enregistrer un secret

Une fois que vous avez obtenu l’objet client pour le coffre de clés, vous pouvez stocker un secret à l’aide de la méthode set_secret :

client.set_secret(secretName, secretValue)

L’appel de set_secret génère un appel à l’API REST Azure pour le coffre de clés.

Au moment de traiter la demande, Azure authentifie l’identité de l’appelant (le principal du service) à partir de l’objet d’informations d’identification que vous avez fourni au client.

Récupérer un secret

Pour lire un secret à partir de Key Vault, utilisez la méthode get_secret :

retrieved_secret = client.get_secret(secretName)

La valeur du secret est contenue dans retrieved_secret.value.

Vous pouvez également récupérer un secret avec la commande Azure CLI az keyvault secret show ou la commande Azure PowerShell Get-AzKeyVaultSecret.

Supprimer un secret

Pour supprimer un secret, utilisez la méthode begin_delete_secret :

poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()

La méthode begin_delete_secret est asynchrone et retourne un objet observateur. L’appel de la méthode result de l’observateur attend la fin de son exécution.

Vous pouvez vérifier que le secret a été supprimé avec la commande Azure CLI az keyvault secret show ou la commande Azure PowerShell Get-AzKeyVaultSecret.

Une fois supprimé, un secret reste à l’état supprimé mais récupérable pour un temps. Si vous réexécutez le code, utilisez un nom de secret différent.

Nettoyer les ressources

Si vous voulez aussi tenter une expérience avec des certificats et des clés, vous pouvez réutiliser le coffre de clés créé dans cet article.

Sinon, quand vous en avez terminé avec les ressources créées dans cet article, utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources qu’il contient :

az group delete --resource-group myResourceGroup

Étapes suivantes