JavaScript 用の Azure Key Vault Managed HSM クライアント ライブラリの使用を開始します。 Managed HSM は、 FIPS 140-3 レベル 3 の検証済み HSM を使用して、クラウド アプリケーションの暗号化キーを保護できるようにする、フル マネージドの高可用性シングルテナントの標準準拠クラウド サービスです。 Managed HSM の詳細については、「 概要」を参照してください。
このクイック スタートでは、JavaScript クライアント ライブラリを使用して、Managed HSM のキーに対する暗号化操作にアクセスして実行する方法について説明します。
Managed HSM クライアント ライブラリ リソース:
API リファレンス ドキュメント | Library ソース コード | Package (npm)
前提条件
- Azure サブスクリプション。 無料で作成できます。
- プロビジョニングおよびアクティブ化されたマネージド HSM。
Quickstart: Azure CLI を参照してください。 - Managed HSM で作成されたキー。 「Managed HSM でのキーの管理」を参照してください。
- マネージド ID (VM、App Service、Azure 関数など) を持つAzure リソース、またはローカル開発用のAzure CLI。
- マネージド ID には、適切な Managed HSM ローカル RBAC ロールが割り当てられている必要があります。 マネージド HSM へのセキュリティで保護されたアクセスを参照してください。
ローカル環境を設定する
このクイック スタートでは、Azure ID ライブラリとAzure CLIを使用して、Azure サービスに対する認証を行います。 開発者は、Visual Studio Codeを使用して呼び出しを認証することもできます。 詳細については、「 Azure Identity クライアント ライブラリを使用してクライアントを認証するを参照してください。
Azureにサインインする
az login コマンドを実行してサインインします。
az login
プロジェクト フォルダーを作成して初期化する
プロジェクト フォルダーを作成し、そこに移動します。
mkdir mhsm-js-app && cd mhsm-js-appプロジェクトを初期化します。
npm init -y
パッケージのインストール
Azure ID および Key Vault Keys クライアント ライブラリをインストールします。
npm install @azure/identity @azure/keyvault-keys
サンプル コードを作成する
次のコードを使用して、 index.js という名前のファイルを作成します。
<hsm-name>を Managed HSM 名に置き換え、<key-name>を既存のキー名に置き換えます。
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient, CryptographyClient } = require("@azure/keyvault-keys");
async function main() {
// Use DefaultAzureCredential for automatic credential selection
const credential = new DefaultAzureCredential();
// Connect to Managed HSM - replace with your HSM URI
const hsmUri = "https://<hsm-name>.managedhsm.azure.net";
const keyClient = new KeyClient(hsmUri, credential);
// Get a key reference
const keyName = "<key-name>";
console.log(`Retrieving key '${keyName}' from Managed HSM...`);
const key = await keyClient.getKey(keyName);
console.log(`Key retrieved. Key type: ${key.keyType}`);
// Perform cryptographic operations
const cryptoClient = new CryptographyClient(key, credential);
// Encrypt data
const plaintext = Buffer.from("Hello, Managed HSM!");
console.log(`\nOriginal text: ${plaintext.toString()}`);
const encryptResult = await cryptoClient.encrypt("RSA-OAEP-256", plaintext);
console.log(`Encrypted (base64): ${encryptResult.result.toString("base64").substring(0, 64)}...`);
// Decrypt data
const decryptResult = await cryptoClient.decrypt("RSA-OAEP-256", encryptResult.result);
console.log(`Decrypted text: ${decryptResult.result.toString()}`);
console.log("\nDone!");
}
main().catch((error) => {
console.error("An error occurred:", error);
process.exit(1);
});
アプリケーションを実行する
アプリケーションを実行します。
node index.js
次のような出力が表示されます。
Retrieving key 'myrsakey' from Managed HSM...
Key retrieved. Key type: RSA-HSM
Original text: Hello, Managed HSM!
Encrypted (base64): NWE4ZjNiMmMxZDRlNWY2YTdiOGM5ZDBlMWYyYTNiNGM...
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 フェデレーションまたはサービス プリンシパル |
認証情報は、次のソースを順番にチェックします。
- 環境変数
- ワークロード識別子
- マネージド ID
- Azure CLI
- Azure PowerShell
- 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 の論理的削除と消去保護」を参照してください
次のステップ
- マネージド HSM へのセキュリティで保護されたアクセスについて説明します
- 自動キーローテーションを構成する
- Managed HSM のベスト プラクティスを確認する
- 管理された HSM ローカル RBAC の組み込みロールについて学びましょう