JavaScript で Azure Key Vault キーを使用できるようにする
- [アーティクル]
-
-
この記事では、JavaScript 用の Azure Key Vault キー クライアント ライブラリを使って、Azure Key Vault に接続する方法について説明します。 接続後、コードはコンテナーのキーに対して操作できます。
API リファレンス | パッケージ (npm) | ライブラリのソース コード | サンプル | フィードバックを送信する
コマンド プロンプトを開き、プロジェクト フォルダーに変更します。 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 に対してプログラムで認証する前に、環境が設定されていることを確認します。
開発者は、コードで DefaultAzureCredential を使用する前に、Azure CLI をインストールし、az login コマンドを使用して対話形式でサインインして Azure にログインする必要があります。
az login
Azure PowerShell ユーザーで認証するには、Connect-AzAccount コマンドレットを実行します。 既定では、Azure CLI と同様に、Connect-AzAccount は既定の Web ブラウザーを起動してユーザー アカウントを認証します。
Connect-AzAccount
アプリケーションをビルドすると、コードは 2 種類のリソースと対話します。
- KeyVaultKey には、次のものが含まれます。
- ID、名前、および値。
- 許可されている操作。
EC
、EC-HSM
、RSA
、RSA-HSM
、oct
、oct-HSM
のデータ型。
- KeyProperties としてのプロパティ
- KeyPropertiesには、キーのメタデータ (名前、バージョン、タグ、有効期限データ、有効かどうかなど) が含まれます。
KeyVaultKey の値が必要な場合は、KeyVaultKey を返すメソッドを使用します。
JavaScript 用の Azure Key Vault キー クライアント ライブラリには、次のクライアントが含まれています。
- KeyClient: KeyClient オブジェクトは、SDK の最上位のオブジェクトです。 このクライアントを使用すると、キーの作成、ローテーション、削除、一覧表示などのキー管理タスクを実行できます。
- CryptographyClient を使用すると、キーの暗号化、復号化、署名、検証、ラップ、ラップ解除を実行できます。
ローカル環境と 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);
}