Snabbstart: Klientbibliotek för Azure Key Vault-nycklar för Python
Kom igång med Azure Key Vault-klientbiblioteket för Python. Följ de här stegen för att installera paketet och prova exempelkod för grundläggande uppgifter. Genom att använda Key Vault för att lagra kryptografiska nycklar undviker du att lagra sådana nycklar i koden, vilket ökar säkerheten för din app.
API-referensdokumentation Biblioteks källkodspaket | (Python-paketindex) |
Förutsättningar
- En Azure-prenumeration – skapa en kostnadsfritt.
- Python 3.7+
- Azure CLI
Den här snabbstarten förutsätter att du kör Azure CLI eller Azure PowerShell i ett Linux-terminalfönster.
Konfigurera din lokala miljö
Den här snabbstarten använder Azure Identity-biblioteket med Azure CLI eller Azure PowerShell för att autentisera användaren till Azure-tjänster. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. Mer information finns i Autentisera klienten med Azure Identity-klientbiblioteket.
Logga in på Azure
Kör kommandot
login
.az login
Om CLI kan öppna din standardwebbläsare kommer den att göra det och läsa in en Azure-inloggningssida.
Annars öppnar du en webbläsarsida på https://aka.ms/devicelogin och anger auktoriseringskoden som visas i terminalen.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Installera paketen
I en terminal eller kommandotolk skapar du en lämplig projektmapp och skapar och aktiverar sedan en virtuell Python-miljö enligt beskrivningen i Använda virtuella Python-miljöer.
Installera Microsoft Entra-identitetsbiblioteket:
pip install azure-identity
Installera Key Vault-nyckelklientbiblioteket:
pip install azure-keyvault-keys
Skapa en resursgrupp och ett nyckelvalv
az group create
Använd kommandot för att skapa en resursgrupp:az group create --name myResourceGroup --location eastus
Du kan ändra "eastus" till en plats närmare dig, om du vill.
Använd
az keyvault create
för att skapa nyckelvalvet:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
Ersätt
<your-unique-keyvault-name>
med ett namn som är unikt i hela Azure. Du använder vanligtvis ditt personliga namn eller företagsnamn tillsammans med andra nummer och identifierare.
Ange miljövariabeln KEY_VAULT_NAME
Vårt skript använder värdet som tilldelats KEY_VAULT_NAME
miljövariabeln som namnet på nyckelvalvet. Du måste därför ange det här värdet med hjälp av följande kommando:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Bevilja åtkomst till ditt nyckelvalv
Om du vill få behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC) tilldelar du en roll till ditt UPN (User Principal Name) med hjälp av Azure CLI-kommandot az role assignment create.
az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ersätt <upn>, <subscription-id>, <resource-group-name> och <your-unique-keyvault-name> med dina faktiska värden. Ditt UPN är vanligtvis i formatet för en e-postadress (t.ex. username@domain.com).
Skapa exempelkoden
Med Azure Key Vault-nyckelklientbiblioteket för Python kan du hantera kryptografiska nycklar. Följande kodexempel visar hur du skapar en klient, anger en nyckel, hämtar en nyckel och tar bort en nyckel.
Skapa en fil med namnet kv_keys.py som innehåller den här koden.
import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
keyName = input("Input a name for your key > ")
print(f"Creating a key in {keyVaultName} called '{keyName}' ...")
rsa_key = client.create_rsa_key(keyName, size=2048)
print(" done.")
print(f"Retrieving your key from {keyVaultName}.")
retrieved_key = client.get_key(keyName)
print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
print(" done.")
Kör koden
Kontrollera att koden i föregående avsnitt finns i en fil med namnet kv_keys.py. Kör sedan koden med följande kommando:
python kv_keys.py
Om du kör koden igen med samma nyckelnamn kan felet "(Konflikt) Nyckelnamn <> för närvarande vara i ett borttaget men återställningsbart tillstånd." Använd ett annat nyckelnamn.
Kodinformation
Autentisera och skapa en klient
Programbegäranden till de flesta Azure-tjänster måste auktoriseras. Att använda klassen DefaultAzureCredential som tillhandahålls av Azure Identity-klientbiblioteket är den rekommenderade metoden för att implementera lösenordslösa anslutningar till Azure-tjänster i koden. DefaultAzureCredential
stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod.
I den här snabbstarten DefaultAzureCredential
autentiserar du till nyckelvalvet med autentiseringsuppgifterna för den lokala utvecklingsanvändare som är inloggad i Azure CLI. När programmet distribueras till Azure kan samma DefaultAzureCredential
kod automatiskt identifiera och använda en hanterad identitet som har tilldelats till en App Service, virtuell dator eller andra tjänster. Mer information finns i Översikt över hanterad identitet.
I exempelkoden expanderas namnet på ditt nyckelvalv med variabelns KVUri
värde i formatet "https://< your-key-vault-name.vault.azure.net>".
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
Spara en nyckel
När du har hämtat klientobjektet för nyckelvalvet kan du lagra en nyckel med hjälp av metoden create_rsa_key :
rsa_key = client.create_rsa_key(keyName, size=2048)
Du kan också använda create_key eller create_ec_key.
Att anropa en create
metod genererar ett anrop till Azure REST API för nyckelvalvet.
När Azure hanterar begäran autentiserar den anroparens identitet (tjänstens huvudnamn) med hjälp av det autentiseringsobjekt som du angav för klienten.
Hämta en nyckel
Om du vill läsa en nyckel från Key Vault använder du metoden get_key :
retrieved_key = client.get_key(keyName)
Du kan också kontrollera att nyckeln har angetts med Azure CLI-kommandot az keyvault key show eller Azure PowerShell-cmdleten Get-AzKeyVaultKey.
Ta bort en nyckel
Om du vill ta bort en nyckel använder du metoden begin_delete_key :
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
Metoden begin_delete_key
är asynkron och returnerar ett pollerobjekt. Att anropa pollerns result
-metod väntar på att den ska slutföras.
Du kan kontrollera att nyckeln tas bort med Azure CLI-kommandot az keyvault key show eller Azure PowerShell-cmdleten Get-AzKeyVaultKey.
När den har tagits bort förblir en nyckel i ett borttaget men återställningsbart tillstånd under en tid. Om du kör koden igen använder du ett annat nyckelnamn.
Rensa resurser
Om du även vill experimentera med certifikat och hemligheter kan du återanvända nyckelvalvet som skapades i den här artikeln.
När du är klar med resurserna som skapats i den här artikeln använder du annars följande kommando för att ta bort resursgruppen och alla dess inneslutna resurser:
az group delete --resource-group myResourceGroup