Udostępnij za pośrednictwem


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

Rozpocznij pracę z biblioteką klienta 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 kluczy kryptograficznych, należy unikać przechowywania takich kluczy 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

Ten przewodnik Szybki start używa biblioteki tożsamości platformy Azure z interfejsem wiersza polecenia platformy Azure lub programu 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 kluczy usługi Key Vault:

    pip install azure-keyvault-keys
    

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 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 interfejsu wiersza polecenia platformy Azure.

az role assignment create --role "Key Vault Crypto 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. Nazwa UPN będzie zwykle mieć format adresu e-mail (np. username@domain.com).

Tworzenie przykładowego kodu

Biblioteka klienta kluczy usługi Azure Key Vault dla języka Python umożliwia zarządzanie kluczami kryptograficznymi. W poniższym przykładzie kodu pokazano, jak utworzyć klienta, ustawić klucz, pobrać klucz i usunąć klucz.

Utwórz plik o nazwie kv_keys.py zawierający ten kod.

import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential

keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

keyName = input("Input a name for your key > ")

print(f"Creating a key in {keyVaultName} called '{keyName}' ...")

rsa_key = client.create_rsa_key(keyName, size=2048)

print(" done.")

print(f"Retrieving your key from {keyVaultName}.")

retrieved_key = client.get_key(keyName)

print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

print(" done.")

Uruchamianie kodu

Upewnij się, że kod w poprzedniej sekcji znajduje się w pliku o nazwie kv_keys.py. Następnie uruchom kod za pomocą następującego polecenia:

python kv_keys.py

Ponowne uruchomienie kodu o tej samej nazwie klucza może spowodować wyświetlenie błędu "(Konflikt) Nazwa> klucza <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 przy użyciu wartości KVUri zmiennej w formacie " https://< our-key-vault-name.vault.azure.net>".

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

Zapisywanie klucza

Po uzyskaniu obiektu klienta dla magazynu kluczy można przechowywać klucz przy użyciu metody create_rsa_key :

rsa_key = client.create_rsa_key(keyName, size=2048)

Możesz również użyć create_key lub create_ec_key.

create Wywołanie metody generuje wywołanie interfejsu API REST platformy Azure dla magazynu kluczy.

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 klucza

Aby odczytać klucz z usługi Key Vault, użyj metody get_key :

retrieved_key = client.get_key(keyName)

Możesz również sprawdzić, czy klucz został ustawiony za pomocą polecenia interfejsu wiersza polecenia platformy Azure az keyvault key show lub polecenia cmdlet programu Azure PowerShell Get-AzKeyVaultKey.

Usuń klucz

Aby usunąć klucz, użyj metody begin_delete_key :

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

Metoda begin_delete_key jest asynchroniczna i zwraca obiekt poller. Wywołanie metody poller result czeka na jego zakończenie.

Możesz sprawdzić, czy klucz został usunięty za pomocą polecenia interfejsu wiersza polecenia platformy Azure az keyvault key show lub polecenia cmdlet programu Azure PowerShell Get-AzKeyVaultKey.

Po usunięciu klucz pozostaje w stanie usuniętym, ale można go odzyskać przez pewien czas. Jeśli ponownie uruchomisz kod, użyj innej nazwy klucza.

Czyszczenie zasobów

Jeśli chcesz również eksperymentować z certyfikatami i wpisami tajnymi, 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