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 referencyjna API | Kod źródłowy biblioteki | Pakiet (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 szybki start wykorzystuje bibliotekę tożsamości platformy Azure wraz z Azure CLI lub programem 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 Uwierzytelnij klienta za pomocą biblioteki klienta Azure Identity.

Logowanie się do platformy Azure

  • Azure CLI
  • Azure PowerShell
  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 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 wirtualne środowisko języka Python zgodnie z opisem w artykule "Używanie środowisk wirtualnych języka Python".

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

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

    pip install azure-keyvault-keys
    

Utwórz grupę zasobów i magazyn kluczy

  • Azure CLI
  • Azure PowerShell
  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ć wartość "EastUS" na lokalizację bliżej Ciebie.

  2. Użyj az keyvault create aby utworzyć magazyn kluczy:

    az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection true
    

    Zastąp <vault-name> nazwą, która jest unikatowa 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 do zmiennej środowiskowej KEY_VAULT_NAME, aby określić nazwę magazynu kluczy. W związku z tym należy ustawić tę wartość przy użyciu następującego polecenia:

export KEY_VAULT_NAME=<vault-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 interfejsu wiersza polecenia platformy Azure az role assignment create.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Zastąp <upn>, <subscription-id> i <vault-name> rzeczywistymi wartościami. Jeśli użyto innej nazwy grupy zasobów, zastąp "myResourceGroup" również. 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) Klucz <name> 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 Azure Identity jest zalecanym podejściem w celu wdrażania połączeń bezhasłowych z usługami Azure w kodzie. DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa, która metoda powinna być używana podczas uruchamiania. 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 szybkim starcie DefaultAzureCredential uwierzytelnia się w magazynie kluczy przy użyciu poświadczeń lokalnego użytkownika dewelopera zalogowanego do Azure CLI. Po wdrożeniu aplikacji na platformie Azure ten sam 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 poprzez użycie wartości zmiennej KVUri w formacie: https://<vault-name>.vault.azure.net.

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

Zapisz klucz

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.

Wywołanie metody create 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 Azure CLI `az keyvault key show` lub 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 pollera result czeka na jego zakończenie.

Możesz sprawdzić, czy klucz został usunięty za pomocą polecenia Azure CLI "az keyvault key show" lub polecenia cmdlet 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 tajemnicami, 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:

  • Azure CLI
  • Azure PowerShell
az group delete --resource-group "myResourceGroup"

Następne kroki