Szybki start: biblioteka klienta certyfikatów usługi Azure Key Vault dla języka Python

Wprowadzenie do biblioteki klienta certyfikatów usługi Azure Key Vault dla języka Python. 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 interfejsu API — pakiet | kodu | źródłowego biblioteki (Python Package Index)

Wymagania wstępne

W tym przewodniku Szybki start założono, że używasz interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell w oknie terminalu systemu Linux.

Konfigurowanie środowiska lokalnego

W tym przewodniku Szybki start używana jest biblioteka tożsamości platformy Azure z interfejsem wiersza polecenia platformy Azure lub programem Azure PowerShell do uwierzytelniania użytkownika w usługach platformy Azure. Deweloperzy mogą również używać programu Visual Studio lub Visual Studio Code do uwierzytelniania wywołań. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie klienta za pomocą biblioteki klienta usługi Azure Identity.

Logowanie się do platformy Azure

  1. 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.

  2. Zaloguj się w przeglądarce przy użyciu poświadczeń swojego konta.

Instalowanie pakietów

  1. 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 temacie Używanie środowisk wirtualnych języka Python

  2. Zainstaluj bibliotekę tożsamości Firmy Microsoft Entra:

    pip install azure.identity
    
  3. Zainstaluj bibliotekę klienta certyfikatu usługi Key Vault:

    pip install azure-keyvault-certificates
    

Tworzenie grupy zasobów i magazynu kluczy

  1. 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.

  2. 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> ciąg nazwą unikatową na całej platformie 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 udzielić aplikacji uprawnień do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę przy użyciu polecenia interfejsu wiersza polecenia platformy Azure az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Zastąp <ciąg app-id, <subscription-id>>, <resource-group-name i <your-unique-keyvault-name>> rzeczywistymi wartościami. <app-id> to identyfikator aplikacji (klienta) zarejestrowanej aplikacji w usłudze Azure AD.

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 uruchomiono az keyvault set-policy polecenie lub Set-AzKeyVaultAccessPolicy .
  • Ponowne uruchomienie kodu o tej samej nazwie klucza może spowodować wyświetlenie błędu "(Konflikt) Nazwa> certyfikatu <jest obecnie w stanie usuniętym, ale można go odzyskać". 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ę klienta tożsamości platformy Azure jest zalecanym podejściem do implementowania połączeń bez hasła z usługami platformy 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 Szybki start DefaultAzureCredential 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, zobacz Omówienie tożsamości zarządzanej.

W przykładowym kodzie nazwa magazynu kluczy jest rozszerzana 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 przy użyciu metody begin_create_certificate :

policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()

W tym miejscu certyfikat wymaga zasad uzyskanych 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 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 interfejsu wiersza polecenia platformy Azure az keyvault certificate show lub polecenia cmdlet programu Azure PowerShell 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 sprawdzić, czy certyfikat został usunięty za pomocą polecenia interfejsu wiersza polecenia platformy Azure az keyvault certificate show lub polecenia cmdlet programu 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

Następne kroki