Hızlı Başlangıç Kılavuzu: Python için Azure Key Vault Yönetilen HSM İstemci Kitaplığı

Python için Azure Key Vault Yönetilen HSM istemci kitaplığını kullanmaya başlayın. Yönetilen HSM, FIPS 140-3 Düzey 3 doğrulanmış HSM'leri kullanarak bulut uygulamalarınız için şifreleme anahtarlarını korumanızı sağlayan, tam olarak yönetilen, yüksek oranda kullanılabilir, tek kiracılı, standartlara uyumlu bir bulut hizmetidir. Yönetilen HSM hakkında daha fazla bilgi için Genel Bakış'ı gözden geçirin.

Bu hızlı başlangıçta, Python istemci kitaplığını kullanarak Yönetilen HSM'deki anahtarlara erişmeyi ve bu anahtarlarda şifreleme işlemlerini gerçekleştirmeyi öğreneceksiniz.

Yönetilen HSM istemci kitaplığı kaynakları:

API başvuru belgeleri | Library kaynak kodu | Package (PyPI)

Önkoşullar

Yerel ortamınızı ayarlama

Bu hızlı başlangıçta, Azure hizmetlerinde kimlik doğrulaması yapmak için Azure CLI ile Azure Kimlik kitaplığı kullanılır. Geliştiriciler, aramalarının kimliğini doğrulamak için Visual Studio Code de kullanabilir. Daha fazla bilgi için bkz. İstemciyi Azure Identity istemci kitaplığıyla kimlik doğrulama.

Azure oturum açma

az login Oturum açmak için komutunu çalıştırın:

az login

Proje klasörü ve sanal ortam oluşturma

  1. Bir proje klasörü oluşturun ve klasörüne gidin:

    mkdir mhsm-python-app && cd mhsm-python-app
    
  2. Sanal ortam oluşturma ve etkinleştirme:

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

Paketleri yükleme

Azure Kimliği ve Key Vault Anahtarları istemci kitaplıklarını yükleyin:

pip install azure-identity azure-keyvault-keys

Örnek kodu oluşturma

Aşağıdaki kodla adlı mhsm_keys.py bir dosya oluşturun. Yönetilen HSM adınızı <hsm-name> ile ve mevcut bir anahtar adını <key-name> ile değiştirin.

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

Uygulamayı çalıştırma

Uygulamayı çalıştırın:

python mhsm_keys.py

Aşağıdakine benzer bir çıktı görmeniz gerekir:

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!

Kodu anlama

DefaultAzureCredential ile kimlik doğrulaması

DefaultAzureCredential ortamınıza göre uygun kimlik bilgilerini otomatik olarak seçer:

Çevre Kullanılan kimlik bilgileri
Azure VM’leri, Azure App Service, Azure İşlevleri Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimlik
Azure Kubernetes Service İş yükü tanımlayıcı
Yerel geliştirme Azure CLI, Visual Studio veya VS Code kimlik bilgileri
CI/CD boru hatları İş yükü kimliği federasyonu veya hizmet sorumlusu

Kimlik doğrulama bilgisi şu kaynakları sırayla kontrol eder:

  1. Ortam değişkenleri
  2. İş yükü tanımlayıcı
  3. İdare edilen kimlik
  4. Azure CLI
  5. Azure PowerShell
  6. Visual Studio / VS Code kimlik bilgileri

Azure üretim iş yükleri için, kimlik bilgisi yönetimini tamamen ortadan kaldırdıkları için yönetilen kimlikler kesinlikle önerilir.

Önemli işlemler

KeyClient sınıfı aşağıdakilere yönelik yöntemler sağlar:

  • Anahtarları oluşturma, alma, güncelleştirme ve silme
  • Liste anahtarları ve anahtar sürümleri
  • Yedekleme ve geri yükleme anahtarları

CryptographyClient sınıfı şifreleme işlemleri sağlar:

  • Verileri şifreleme ve şifresini çözme
  • İmzaları atma ve doğrulama
  • Anahtarları sarmalama ve kaldırma

Yönetilen HSM Rollerini Atama

Uygulamanızın anahtarlara erişebilmesi için, yönetilen kimliğinize uygun Yerel Yönetilen HSM RBAC rolünü atayın. , <vm-name>ve <resource-group> değerlerini gerçek değerlerinizle değiştirin<hsm-name>.

# 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

Roller ve izinler hakkında daha fazla bilgi için bkz. Yönetilen HSM yerel RBAC yerleşik rolleri.

Kaynakları temizle

Artık gerekli olmadığında kaynak grubunu ve tüm ilgili kaynakları silin:

az group delete --name <resource-group>

Uyarı

Kaynak grubu silindiğinde Yönetilen HSM geçici olarak silinmiş duruma getirilir. Yönetilen HSM temizlenene kadar faturalandırılmaya devam eder. Yönetilen HSM geçici silme ve temizleme koruması bölümüne bakın

Sonraki Adımlar