この記事では、JavaScript 用の Azure Key Vault キー クライアント ライブラリを使用して Azure Key Vault に接続する方法について説明します。 接続されると、コードはボールト内のキーを操作できます。
API リファレンス | パッケージ (npm) | ライブラリのソース コード | サンプル | フィードバックを送信する
[前提条件]
- Azure サブスクリプション - 無料で作成します。
- Azure Key Vault インスタンス。 コードで特定のタスクを実行するために、適切な Azure RBAC ロール が割り当てられていることを確認します。
- Node.js バージョンの LTS
プロジェクトの設定
コマンド プロンプトを開き、プロジェクト フォルダーに変更します。
YOUR-DIRECTORYを実際のフォルダー名に変更します:cd YOUR-DIRECTORYディレクトリに
package.jsonファイルがまだない場合は、プロジェクトを初期化してファイルを作成します。npm init -yJavaScript 用の Azure Key Vault キー クライアント ライブラリをインストールします。
npm install @azure/keyvault-keysMicrosoft Entra ID を使用してパスワードなしの接続を使用する場合は、JavaScript 用の Azure ID クライアント ライブラリをインストールします:
npm install @azure/identity
アクセスを承認し、Key Vault に接続する
Microsoft Entra ID は、接続 ID (マネージド ID) を管理することで、最も安全な接続を提供します。 この パスワードレス 機能を使用すると、コードに格納されているキーを必要としないアプリケーションを開発できます。
Azure Key Vault キーを使用するようにプログラムによって Azure に認証する前に、環境を設定していることを確認してください。
アプリケーションをビルドする
アプリケーションをビルドすると、コードは次の 2 種類のリソースと対話します。
-
KeyVaultKey。次のものが含まれます。
- ID、名前、および値。
- 許可される操作。
-
EC、EC-HSM、RSA、RSA-HSM、oct、oct-HSMなどの型。 - KeyProperties としてのプロパティ
- KeyProperties。キーのメタデータ (名前、バージョン、タグ、有効期限データ、有効かどうかなど) が含まれます。
KeyVaultKey の値が必要な場合は、 KeyVaultKey を返すメソッドを使用します。
オブジェクト モデル
JavaScript 用の Azure Key Vault キー クライアント ライブラリには、次のクライアントが含まれています。
- KeyClient: KeyClient オブジェクトは SDK の最上位のオブジェクトです。 このクライアントを使用すると、キーの作成、ローテーション、削除、一覧表示などのキー管理タスクを実行できます。
- 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);
}