JavaScript を使用して Azure Key Vault でシークレットを設定、更新、ローテーションする
適切なプログラムの認証資格情報で SecretClient を作成し、次にクライアントを使用して Azure Key Vault のシークレットを設定、更新、およびローテーションします。
シークレットを設定する
Azure Key Vault でシークレットを設定するには、SecretClient クラスの setSecret メソッドを使用します。
シークレット値の型は文字列です。 初期値には、JSON や BASE64 でエンコードされたデータなどの文字列にシリアル化できるものを指定できます。 Key Vault でシークレットを設定する前にシリアル化を指定し、Key Vault からシークレットを取得した後に逆シリアル化する必要があります。
const name = 'mySecret';
const value = 'mySecretValue'; // or JSON.stringify({'key':'value'})
const { name, value, properties } = await client.setSecret(
secretName,
secretValue
);
シークレットを作成すると、 KeyVaultSecret 応答には、次のようなシークレットのメタデータを含む SecretProperties オブジェクトが含まれます。
createdOn
: シークレットの作成日時 (UTC)。id
: シークレットの完全な URL。recoverableDays
: 削除後にシークレットを回復できる日数。recoveryLevel
: 値には、'Purgeable'、'Recoverable+Purgeable'、'Recoverable'、'Recoverable+ProtectedSubscription' が含まれます。updatedOn
: シークレットが最後に更新された日時 (UTC)。version
: シークレットのバージョン。
プロパティを使用してシークレットを設定する
SecretClient クラスの setSecret メソッドを SetSecretOptions と共に使用して、シークレットと共に存在する次のような省略可能なパラメーターを含めます。
contentType
: シークレットのコンテンツ タイプの表現と解釈。 推奨される使用方法として、ネイティブ型、独自のカスタム TypeScript 型、または MIME 型などがあります。 この値は Azure portal に表示されます。enabled
: 既定値は true です。expiresOn
: シークレットの有効期限が切れる日時 (UTC)。notBefore
: シークレットが使用できるようになる日時 (UTC)。tags
: シークレットに関連付けるために使用できるカスタムの名前と値のペア。
const name = 'mySecret';
const value = JSON.stringify({
'mykey':'myvalue',
'myEndpoint':'https://myendpoint.com'
});
const secretOptions = {
// example options
contentType: 'application/json',
tags: {
project: 'test-cluster',
owner: 'jmclane',
team: 'devops'
}
};
const { name, value, properties } = await client.setSecret(
secretName,
secretValue,
secretOptions
);
このメソッドは、KeyVaultSecret オブジェクトを返します。
シークレット値を更新する
シークレット値を更新するには、前のセクションで示した setSecret メソッドを使用します。 新しい値を文字列として渡し、シークレットの現在のバージョンで保持する "すべての" プロパティを渡してください。 setSecret の追加呼び出しで設定されていない現在のプロパティは、すべて失われます。
これにより、シークレットの新しいバージョンが生成されます。 返される SecretProperties オブジェクトには、新しいバージョン ID が含まれています。
シークレット プロパティを更新する
シークレットのプロパティを更新するには、SecretClient クラスの updateSecretProperties メソッドを使用します。 要求で指定されていないプロパティは変更されません。 シークレットの値そのものは変更できません。 この操作には、シークレット/設定のアクセス許可が必要です。
const name = 'mySecret';
// Update tags
const updatedTagName = 'existingTag';
const updatedTagValue = secret.properties.version.tags[updatedTagName] + ' additional information';
// Use version from existing secret
const version = secret.properties.version;
// Options to update
const secretOptions = {
tags: {
'newTag': 'newTagValue', // Set new tag
'updatedTag': updatedTagValue // Update existing tag
},
enabled: false
}
// Update secret's properties - doesn't change secret name or value
const properties = await client.updateSecretProperties(
secretName,
secretVersion,
secretOptions,
);
このメソッドは SecretProperties オブジェクトを返します。
シークレットをローテーションする
シークレットをローテーションするには、SecretNearExpiry イベントの Event Grid イベント サブスクリプションを作成し、イベント トリガーで呼び出されるローテーション機能を提供する必要があります。 次のいずれかを使用したリソースを対象にシークレットのローテーションを自動化することに関するチュートリアルを使用します。