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-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/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 = '<your-vault-name>';
const url = `https://${vaultName}.vault.azure.net`;
const client = new SecretClient(url, credential);
// Get secret
const secret = await client.getSecret("MySecretName");