Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kom igång med Det hemliga Klientbiblioteket för Azure Key Vault 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 hemligheter undviker du att lagra hemligheter i koden, vilket ökar säkerheten för din app.
API-referensdokumentation | Bibliotekets källkod | Package (Python-paketindex)
Förutsättningar
- En Azure-prenumeration – skapa en kostnadsfritt.
- Python 3.7+.
- Azure CLI eller Azure PowerShell.
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ändare till Azure Services. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. För mer information, se Autentisera klienten med Azure Identity-klientbiblioteket.
Logga in på Azure
Kör
az login
kommandot.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 den autorisationskod som visas i terminalen.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Installera paketen
I en terminal eller kommandotolk, skapa en lämplig projektmapp och aktivera 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-hemlighetsbiblioteket:
pip install azure-keyvault-secrets
Skapa en resursgrupp och ett nyckelvalv
Använd kommandot "az group create" 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
Skriptet kommer att använda det värde som har tilldelats 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
För att få behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC) tilldelar du en roll till din "User Principal Name" (UPN) med hjälp av Azure CLI-kommandot az role assignment create.
az role assignment create --role "Key Vault Secrets 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 det hemliga Klientbiblioteket för Azure Key Vault för Python kan du hantera hemligheter. Följande kodexempel visar hur du skapar en klient, anger en hemlighet, hämtar en hemlighet och tar bort en hemlighet.
Skapa en fil med namnet kv_secrets.py som innehåller den här koden.
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.")
Kör koden
Kontrollera att koden i föregående avsnitt finns i en fil med namnet kv_secrets.py. Kör sedan koden med följande kommando:
python kv_secrets.py
- Om du får behörighetsfel, se till att du har kört
az keyvault set-policy
kommandot ellerSet-AzKeyVaultAccessPolicy
. - Om du kör koden igen med samma hemliga namn kan felet "(Konflikt) Hemligt <namn> för närvarande vara i ett borttaget men återställningsbart tillstånd." Använd ett annat hemligt namn.
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 det rekommenderade tillvägagångssättet för att implementera anslutningar utan lösenord till Azure-tjänster i din kod.
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 autentiserar DefaultAzureCredential
sig mot nyckelvalvet med autentiseringsuppgifterna för den lokala utvecklingsanvändaren 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, Virtual Machine eller andra tjänster. För mer information, se Översikt över hanterad identitet.
I exempelkoden expanderas namnet på ditt nyckelvalv med hjälp av värdet av KVUri
-variabeln i formatet: "https://<your-key-vault-name>.vault.azure.net".
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
Spara en hemlighet
När du har hämtat klientobjektet för nyckelvalvet kan du lagra en hemlighet med hjälp av set_secret-metoden:
client.set_secret(secretName, secretValue)
Anrop set_secret
genererar ett anrop till Azure REST API för nyckelvalv.
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 hemlighet
Om du vill läsa en hemlighet från Key Vault använder du get_secret-metoden:
retrieved_secret = client.get_secret(secretName)
Det hemliga värdet finns i retrieved_secret.value
.
Du kan också hämta en hemlighet med Azure CLI-kommandot az keyvault secret show eller Azure PowerShell-cmdleten Get-AzKeyVaultSecret.
Ta bort en hemlighet
Om du vill ta bort en hemlighet använder du metoden begin_delete_secret :
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
Metoden begin_delete_secret
är asynkron och returnerar ett pollerobjekt. Att anropa pollerns result
metod väntar tills den är slutförd.
Du kan kontrollera att hemligheten hade tagits bort med Azure CLI-kommandot az keyvault secret show eller Azure PowerShell-cmdleten Get-AzKeyVaultSecret.
När den har tagits bort förblir en hemlighet i ett borttaget men återställningsbart tillstånd under en tid. Om du kör koden igen använder du ett annat hemligt namn.
Rensa resurser
Om du även vill experimentera med certifikat och nycklar 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
Nästa steg
- Översikt över Azure Key Vault
- Utvecklarguide för Azure Key Vault
- Säkerhetsöversikt för Key Vault
- Autentisera med Key Vault