Szybki start: biblioteka klienta zarządzanego modułu HSM Azure Key Vault dla Python

Rozpocznij pracę z biblioteką klienta zarządzanego modułu HSM Azure Key Vault na potrzeby Python. Kompleksowo zarządzany HSM to w pełni zarządzana, wysoce dostępna, jednostanowa usługa w chmurze zgodna ze standardami, która umożliwia ochronę kluczy kryptograficznych dla aplikacji w chmurze przy użyciu modułów HSM zweryfikowanych według standardu FIPS 140-3 poziomu 3. Aby uzyskać więcej informacji na temat zarządzanego modułu HSM, zapoznaj się z omówieniem.

Z tego przewodnika Szybki start dowiesz się, jak uzyskiwać dostęp do kluczy i wykonywać operacje kryptograficzne w zarządzanym module HSM przy użyciu biblioteki klienta Python.

Zasoby biblioteki klienta zarządzanego modułu HSM:

dokumentacja referencyjna API | biblioteka kodu źródłowego | Pakiet (PyPI)

Wymagania wstępne

Konfigurowanie środowiska lokalnego

W tym szybkim starcie użyto biblioteki Azure Identity z Azure CLI do uwierzytelniania usług na platformie Azure. Deweloperzy mogą również używać Visual Studio Code do uwierzytelniania wywołań. Aby uzyskać więcej informacji, zobacz Uwierzytelnij klienta za pomocą biblioteki Client Azure Identity.

Zaloguj się do Azure

Uruchom polecenie , az login aby się zalogować:

az login

Tworzenie folderu projektu i środowiska wirtualnego

  1. Utwórz folder projektu i przejdź do niego:

    mkdir mhsm-python-app && cd mhsm-python-app
    
  2. Tworzenie i aktywowanie środowiska wirtualnego:

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    

Instalowanie pakietów

Zainstaluj biblioteki klienta Azure Identity i Key Vault Keys:

pip install azure-identity azure-keyvault-keys

Tworzenie przykładowego kodu

Utwórz plik o nazwie mhsm_keys.py z następującym kodem. Zastąp <hsm-name> nazwą zarządzanego HSM i <key-name> istniejącą nazwą klucza.

from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
from azure.keyvault.keys.crypto import CryptographyClient, EncryptionAlgorithm

# Use DefaultAzureCredential for automatic credential selection
credential = DefaultAzureCredential()

# Connect to Managed HSM - replace with your HSM URI
hsm_uri = "https://<hsm-name>.managedhsm.azure.net"
key_client = KeyClient(vault_url=hsm_uri, credential=credential)

# Get a key reference
key_name = "<key-name>"
print(f"Retrieving key '{key_name}' from Managed HSM...")
key = key_client.get_key(key_name)
print(f"Key retrieved. Key type: {key.key_type}")

# Perform cryptographic operations
crypto_client = CryptographyClient(key, credential)

# Encrypt data
plaintext = b"Hello, Managed HSM!"
print(f"\nOriginal text: {plaintext.decode()}")

encrypt_result = crypto_client.encrypt(EncryptionAlgorithm.rsa_oaep_256, plaintext)
print(f"Encrypted (hex): {encrypt_result.ciphertext.hex()[:64]}...")

# Decrypt data
decrypt_result = crypto_client.decrypt(EncryptionAlgorithm.rsa_oaep_256, encrypt_result.ciphertext)
print(f"Decrypted text: {decrypt_result.plaintext.decode()}")

print("\nDone!")

Uruchamianie aplikacji

Uruchom aplikację:

python mhsm_keys.py

Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

Retrieving key 'myrsakey' from Managed HSM...
Key retrieved. Key type: RSA-HSM

Original text: Hello, Managed HSM!
Encrypted (hex): 5a8f3b2c1d4e5f6a7b8c9d0e1f2a3b4c...
Decrypted text: Hello, Managed HSM!

Done!

Omówienie kodu

Uwierzytelnianie przy użyciu DefaultAzureCredential

DefaultAzureCredential automatycznie wybiera odpowiednie poświadczenie na podstawie środowiska:

Środowisko Używane poświadczenia
Azure VMs, App Service, Funkcje Tożsamość zarządzana przypisana przez system lub przypisana przez użytkownika
Azure Kubernetes Service Tożsamość zadania
Rozwój lokalny Azure CLI, Visual Studio lub poświadczenia programu VS Code
Potoki CI/CD Federacja tożsamości obciążenia lub jednostka usługi

Poświadczenie sprawdza te źródła w następującej kolejności:

  1. Zmienne środowiskowe
  2. Tożsamość zadania
  3. Tożsamość zarządzana
  4. Azure CLI
  5. Azure PowerShell
  6. Visual Studio / VS Code poświadczenia

W przypadku obciążeń produkcyjnych w Azure tożsamości zarządzane są zdecydowanie zalecane, ponieważ całkowicie eliminują zarządzanie poświadczeniami.

Kluczowe operacje

Klasa KeyClient udostępnia metody:

  • Tworzenie, pobieranie, aktualizowanie i usuwanie kluczy
  • Lista kluczy i wersji kluczy
  • Tworzenie kopii zapasowych i przywracanie kluczy

Klasa CryptographyClient udostępnia operacje kryptograficzne:

  • Szyfrowanie i odszyfrowywanie danych
  • Podpisywanie i weryfikowanie podpisów
  • Zawijanie i odpakowywanie kluczy

Przypisywanie ról zarządzanego modułu HSM

Aby aplikacja mogła uzyskiwać dostęp do kluczy, przypisz odpowiednią lokalną rolę RBAC zarządzanego modułu HSM do tożsamości zarządzanej. Zastąp <vm-name>, <resource-group> i <hsm-name> rzeczywistymi wartościami.

# Get the principal ID of your managed identity
principalId=$(az vm identity show --name <vm-name> --resource-group <resource-group> --query principalId -o tsv)

# Assign the Crypto User role for key operations
az keyvault role assignment create \
    --hsm-name <hsm-name> \
    --role "Managed HSM Crypto User" \
    --assignee $principalId \
    --scope /keys

Aby uzyskać więcej informacji na temat ról i uprawnień, zobacz Zarządzanie lokalnymi rolami RBAC modułu HSM.

Uprzątnij zasoby

Gdy grupa zasobów i wszystkie powiązane zasoby nie będą już potrzebne, usuń je:

az group delete --name <resource-group>

Ostrzeżenie

Usunięcie grupy zasobów powoduje przełączenie zarządzanego modułu HSM do stanu usunięcia nietrwałego. Zarządzany moduł HSM będzie nadal rozliczany, dopóki nie zostanie usunięty. Zobacz Nietrwałe usuwanie zarządzanego modułu HSM i ochrona przed przeczyszczaniem

Następne kroki