この記事では、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-secrets
Microsoft Entra ID を使用してパスワードなしの接続を使用する場合は、JavaScript 用の Azure ID クライアント ライブラリをインストールします:
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/ID パッケージを含む 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 = '<your-vault-name>';
const url = `https://${vaultName}.vault.azure.net`;
const client = new SecretClient(url, credential);
// Get secret
const secret = await client.getSecret("MySecretName");