クイックスタート: Azure Key Vault の Managed HSM クライアントライブラリ for Python

Python用の Azure Key Vault Managed HSM クライアント ライブラリの使用を開始します。 Managed HSM は、 FIPS 140-3 レベル 3 の検証済み HSM を使用して、クラウド アプリケーションの暗号化キーを保護できるようにする、フル マネージドの高可用性シングルテナントの標準準拠クラウド サービスです。 Managed HSM の詳細については、「 概要」を参照してください。

このクイック スタートでは、Python クライアント ライブラリを使用して、Managed HSM のキーに対する暗号化操作にアクセスして実行する方法について説明します。

Managed HSM クライアント ライブラリ リソース:

API リファレンス ドキュメント | Library ソース コード | Package (PyPI)

前提条件

ローカル環境を設定する

このクイック スタートでは、Azure ID ライブラリとAzure CLIを使用して、Azure サービスに対する認証を行います。 開発者は、Visual Studio Codeを使用して呼び出しを認証することもできます。 詳細については、「 Azure Identity クライアント ライブラリを使用してクライアントを認証するを参照してください。

Azureにサインインする

az login コマンドを実行してサインインします。

az login

プロジェクト フォルダーと仮想環境を作成する

  1. プロジェクト フォルダーを作成し、そこに移動します。

    mkdir mhsm-python-app && cd mhsm-python-app
    
  2. 仮想環境を作成してアクティブ化する:

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

パッケージのインストール

Azure ID および Key Vault Keys クライアント ライブラリをインストールします。

pip install azure-identity azure-keyvault-keys

サンプル コードを作成する

次のコードを使用して、 mhsm_keys.py という名前のファイルを作成します。 <hsm-name>を Managed HSM 名に置き換え、<key-name>を既存のキー名に置き換えます。

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

アプリケーションを実行する

アプリケーションを実行します。

python mhsm_keys.py

次のような出力が表示されます。

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!

コードについて

DefaultAzureCredential を使用した認証

DefaultAzureCredential 環境に基づいて適切な資格情報が自動的に選択されます。

環境 使用資格情報
Azure VM、App Service、Functions システム割り当てマネージド ID またはユーザー割り当てマネージド ID
Azure Kubernetes Service ワークロード識別子
ローカル開発 Azure CLI、Visual Studio、または VS Code の資格情報
CI/CD パイプライン ワークロード ID フェデレーションまたはサービス プリンシパル

認証情報は、次のソースを順番にチェックします。

  1. 環境変数
  2. ワークロード識別子
  3. マネージド ID
  4. Azure CLI
  5. Azure PowerShell
  6. Visual Studio/ VS Code 資格情報

Azureの運用ワークロードでは、資格情報の管理を完全に排除するため、マネージド ID を強くお勧めします。

主要オペレーション

KeyClient クラスは、次のメソッドを提供します。

  • キーの作成、取得、更新、削除
  • キーとキーのバージョンを一覧表示する
  • キーのバックアップと復元

CryptographyClient クラスは、暗号化操作を提供します。

  • データの暗号化と暗号化解除
  • 署名と署名の確認
  • キーのラップとラップ解除

Managed HSM ロールを割り当てる

アプリケーションがキーにアクセスするには、適切な Managed HSM ローカル RBAC ロールをマネージド ID に割り当てます。 <vm-name><resource-group>、および<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

ロールとアクセス許可の詳細については、「 Managed HSM ローカル RBAC 組み込みロール」を参照してください。

リソースをクリーンアップする

不要になったら、リソース グループとすべての関連リソースを削除します。

az group delete --name <resource-group>

Warnung

リソース グループを削除すると、Managed HSM は論理的に削除された状態になります。 Managed HSM は、消去されるまで引き続き課金されます。 「Managed HSM の論理的削除と消去保護」を参照してください

次のステップ