JavaScript で Azure Key Vault キーの使用を開始する

この記事では、JavaScript 用の Azure Key Vault キー クライアント ライブラリを使用してAzure Key Vaultに接続する方法について説明します。 接続されると、コードはボールト内のキーを操作できます。

API リファレンス | パッケージ (npm) | ライブラリ ソース コード | サンプル | フィードバック

[前提条件]

プロジェクトの設定

  1. コマンド プロンプトを開き、プロジェクト フォルダーに変更します。 <your-directory> を実際のフォルダー名に変更します:

    cd <your-directory>
    
  2. ディレクトリに package.json ファイルがまだない場合は、プロジェクトを初期化してファイルを作成します。

    npm init -y
    
  3. JavaScript 用の Azure Key Vault キー クライアント ライブラリをインストールします。

    npm install @azure/keyvault-keys
    
  4. Microsoft Entra IDを使用してパスワードレス接続を使用する場合は、JavaScript 用の Azure Identity クライアント ライブラリをインストールします。

    npm install @azure/identity
    

アクセスを承認し、Key Vaultに接続する

Microsoft Entra IDは、接続 ID (管理 ID) を管理することで、最も安全な接続を提供します。 この パスワードレス 機能を使用すると、コードに格納されているキーを必要としないアプリケーションを開発できます。

Azure Key Vault キーを使用するAzureをプログラムで認証する前に、環境を設定していることを確認してください。

 JavaScript 資格情報フローのAzure SDKのダイアグラム.

開発者はAzure CLIをインストールし、コードで DefaultAzureCredential を使用する前に、az login コマンドを使用して対話形式でサインインして、Azureにログインする必要があります。

az login

アプリケーションをビルドする

アプリケーションをビルドすると、コードは次の 2 種類のリソースと対話します。

  • KeyVaultKey。次のものが含まれます。
    • ID、名前、および値。
    • 許可される操作。
    • ECEC-HSMRSARSA-HSMoctoct-HSMなどの型。
    • KeyProperties としてのプロパティ
  • KeyProperties。キーのメタデータ (名前、バージョン、タグ、有効期限データ、有効かどうかなど) が含まれます。

KeyVaultKey の値が必要な場合は、 KeyVaultKey を返すメソッドを使用します。

オブジェクト モデル

JavaScript 用の Azure Key Vault キー クライアント ライブラリには、次のクライアントが含まれています。

  • KeyClient: KeyClient オブジェクトは SDK の最上位のオブジェクトです。 このクライアントを使用すると、キーの作成、ローテーション、削除、一覧表示などのキー管理タスクを実行できます。
  • CryptographyClient を使用すると、キーの暗号化、暗号化解除、署名、検証、ラップ、ラップ解除を行えます。

KeyClient と CryptographyClient の間のクライアント ライブラリ内の関係を示す概念図。

KeyClient オブジェクトを作成する

ローカル環境とKey Vault承認が設定されたら、javaScript ファイルを作成します。これには、@azure/identity および @azure/keyvault-keys パッケージが含まれます。 DefaultAzureCredential などの資格情報を作成し、ボールトへのパスワードレス接続を実装します。 その資格情報を使用して 、KeyClient オブジェクトで認証します。

// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';  
import { KeyClient } from '@azure/keyvault-keys';  

// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential(); 
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
  );

// Get key
const key = await client.getKey("MyKeyName");

CryptographyClient オブジェクトを作成する

CryptographyClient オブジェクトは SDK の操作オブジェクトです。キーを使用して、暗号化、暗号化解除、署名と検証、ラップとラップ解除などのアクションを実行します。

KeyClient の ID 資格情報とキー名を使用して、操作を実行する CryptographyClient を作成します。

// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';  
import {
  CryptographyClient,
  KeyClient,
  KnownEncryptionAlgorithms,
  RsaEncryptParameters
} from '@azure/keyvault-keys'; 

// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential(); 
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
  ); 

// Get key
const key = await client.getKey("MyKeyName");

if (key?.name) {

    // get encryption client
    const encryptClient = new CryptographyClient(key, credential);

    // encrypt data
    const encryptParams = { 
        algorithm: KnownEncryptionAlgorithms.RSAOaep256,
        plaintext: Buffer.from("Hello world!")
    }
    const encryptResult = await encryptClient.encrypt(encryptParams);
}

こちらも参照ください

次のステップ