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 Azure Key Vault-certifikatklientbiblioteket 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 certifikat undviker du att lagra certifikat 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
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. För mer information om klientautentisering med Azure Identity-klientbiblioteket, se Autentisera klienten med Azure Identity-klientbiblioteket.
Logga in på Azure
Kör kommandot
login.az loginOm CLI kan öppna din standardwebbläsare kommer den att göra det och läsa in en Azure-inloggningssida.
Annars öppnar du en webbsida på https://aka.ms/devicelogin och anger den auktoriseringskod som visas i din terminal.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Installera paketen
I ett terminalfönster eller en kommandotolk, skapa en lämplig projektmapp och skapa och aktivera sedan en Python-virtuell miljö enligt beskrivningen i Använda virtuella Python-miljöer
Installera Microsoft Entra-identitetsbiblioteket:
pip install azure.identityInstallera Key Vault-certifikatklientbiblioteket:
pip install azure-keyvault-certificates
Skapa en resursgrupp och ett nyckelvalv
az group createAnvänd kommandot för att skapa en resursgrupp:az group create --name myResourceGroup --location eastusDu kan ändra "eastus" till en plats närmare dig, om du vill.
Använd
az keyvault createför att skapa nyckelvalvet:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupErsätt
<your-unique-keyvault-name>med ett namn som är unikt över 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 kommer att använda värdet som har 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 Certificates 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 samma format som en e-postadress (t.ex. username@domain.com).
Skapa exempelkoden
Med Azure Key Vault-certifikatklientbiblioteket för Python kan du hantera certifikat. Följande kodexempel visar hur du skapar en klient, anger ett certifikat, hämtar ett certifikat och tar bort ett certifikat.
Skapa en fil med namnet kv_certificates.py som innehåller den här koden.
import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
certificateName = input("Input a name for your certificate > ")
print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
print(" done.")
print(f"Retrieving your certificate from {keyVaultName}.")
retrieved_certificate = client.get_certificate(certificateName)
print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
print(" done.")
Kör koden
Kontrollera att koden i föregående avsnitt finns i en fil med namnet kv_certificates.py. Kör sedan koden med följande kommando:
python kv_certificates.py
- Om du får behörighetsfel, kontrollera att du har kört
az keyvault set-policyellerSet-AzKeyVaultAccessPolicykommandot. - Om du kör koden igen med samma nyckelnamn kan felet "(Konflikt) certifikatnamn <> 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 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 under körtid. 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 upptäcka och använda en hanterad identitet som har tilldelats till en App Service, Virtuell maskin eller andra tjänster. Mer information hittar du i Översikt över hanterad identitet.
I exempelkoden expanderas namnet på ditt nyckelvalv till nyckelvalvets URI i formatet https://\<your-key-vault-name>.vault.azure.net.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Spara ett certifikat
När du har hämtat klientobjektet för nyckelvalvet kan du skapa ett certifikat med hjälp av metoden begin_create_certificate.
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
Här kräver certifikatet en princip som hämtas med metoden CertificatePolicy.get_default .
Om du anropar en begin_create_certificate metod genereras ett asynkront anrop till Azure REST API för nyckelvalvet. Asynkront anrop returnerar ett pollerobjekt. För att vänta på resultatet av åtgärden, anropa pollerens result-metod.
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 ett certifikat
För att läsa ett certifikat från Key Vault, använd metoden get_certificate.
retrieved_certificate = client.get_certificate(certificateName)
Du kan också kontrollera att certifikatet har ställts in med Azure CLI-kommandot az keyvault certificate show eller med Azure PowerShell-cmdletet Get-AzKeyVaultCertificate.
Ta bort ett certifikat
Om du vill ta bort ett certifikat, använd begin_delete_certificate metoden:
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
Metoden begin_delete_certificate är asynkron och returnerar ett pollerobjekt. Att anropa pollerns result-metod inväntar dess slutförande.
Du kan kontrollera att certifikatet har tagits bort med Azure CLI-kommandot az keyvault certificate show eller Azure PowerShell-cmdleten Get-AzKeyVaultCertificate.
När det har tagits bort förblir ett certifikat i ett borttaget men återställningsbart tillstånd under en tid. Om du kör koden igen använder du ett annat certifikatnamn.
Rensa resurser
Om du även vill experimentera med hemligheter och nycklar kan du återanvända Key Vault 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