Panduan cepat: Pustaka klien Azure Key Vault Managed HSM untuk Python

Mulai menggunakan pustaka klien Azure Key Vault Managed HSM untuk Python. Managed HSM adalah layanan cloud yang dikelola sepenuhnya, tersedia tinggi, berpenyewa tunggal, sesuai standar yang memungkinkan Anda untuk melindungi kunci kriptografi aplikasi cloud Anda dengan menggunakan HSM yang tervalidasi FIPS 140-3 Level 3. Untuk informasi selengkapnya tentang HSM Terkelola, tinjau Gambaran Umum.

Panduan cepat ini mengajarkan Anda cara mengakses dan melakukan operasi kriptografi pada kunci di HSM yang Dikelola menggunakan pustaka klien Python.

Sumber daya pustaka klien HSM terkelola:

dokumentasi referensi API | Kode sumber pustaka | Package (PyPI)

Prasyarat

Siapkan lingkungan lokal Anda

Panduan mulai cepat ini menggunakan pustaka Identitas Azure, dengan Azure CLI, untuk mengautentikasi ke layanan Azure. Pengembang juga dapat menggunakan Visual Studio Code untuk mengautentikasi panggilan mereka. Untuk informasi selengkapnya, lihat Authenticate klien dengan pustaka klien Azure Identity.

Masuk ke Azure

Jalankan az login perintah untuk masuk:

az login

Membuat folder proyek dan lingkungan virtual

  1. Buat folder proyek dan navigasikan ke folder tersebut:

    mkdir mhsm-python-app && cd mhsm-python-app
    
  2. Membuat dan mengaktifkan lingkungan virtual:

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

Instal paket-paket tersebut

Instal pustaka klien Azure Identity dan Key Vault Keys:

pip install azure-identity azure-keyvault-keys

Membuat kode sampel

Buat file bernama mhsm_keys.py dengan kode berikut. Ganti <hsm-name> dengan nama HSM Terkelola Anda, dan <key-name> dengan nama kunci yang ada.

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

Jalankan aplikasi

Jalankan aplikasi:

python mhsm_keys.py

Anda akan melihat output yang mirip dengan:

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!

Memahami kode

Autentikasi dengan DefaultAzureCredential

DefaultAzureCredential secara otomatis memilih kredensial yang sesuai berdasarkan lingkungan Anda:

Lingkungan Kredensial yang digunakan
Azure VM, App Service, Functions Identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna
Azure Kubernetes Service Identitas beban kerja
Pengembangan lokal kredensial Azure CLI, Visual Studio, atau VS Code
Jalur CI/CD Federasi identitas beban kerja atau prinsipal layanan

Pemeriksaan kredensial memeriksa sumber-sumber ini secara berurutan:

  1. Variabel lingkungan
  2. Identitas beban kerja
  3. Identitas yang dikelola
  4. Azure CLI
  5. Azure PowerShell
  6. Kredensial untuk Visual Studio / VS Code

Untuk beban kerja produksi dalam Azure, identitas terkelola sangat disarankan karena menghilangkan manajemen kredensial sepenuhnya.

Operasi utama

Kelas ini KeyClient menyediakan metode untuk:

  • Membuat, mendapatkan, memperbarui, dan menghapus kunci
  • Mencantumkan kunci dan versi kunci
  • Kunci untuk backup dan pemulihan

Kelas ini CryptographyClient menyediakan operasi kriptografi:

  • Mengenkripsi dan mendekripsi data
  • Menandatangani dan memverifikasi tanda tangan
  • Membungkus dan membongkar kunci

Menetapkan peran HSM Terkelola

Agar aplikasi Anda dapat mengakses kunci, tetapkan peran RBAC lokal HSM Terkelola yang sesuai untuk identitas terkelola Anda. Ganti <vm-name>, <resource-group>, dan <hsm-name> dengan nilai aktual Anda.

# 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

Untuk informasi selengkapnya tentang peran dan izin, lihat Peran bawaan RBAC lokal HSM terkelola.

Membersihkan sumber daya

Jika tidak lagi diperlukan, hapus grup sumber daya dan semua sumber daya terkait:

az group delete --name <resource-group>

Peringatan

Menghapus grup sumber daya akan menempatkan HSM Terkelola dalam status dihapus sementara. HSM Terkelola terus ditagih hingga dihapus secara permanen. Lihat Penghapusan lunak dan perlindungan penghapusan HSM Terkelola

Langkah berikutnya