Dela via


Snabbstart: Azure Key Vault Hanterat HSM-klientbibliotek för Python

Kom igång med Azure Key Vault Managed HSM-klientbiblioteket för Python. Hanterad HSM är en fullständigt hanterad, högtillgänglig molntjänst med en enda klientorganisation som är standardkompatibel och som gör att du kan skydda kryptografiska nycklar för dina molnprogram med FIPS 140–3-verifierade HSM:er på nivå 3. Mer information om Managed HSM finns i Översikt.

I den här snabbstarten lär du dig att komma åt och utföra kryptografiska åtgärder på nycklar i en hanterad HSM med hjälp av Python-klientbiblioteket.

Hanterade HSM-klientbiblioteksresurser:

API-referensdokumentation | Bibliotekskällkod | Paket (PyPI)

Förutsättningar

Konfigurera din lokala miljö

Den här snabbstarten använder Azure Identity-biblioteket med Azure CLI för att autentisera till Azure tjänster. Utvecklare kan också använda Visual Studio Code för att autentisera sina anrop. Mer information finns i Authenticate the client with Azure Identity client library.

Logga in på Azure

az login Kör kommandot för att logga in:

az login

Skapa en projektmapp och virtuell miljö

  1. Skapa en projektmapp och navigera till den:

    mkdir mhsm-python-app && cd mhsm-python-app
    
  2. Skapa och aktivera en virtuell miljö:

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

Installera programvarupaketen

Installera klientbiblioteken Azure Identity och Key Vault Keys:

pip install azure-identity azure-keyvault-keys

Skapa exempelkoden

Skapa en fil med namnet mhsm_keys.py med följande kod. Ersätt <hsm-name> med ditt Managed HSM-namn och <key-name> med ett befintligt nyckelnamn.

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!")

Starta programmet

Kör programmet:

python mhsm_keys.py

Du bör se utdata som liknar följande:

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!

Förstå koden

Autentisering med DefaultAzureCredential

DefaultAzureCredential väljer automatiskt lämpliga autentiseringsuppgifter baserat på din miljö:

Miljö Använd autentiseringsuppgift
Azure virtuella datorer, App Service, Funktioner Systemtilldelad eller användartilldelad hanterad identitet
Azure Kubernetes Service Arbetsbelastningsidentitet
Lokal utveckling Autentiseringsuppgifter för Azure CLI, Visual Studio eller VS Code
CI/CD-pipelines Arbetsbelastningsidentitetsfederation eller tjänstens huvudnamn

Inloggningsuppgifterna kontrollerar dessa källor i följande ordning:

  1. Miljövariabler
  2. Arbetsbelastningsidentitet
  3. Hanterad identitet
  4. Azure CLI
  5. Azure PowerShell
  6. Autentiseringsuppgifter för Visual Studio/VS Code

För produktionsarbetsbelastningar i Azure rekommenderas hanterade identiteter starkt eftersom de eliminerar autentiseringsuppgifter helt och hållet.

Nyckelåtgärder

Klassen KeyClient innehåller metoder för att:

  • Skapa, hämta, uppdatera och ta bort nycklar
  • Lista nycklar och nyckelversioner
  • Säkerhetskopiera och återställa nycklar

Klassen CryptographyClient tillhandahåller kryptografiska åtgärder:

  • Kryptera och dekryptera data
  • Signera och verifiera signaturer
  • Omsluta och packa upp nycklar

Tilldela hanterade HSM-roller

För att programmet ska få åtkomst till nycklar tilldelar du lämplig lokal RBAC-roll för Hanterad HSM till din hanterade identitet. Ersätt <vm-name>, <resource-group>och <hsm-name> med dina faktiska värden.

# 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

Mer information om roller och behörigheter finns i Inbyggda roller för managed HSM local RBAC.

Rensa resurser

Ta bort resursgruppen och alla relaterade resurser när den inte längre behövs:

az group delete --name <resource-group>

Varning

Om du tar bort resursgruppen försätts den hanterade HSM i tillståndet för mjuk radering. Managed HSM fortsätter att faktureras tills den rensas. Se Skydd mot rensning av hanterad HSM och mjuk borttagning

Nästa steg