Szybki start: biblioteka klienta wpisu tajnego usługi Azure Key Vault dla języka Python
Wprowadzenie do tajnej biblioteki 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 wpisów tajnych, unikasz przechowywania wpisów tajnych w kodzie, co zwiększa bezpieczeństwo aplikacji.
Dokumentacja interfejsu API — pakiet | kodu | źródłowego biblioteki (Python Package Index)
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Python 3.7+.
- Interfejs wiersza polecenia platformy Azure lub program Azure PowerShell.
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 tożsamości platformy Azure.
Logowanie się do platformy Azure
Uruchom polecenie
az 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ę w przeglądarce przy użyciu poświadczeń swojego konta.
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 temacie Używanie środowisk wirtualnych języka Python.
Zainstaluj bibliotekę tożsamości Firmy Microsoft Entra:
pip install azure-identity
Zainstaluj bibliotekę wpisów tajnych usługi Key Vault:
pip install azure-keyvault-secrets
Tworzenie grupy zasobów i magazynu 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>
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 Secrets 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 wpisu tajnego usługi Azure Key Vault dla języka Python umożliwia zarządzanie wpisami tajnymi. Poniższy przykładowy kod przedstawia sposób tworzenia klienta, ustawiania wpisu tajnego, pobierania wpisu tajnego i usuwania wpisu tajnego.
Utwórz plik o nazwie kv_secrets.py zawierający ten kod.
import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = f"https://{keyVaultName}.vault.azure.net"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
secretName = input("Input a name for your secret > ")
secretValue = input("Input a value for your secret > ")
print(f"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...")
client.set_secret(secretName, secretValue)
print(" done.")
print(f"Retrieving your secret from {keyVaultName}.")
retrieved_secret = client.get_secret(secretName)
print(f"Your secret is '{retrieved_secret.value}'.")
print(f"Deleting your secret from {keyVaultName} ...")
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
print(" done.")
Uruchamianie kodu
Upewnij się, że kod w poprzedniej sekcji znajduje się w pliku o nazwie kv_secrets.py. Następnie uruchom kod za pomocą następującego polecenia:
python kv_secrets.py
- Jeśli wystąpią błędy uprawnień, upewnij się, że uruchomiono
az keyvault set-policy
polecenie lubSet-AzKeyVaultAccessPolicy
. - Ponowne uruchomienie kodu o tej samej nazwie wpisu tajnego może spowodować wyświetlenie błędu "(Konflikt) Nazwa> wpisu tajnego <jest obecnie w stanie usuniętym, ale można go odzyskać". Użyj innej nazwy wpisu tajnego.
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 = SecretClient(vault_url=KVUri, credential=credential)
Zapisywanie wpisu tajnego
Po uzyskaniu obiektu klienta dla magazynu kluczy można przechowywać wpis tajny przy użyciu metody set_secret :
client.set_secret(secretName, secretValue)
Wywołanie set_secret
powoduje wygenerowanie wywołania 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 wpisu tajnego
Aby odczytać wpis tajny z usługi Key Vault, użyj metody get_secret :
retrieved_secret = client.get_secret(secretName)
Wartość wpisu tajnego jest zawarta w pliku retrieved_secret.value
.
Możesz również pobrać wpis tajny za pomocą polecenia interfejsu wiersza polecenia platformy Azure az keyvault secret show lub polecenia cmdlet programu Azure PowerShell Get-AzKeyVaultSecret.
Usuń klucz tajny
Aby usunąć wpis tajny, użyj metody begin_delete_secret :
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
Metoda begin_delete_secret
jest asynchroniczna i zwraca obiekt poller. Wywołanie metody poller result
czeka na jego zakończenie.
Możesz sprawdzić, czy wpis tajny został usunięty za pomocą polecenia interfejsu wiersza polecenia platformy Azure az keyvault secret show lub polecenia cmdlet programu Azure PowerShell Get-AzKeyVaultSecret.
Po usunięciu wpis tajny pozostaje w stanie usuniętym, ale można go odzyskać przez pewien czas. Jeśli ponownie uruchomisz kod, użyj innej nazwy wpisu tajnego.
Czyszczenie zasobów
Jeśli chcesz również eksperymentować z certyfikatami 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