JavaScript で Azure Key Vault キーを使用できるようにする
この記事では、JavaScript 用の Azure Key Vault キー クライアント ライブラリを使って、Azure Key Vault に接続する方法について説明します。 接続後、コードはコンテナーのキーに対して操作できます。
API リファレンス | パッケージ (npm) | ライブラリのソース コード | サンプル | フィードバックを送信する
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure Key Vault インスタンス。 Key Vault のアクセス ポリシーを確認して、コードで実行される特定のタスクに必要なアクセス許可を含めます。
- Node.js バージョンの LTS
プロジェクトの設定
コマンド プロンプトを開き、プロジェクト フォルダーに変更します。
YOUR-DIRECTORY
をご使用のフォルダー名に変更してください。cd YOUR-DIRECTORY
ディレクトリに
package.json
ファイルがまだない場合は、プロジェクトを初期化してファイルを作成します。npm init -y
JavaScript 用の Azure Key Vault キー クライアント ライブラリをインストールします。
npm install @azure/keyvault-keys
Microsoft 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 認証の設定後、JavaScript ファイルを作成します。これには、@azure/ID と@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);
}