Notatka
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 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
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Python 3.7+
- Azure CLI
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
Uruchom polecenie
login.az loginJeś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.
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 wirtualne środowisko języka Python zgodnie z opisem w artykule "Używanie środowisk wirtualnych języka Python".
Zainstaluj bibliotekę tożsamości Microsoft Entra:
pip install azure-identityZainstaluj bibliotekę klienta kluczy usługi Key Vault:
pip install azure-keyvault-keys
Utwórz grupę zasobów i magazyn kluczy
- Azure CLI
- Azure PowerShell
Użyj polecenia
az group createaby utworzyć grupę zasobów:az group create --name "myResourceGroup" --location "EastUS"Jeśli wolisz, możesz zmienić wartość "EastUS" na lokalizację bliżej Ciebie.
Użyj
az keyvault createaby utworzyć magazyn kluczy:az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection trueZastą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
- Omówienie usługi Azure Key Vault
- Bezpieczny dostęp do magazynu kluczy
-
Najlepsze rozwiązania dotyczące zabezpieczeń specyficznych dla kluczy
- Przewodnik RBAC
- Przewodnik dla deweloperów Azure Key Vault
-
Uwierzytelnianie przy użyciu Key Vault