次の方法で共有


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 ID クライアント ライブラリをインストールします:

    npm install @azure/identity
    

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

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

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

Azure SDK for JavaScript 資格情報フローの図。

開発者は、コードで DefaultAzureCredential を使用する前に、Azure CLI をインストールし、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 の承認が設定されたら、@azure/ID と @azure/keyvault-keys パッケージを含む JavaScript ファイルを作成します。 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);
}

こちらも参照ください

次のステップ