次の方法で共有


クイックスタート: Azure Key Vault の Managed HSM クライアント ライブラリ (JavaScript 用)

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

Azureにサインインする

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

az login

プロジェクト フォルダーを作成して初期化する

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

    mkdir mhsm-js-app && cd mhsm-js-app
    
  2. プロジェクトを初期化します。

    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 フェデレーションまたはサービス プリンシパル

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

  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 の論理的削除と消去保護」を参照してください

次のステップ