この記事では、JavaScript 用の Azure Key Vault シークレット クライアント ライブラリを使用してAzure Key Vaultに接続する方法について説明します。 接続すると、コードはコンテナー内のシークレットとシークレット プロパティに対して操作できます。
API リファレンス | パッケージ (npm) | ライブラリ ソース コード | サンプル | フィードバック
[前提条件]
- Azure サブスクリプション - 無料で作成。
- Azure Key Vault インスタンス。 コードを実行している ID に、コードで実行される特定のタスクに対して適切な Azure RBAC ロールがあることを確認します。
- Node.js バージョンの LTS
プロジェクトの設定
コマンド プロンプトを開き、プロジェクト フォルダーに変更します。
<project-directory>を実際のフォルダー名に変更します:cd <project-directory>ディレクトリに
package.jsonファイルがまだない場合は、プロジェクトを初期化してファイルを作成します。npm init -yJavaScript 用の Azure Key Vault シークレット クライアント ライブラリをインストールします。
npm install @azure/keyvault-secretsMicrosoft Entra IDを使用してパスワードレス接続を使用する場合は、JavaScript 用の Azure Identity クライアント ライブラリをインストールします。
npm install @azure/identity
アクセスを承認し、Key Vaultに接続する
Microsoft Entra IDは、接続 ID (管理 ID) を管理することで、最も安全な接続を提供します。 このパスワードレス機能を使用すると、コードに格納されているシークレット (キーまたは接続文字列) を必要としないアプリケーションを開発できます。
Azure Key Vault シークレットを使用するAzureをプログラムで認証する前に、必ず環境を設定してください。
アプリケーションをビルドする
アプリケーションをビルドすると、コードは次の 2 種類のリソースと対話します。
-
KeyVaultSecret。次のものが含まれます。
- シークレット名、文字列値。
- シークレット値。シークレットの文字列です。 必要に応じて、文字列との間でシークレット値のシリアル化と逆シリアル化を行います。
- 秘密の属性。
- SecretProperties。シークレットのメタデータ (名前、バージョン、タグ、有効期限データ、有効かどうかなど) が含まれます。
KeyVaultSecret の値が必要な場合は、 KeyVaultSecret を返すメソッドを使用します。
残りのメソッドは、SecretProperties オブジェクトまたは次のようなプロパティの別の形式を返します。
- DeletedSecret プロパティ
SecretClient オブジェクトを作成する
SecretClient オブジェクトは、SDK の最上位のオブジェクトです。 このクライアントを使用すると、シークレットを操作できます。
Azure Key Vaultアクセス ロールとローカル環境を設定したら、@azure/identity パッケージを含む JavaScript ファイルを作成します。 DefaultAzureCredential などの資格情報を作成し、ボールトへのパスワードレス接続を実装します。 その資格情報を使用して SecretClient オブジェクトで認証します。
// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';
import { SecretClient } from '@azure/keyvault-secrets';
// Authenticate to Azure
const credential = new DefaultAzureCredential();
// Create SecretClient
const vaultName = '<vault-name>';
const url = `https://${vaultName}.vault.azure.net`;
const client = new SecretClient(url, credential);
// Get secret
const secret = await client.getSecret("MySecretName");