Tutoriel : Utiliser Azure Key Vault avec une machine virtuelle dans Python
Azure Key Vault vous permet de protéger les clés, secrets et certificats, notamment les clés API et les chaînes de connexion de base de données.
Dans ce tutoriel, vous allez configurer une application Python pour lire des informations dans Azure Key Vault à l’aide d’identités managées pour les ressources Azure. Vous allez apprendre à effectuer les actions suivantes :
- Création d’un coffre de clés
- Stocker un secret dans Key Vault
- Créer une machine virtuelle Azure Linux
- Activer une identité managée pour la machine virtuelle
- Octroyer les autorisations nécessaires à l’application console pour lire les données provenant de Key Vault
- Récupérer un secret à partir de Key Vault
Avant de continuer, lisez les concepts de base de Key Vault.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.
Prérequis
Pour Windows, Mac et Linux :
- Git
- Ce didacticiel nécessite que vous exécutiez l’interface Azure CLI localement. Vous devez avoir installé Azure CLI 2.0.4 ou ultérieure. Exécutez
az --version
pour trouver la version. Si vous devez installer ou mettre à niveau l’interface CLI, consultez l’article Installation d’Azure CLI 2.0.
Connexion à Azure
Pour vous connecter à Azure à l’aide de l’interface CLI, entrez :
az login
Créer un groupe de ressources et un coffre de clés
Ce démarrage rapide utilise un Azure Key Vault créé au préalable. Vous pouvez créer un coffre de clés en suivant les étapes décrites dans le guide de démarrage rapide d’Azure CLI, le guide de démarrage rapide d’Azure PowerShell ou le guide de démarrage rapide du portail Azure.
Vous pouvez également exécuter ces commandes Azure CLI ou Azure PowerShell.
Important
Chaque coffre de clés doit avoir un nom unique. Remplacez <your-unique-keyvault-name> par le nom de votre coffre de clés dans les exemples suivants.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Remplir votre coffre de clés avec un secret
Créons un secret appelé mySecret avec la valeur Success! . Il peut s’agir d’un mot de passe, d’une chaîne de connexion SQL ou de toute autre information que vous devez sécuriser et garder à disposition pour votre application.
Pour ajouter un secret au coffre de clés que vous venez de créer, utilisez la commande suivante :
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Création d'une machine virtuelle
Créez une machine virtuelle nommée myVM à l’aide de l’une des méthodes suivantes :
Linux | Windows |
---|---|
Azure CLI | Azure CLI |
PowerShell | PowerShell |
Azure portal | Le portail Azure |
Pour créer une machine virtuelle Linux à l’aide de l’interface Azure CLI, utilisez la commande az vm create. L’exemple suivant ajoute un compte d’utilisateur nommé azureuser. Le paramètre --generate-ssh-keys
permet de générer automatiquement une clé SSH et de la placer dans l’emplacement de clé par défaut ( ~/.ssh).
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Notez la valeur de publicIpAddress
dans la sortie.
Affecter une identité à la machine virtuelle
Créez une identité attribuée par le système pour la machine virtuelle avec la commande Azure CLI az vm identity assign :
az vm identity assign --name "myVM" --resource-group "myResourceGroup"
Notez l’identité affectée par le système qui est affichée dans le code suivant. La sortie de la commande ci-dessus doit être la suivante :
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Attribuer des autorisations à l’identité de machine virtuelle
Pour accorder à vos autorisations d’application sur votre coffre de clés via le contrôle d’accès en fonction du rôle (RBAC), attribuez un rôle en utilisant la commande Azure CLI création de l’attribution de rôle az.
az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Remplacez <app-id>
, <subscription-id>
, <resource-group-name>
et <your-unique-keyvault-name>
par vos valeurs réelles. <app-id>
est l’ID d’application (client) de votre application inscrite dans Microsoft Entra.
Se connecter à la machine virtuelle
Pour vous connecter à la machine virtuelle, suivez les instructions de Se connecter à une machine virtuelle Linux dans Azure ou Connexion à une machine virtuelle Azure exécutant Windows.
Pour vous connecter à une machine virtuelle Linux, vous pouvez utiliser la commande ssh avec le paramètre <publicIpAddress> indiqué à l’étapeCréer une machine virtuelle :
ssh azureuser@<PublicIpAddress>
Installer les bibliothèques Python sur la machine virtuelle
Sur la machine virtuelle, installez les deux bibliothèques Python que nous utiliserons dans notre script Python : azure-keyvault-secrets
et azure.identity
.
Sur une machine virtuelle Linux, par exemple, vous pouvez les installer à l’aide de pip3
:
pip3 install azure-keyvault-secrets
pip3 install azure.identity
Créer et modifier l’exemple de script Python
Sur la machine virtuelle, créez un fichier Python nommé sample.py. Modifiez le fichier pour y inclure le code suivant en remplaçant <your-unique-keyvault-name> par le nom de votre coffre de clés :
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
key_vault_name = "<your-unique-keyvault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)
print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")
Exécuter l’exemple d’application Python
Enfin, exécutez sample.py. Si tout s’est bien passé, la valeur de votre secret doit être retournée :
python3 sample.py
The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'
Nettoyer les ressources
Quand ils ne sont plus nécessaires, supprimez la machine virtuelle et le coffre de clés. Vous pouvez le faire rapidement en supprimant le groupe de ressources auquel ils appartiennent :
az group delete -g myResourceGroup