Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozpocznij pracę z biblioteką klienta certyfikatów Python w usłudze Azure Key Vault. Wykonaj następujące kroki, aby zainstalować pakiet i wypróbować przykładowy kod dla podstawowych zadań. Korzystając z usługi Key Vault do przechowywania certyfikatów, należy unikać przechowywania certyfikatów w kodzie, co zwiększa bezpieczeństwo aplikacji.
Dokumentacja referencyjna API | Kod źródłowy biblioteki | Pakiet (Python Package Index)
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną za darmo.
- Python 3.7+
- Azure CLI
W tym przewodniku szybkiego startu zakłada się, że używasz Azure CLI lub programu Azure PowerShell w oknie terminalu Linux.
Konfigurowanie środowiska lokalnego
W tym Szybkim starcie używana jest biblioteka tożsamości Azure z Azure CLI lub Azure PowerShell do uwierzytelniania użytkownika w usługach Azure. Deweloperzy mogą również używać programu Visual Studio lub Visual Studio Code do uwierzytelniania wywołań. Aby uzyskać więcej informacji, zobacz Jak uwierzytelnić klienta przy użyciu biblioteki Azure Identity.
Logowanie się do platformy Azure
Uruchom polecenie
login
.az login
Jeśli interfejs wiersza polecenia może otworzyć domyślną przeglądarkę, zrobi to i załaduje stronę logowania platformy Azure.
W przeciwnym razie otwórz stronę przeglądarki pod https://aka.ms/devicelogin adresem i wprowadź kod autoryzacji wyświetlany w terminalu.
Zaloguj się na swoje konto w przeglądarce.
Instalowanie pakietów
W terminalu lub wierszu polecenia utwórz odpowiedni folder projektu, a następnie utwórz i aktywuj środowisko wirtualne języka Python zgodnie z opisem w sekcji Używanie środowisk wirtualnych Python
Zainstaluj bibliotekę tożsamości Microsoft Entra:
pip install azure.identity
Zainstaluj bibliotekę klienta certyfikatu usługi Key Vault:
pip install azure-keyvault-certificates
Utwórz grupę zasobów i skarbiec kluczy
Użyj polecenia
az group create
aby utworzyć grupę zasobów:az group create --name myResourceGroup --location eastus
Jeśli wolisz, możesz zmienić "eastus" na lokalizację bliżej Ciebie.
Użyj
az keyvault create
polecenia , aby utworzyć magazyn kluczy:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
Zastąp
<your-unique-keyvault-name>
nazwą unikatową w całym Azure. Zazwyczaj używasz swojej osobistej lub firmowej nazwy wraz z innymi numerami i identyfikatorami.
Ustawianie zmiennej środowiskowej KEY_VAULT_NAME
Nasz skrypt użyje wartości przypisanej KEY_VAULT_NAME
do zmiennej środowiskowej jako nazwy magazynu kluczy. W związku z tym należy ustawić tę wartość przy użyciu następującego polecenia:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Udzielanie dostępu do magazynu kluczy
Aby uzyskać uprawnienia do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę do "głównej nazwy użytkownika" (UPN) przy użyciu polecenia az role assignment create platformy Azure CLI.
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>"
Zastąp <wartości upn>, <subscription-id>, <resource-group-name> i <your-unique-keyvault-name> rzeczywistymi wartościami. Twój UPN zazwyczaj będzie w formacie adresu e-mail (np. username@domain.com).
Tworzenie przykładowego kodu
Biblioteka klienta certyfikatów usługi Azure Key Vault dla języka Python umożliwia zarządzanie certyfikatami. Poniższy przykładowy kod przedstawia sposób tworzenia klienta, ustawiania certyfikatu, pobierania certyfikatu i usuwania certyfikatu.
Utwórz plik o nazwie kv_certificates.py zawierający ten kod.
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.")
Uruchamianie kodu
Upewnij się, że kod w poprzedniej sekcji znajduje się w pliku o nazwie kv_certificates.py. Następnie uruchom kod za pomocą następującego polecenia:
python kv_certificates.py
- Jeśli wystąpią błędy uprawnień, upewnij się, że uruchomiłeś polecenie
az keyvault set-policy
lubSet-AzKeyVaultAccessPolicy
. - Ponowne wykonanie kodu o tej samej nazwie klucza może spowodować wyświetlenie błędu "(Konflikt) Certyfikat <nazwa> jest obecnie w stanie usuniętym, ale możliwym do odzyskania." Użyj innej nazwy klucza.
Szczegóły kodu
Uwierzytelnianie i tworzenie klienta
Żądania aplikacji do większości usług platformy Azure muszą być autoryzowane. Użycie klasy DefaultAzureCredential, udostępnionej przez bibliotekę Azure Identity, jest zalecanym podejściem do implementowania połączeń bez użycia haseł z usługami Azure w kodzie.
DefaultAzureCredential
obsługuje wiele metod uwierzytelniania i określa, która metoda powinna być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (lokalnych i produkcyjnych) bez implementowania kodu specyficznego dla środowiska.
W tym przewodniku szybkiego startu uwierzytelnia się w magazynie kluczy przy użyciu poświadczeń lokalnego użytkownika dewelopera zalogowanego do interfejsu wiersza polecenia platformy Azure. Po wdrożeniu aplikacji na platformie Azure, ten sam DefaultAzureCredential
kod może automatycznie odnajdywać i używać tożsamości zarządzanej przypisanej do usługi App Service, maszyny wirtualnej lub innych usług. Aby uzyskać więcej informacji, przeczytaj Omówienie tożsamości zarządzanej.
W przykładowym kodzie nazwa magazynu kluczy jest zamieniana na identyfikator URI magazynu kluczy w formacie https://\<your-key-vault-name>.vault.azure.net
.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Zapisywanie certyfikatu
Po uzyskaniu obiektu klienta dla magazynu kluczy można utworzyć certyfikat za pomocą metody begin_create_certificate:
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
Tutaj certyfikat wymaga polityki uzyskanej przy użyciu metody CertificatePolicy.get_default.
begin_create_certificate
Wywołanie metody generuje asynchroniczne wywołanie interfejsu API REST platformy Azure dla magazynu kluczy. Wywołanie asynchroniczne zwraca obiekt typu poller. Aby poczekać na wynik operacji, wywołaj metodę pollera result
.
Gdy platforma Azure obsługuje żądanie, uwierzytelnia tożsamość obiektu wywołującego (jednostkę usługi) przy użyciu obiektu poświadczeń podanego klientowi.
Pobieranie certyfikatu
Aby odczytać certyfikat z usługi Key Vault, użyj metody get_certificate:
retrieved_certificate = client.get_certificate(certificateName)
Możesz również sprawdzić, czy certyfikat został ustawiony za pomocą polecenia Azure CLI az keyvault certificate show lub Azure PowerShell cmdlet Get-AzKeyVaultCertificate.
Usuwanie certyfikatu
Aby usunąć certyfikat, użyj metody begin_delete_certificate:
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
Metoda begin_delete_certificate
jest asynchroniczna i zwraca obiekt poller. Wywołanie metody poller result
czeka na jego zakończenie.
Możesz zweryfikować usunięcie certyfikatu za pomocą polecenia Azure CLI az keyvault certificate show lub cmdlet Azure PowerShell Get-AzKeyVaultCertificate.
Po usunięciu certyfikat pozostaje w stanie usuniętym, ale można go odzyskać przez pewien czas. Jeśli ponownie uruchomisz kod, użyj innej nazwy certyfikatu.
Czyszczenie zasobów
Jeśli chcesz również eksperymentować z wpisami tajnymi i kluczami, możesz ponownie użyć usługi Key Vault utworzonej w tym artykule.
W przeciwnym razie po zakończeniu pracy z zasobami utworzonymi w tym artykule użyj następującego polecenia, aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby:
az group delete --resource-group myResourceGroup