Rychlý start: Klientská knihovna certifikátů služby Azure Key Vault pro Python
Začínáme s klientskou knihovnou certifikátů služby Azure Key Vault pro Python Pomocí těchto kroků nainstalujte balíček a vyzkoušejte si ukázkový kód pro základní úlohy. Použitím služby Key Vault k ukládání certifikátů se vyhnete ukládání certifikátů v kódu, což zvyšuje zabezpečení aplikace.
Referenční dokumentace k | rozhraní API – Balíček zdrojového kódu | knihovny (index balíčků Pythonu)
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Python 3.7 nebo novější
- Azure CLI
V tomto rychlém startu se předpokládá, že používáte Azure CLI nebo Azure PowerShell v okně terminálu s Linuxem.
Nastavení místního prostředí
V tomto rychlém startu se k ověření uživatele ve službách Azure používá knihovna identit Azure s Azure CLI nebo Azure PowerShellem. Vývojáři také můžou k ověření volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.
Přihlášení k Azure
Spusťte příkaz
login
.az login
Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.
V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.
Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.
Instalace balíčků
V terminálu nebo příkazovém řádku vytvořte vhodnou složku projektu a pak vytvořte a aktivujte virtuální prostředí Pythonu, jak je popsáno v tématu Použití virtuálních prostředí Pythonu.
Nainstalujte knihovnu identit Microsoft Entra:
pip install azure.identity
Nainstalujte klientskou knihovnu certifikátů služby Key Vault:
pip install azure-keyvault-certificates
Vytvoření skupiny prostředků a trezoru klíčů
az group create
Pomocí příkazu vytvořte skupinu prostředků:az group create --name myResourceGroup --location eastus
Pokud chcete, můžete změnit "eastus" na nejbližší místo.
Slouží
az keyvault create
k vytvoření trezoru klíčů:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
Nahraďte
<your-unique-keyvault-name>
ho jedinečným názvem ve všech Azure. Obvykle používáte svůj osobní název nebo název společnosti spolu s dalšími čísly a identifikátory.
Nastavení proměnné prostředí KEY_VAULT_NAME
Náš skript použije hodnotu přiřazenou KEY_VAULT_NAME
proměnné prostředí jako název trezoru klíčů. Tuto hodnotu proto musíte nastavit pomocí následujícího příkazu:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Udělení přístupu k trezoru klíčů
Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k hlavnímu názvu uživatele (UPN) pomocí příkazu Azure CLI az role assignment create.
az role assignment create --role "Key Vault Certificate Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Nahraďte <upn>, <subscription-id>, <resource-group-name> a <your-unique-keyvault-name> skutečnými hodnotami. Hlavní název uživatele (UPN) bude obvykle ve formátu e-mailové adresy (např username@domain.com. ).
Vytvoření ukázkového kódu
Klientská knihovna certifikátů služby Azure Key Vault pro Python umožňuje spravovat certifikáty. Následující ukázka kódu ukazuje, jak vytvořit klienta, nastavit certifikát, načíst certifikát a odstranit certifikát.
Vytvořte soubor s názvem kv_certificates.py , který obsahuje tento kód.
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.")
Spuštění kódu
Ujistěte se, že kód v předchozí části je v souboru s názvem kv_certificates.py. Pak kód spusťte pomocí následujícího příkazu:
python kv_certificates.py
- Pokud dojde k chybám oprávnění, ujistěte se, že jste spustili
az keyvault set-policy
příkaz neboSet-AzKeyVaultAccessPolicy
příkaz. - Opětovné spuštění kódu se stejným názvem klíče může způsobit chybu "(Konflikt) Název> certifikátu <je aktuálně v odstraněném, ale obnovitelném stavu." Použijte jiný název klíče.
Podrobnosti kódu
Ověření a vytvoření klienta
Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití defaultAzureCredential třídy poskytované klientskou knihovnou Azure Identity je doporučený postup pro implementaci připojení bez hesla ke službám Azure ve vašem kódu. DefaultAzureCredential
podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.
V tomto rychlém startu DefaultAzureCredential
se ověří v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential
kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.
V ukázkovém kódu se název trezoru klíčů rozbalí na identifikátor URI trezoru klíčů ve formátu https://\<your-key-vault-name>.vault.azure.net
.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Uložení certifikátu
Po získání objektu klienta pro trezor klíčů můžete vytvořit certifikát pomocí metody begin_create_certificate :
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
V této části certifikát vyžaduje zásadu získanou pomocí metody CertificatePolicy.get_default .
begin_create_certificate
Volání metody vygeneruje asynchronní volání rozhraní Azure REST API pro trezor klíčů. Asynchronní volání vrátí objekt poller. Pokud chcete počkat na výsledek operace, zavolejte metodu poller.result
Když Azure požadavek zpracuje, ověří identitu volajícího (instanční objekt) pomocí objektu přihlašovacích údajů, který jste zadali klientovi.
Načtení certifikátu
Ke čtení certifikátu ze služby Key Vault použijte metodu get_certificate :
retrieved_certificate = client.get_certificate(certificateName)
Certifikát můžete také ověřit pomocí příkazu Azure CLI az keyvault certificate show nebo rutiny Azure PowerShellu Get-AzKeyVaultCertificate.
Odstranění certifikátu
Pokud chcete odstranit certifikát, použijte metodu begin_delete_certificate :
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
Metoda begin_delete_certificate
je asynchronní a vrací objekt poller. Volání metody poller result
čeká na jeho dokončení.
Certifikát můžete ověřit pomocí příkazu Azure CLI az keyvault certificate show nebo rutiny Azure PowerShellu Get-AzKeyVaultCertificate.
Po odstranění zůstane certifikát po dobu odstraněný, ale obnovitelný. Pokud kód spustíte znovu, použijte jiný název certifikátu.
Vyčištění prostředků
Pokud chcete také experimentovat s tajnými kódy a klíči, můžete znovu použít službu Key Vault vytvořenou v tomto článku.
Jinak po dokončení práce s prostředky vytvořenými v tomto článku odstraňte skupinu prostředků a všechny její obsažené prostředky pomocí následujícího příkazu:
az group delete --resource-group myResourceGroup