Szybki start: biblioteka klienta Azure Key Vault kluczy sieciowych dla języka Python

Wprowadzenie do biblioteki Azure Key Vault klienta dla języka Python. Wykonaj poniższe kroki, aby zainstalować pakiet i wypróbować przykładowy kod dla podstawowych zadań. Używając Key Vault do przechowywania kluczy kryptograficznych, należy unikać przechowywania takich kluczy w kodzie, co zwiększa bezpieczeństwo aplikacji.

Dokumentacja referencyjna interfejsu API | Kod źródłowy biblioteki | Package (Python Package Index)

Wymagania wstępne

W tym przewodniku Szybki start założono, że używasz interfejsu wiersza polecenia platformy Azure 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 do uwierzytelniania użytkownika w usługach platformy Azure. Deweloperzy mogą również używać Visual Studio lub Visual Studio Code do uwierzytelniania swoich wywołań. Aby uzyskać więcej informacji, zobacz Authenticate the client with Azure Identity client library (Uwierzytelnianie klienta za pomocą biblioteki klienta tożsamości platformy Azure).

Logowanie 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 tece Use Python virtual environments (Używanie środowisk wirtualnych języka Python).

  2. Zainstaluj bibliotekę Azure Active Directory tożsamości:

    pip install azure.identity
    
  3. Zainstaluj bibliotekę Key Vault klienta klucza:

    pip install azure-keyvault-keys
    

Tworzenie grupy zasobów i magazynu kluczy

  1. Użyj az group create polecenia, aby utworzyć grupę zasobów:

    az group create --name KeyVault-PythonQS-rg --location eastus
    

    Możesz zmienić "Wschód" do lokalizacji zbliżonej do użytkownika, jeśli wolisz.

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

    az keyvault create --name <your-unique-keyvault-name> --resource-group KeyVault-PythonQS-rg
    

    Zamień na <your-unique-keyvault-name> nazwę, która jest unikatowa w całej platformie Azure. Zwykle używasz nazwy prywatnej lub firmowej wraz z innymi numerami i identyfikatorami.

  3. Utwórz zmienną środowiskową, która dostarcza nazwę Key Vault do kodu:

    export KEY_VAULT_NAME=<your-unique-keyvault-name>
    

Udzielanie dostępu do magazynu kluczy

Utwórz zasady dostępu dla magazynu kluczy, które będą udzielać uprawnień do klucza tajnego kontu użytkownika.

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --secret-permissions delete get list set

Ustawianie zmiennych środowiskowych

Ta aplikacja używa nazwy magazynu kluczy jako zmiennej środowiskowej o nazwie KEY_VAULT_NAME .

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS lub Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Tworzenie przykładowego kodu

Biblioteka Azure Key Vault klienta 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
  • Jeśli wystąpią błędy uprawnień, upewnij się, że uruchomiono az keyvault set-policy polecenie.
  • Ponowne uruchomienie kodu o tej samej nazwie klucza może spowodować błąd "(Konflikt) Klucz jest obecnie w stanie usunięcia, ale można go odzyskać". Użyj innej nazwy klucza.

Szczegóły kodu

Uwierzytelnianie i tworzenie klienta

W tym przewodniku Szybki start zalogowany użytkownik jest używany do uwierzytelniania w magazynie kluczy, co jest preferowaną metodą tworzenia aplikacji lokalnych. W przypadku aplikacji wdrożonych na platformie Azure tożsamość zarządzana powinna być przypisana do usługi App Service lub maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Omówienie tożsamości zarządzanej.

W poniższym przykładzie nazwa magazynu kluczy jest rozszerzana do wartości URI magazynu kluczy w formacie "https:// <your-key-vault-name> .vault.azure.net". W tym przykładzie używa się klasy "DefaultAzureCredential()", która umożliwia używanie tego samego kodu w różnych środowiskach z różnymi opcjami w celu zapewnienia tożsamości. Aby uzyskać więcej informacji, zobacz Domyślne uwierzytelnianie poświadczeń platformy Azure.

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

Zapisywanie klucza

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

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.

Podczas obsługi żądania platforma Azure uwierzytelnia tożsamość obiektu wywołującego (jednostkę usługi) przy użyciu obiektu poświadczeń podanego klientowi.

Pobieranie klucza

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

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.

Usuń klucz

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

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

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

Możesz sprawdzić, czy klucz został usunięty, za pomocą polecenia az keyvault keyshow interfejsu wiersza polecenia platformy Azure.

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

Czyszczenie zasobów

Jeśli chcesz również poeksperymentować z certyfikatami i wpisami tajnymi,możesz ponownie użyć 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 KeyVault-PythonQS-rg

Następne kroki