.NET Aspire Azure Key Vault 統合
この記事では、.NET AspireAzure Key Vault 統合を使用する方法について説明します。
Aspire.Azure.Key.Vault
統合ライブラリは、Azure Key Vaultに接続するために DI コンテナーに SecretClient を登録するために使用されます。 また、対応する正常性チェック、ログ記録、テレメトリも有効になります。
作業の開始
.NET Aspire Azure Key Vault 統合を開始するには、📦AspireとAzure.Security.KeyVault という NuGet パッケージをクライアントを使用するプロジェクト、つまり Azure Key Vault クライアントを利用するアプリケーションのプロジェクトにインストールします。
dotnet add package Aspire.Azure.Security.KeyVault
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
使用例
以降のセクションでは、さまざまな使用例について説明します。
構成にシークレットを追加する
クライアントを使用するプロジェクトの Program.cs ファイルで、AddAzureKeyVaultSecrets 拡張機能を呼び出して、Azure Key Vault 内のシークレットをアプリケーションの構成に追加します。 このメソッドは、接続名パラメーターを受け取ります。
builder.Configuration.AddAzureKeyVaultSecrets("secrets");
その後、通常の IConfiguration API を使用してシークレットを取得できます。 たとえば、サービスからシークレットを取得するには、次のようにします。
public class ExampleService(IConfiguration configuration)
{
string secretValue = configuration["secretKey"];
// Use secretValue ...
}
SecretClient
を使用する
または、SecretClient
を使用して、オンデマンドでシークレットを取得することもできます。 クライアントを使用するプロジェクトの Program.cs ファイルで、AddAzureKeyVaultClient 拡張子を呼び出して、依存関係挿入コンテナーを介して使用する SecretClient
を登録します。
builder.AddAzureKeyVaultClient("secrets");
その後、依存関係の挿入を使用して SecretClient インスタンスを取得できます。 たとえば、サービスからクライアントを取得するには、次のようにします。
public class ExampleService(SecretClient client)
{
// Use client...
}
アプリ ホストの使用状況
Azure Key Vaultに IDistributedApplicationBuilder ホスティング サポートを追加するには、📦Aspireホスティング.Azure.KeyVault NuGet パッケージをインストールし、アプリ ホスト プロジェクトに含めます。
dotnet add package Aspire.Hosting.Azure.KeyVault
アプリ ホスト プロジェクトで、Azure Key Vault 統合を登録し、次の方法を使用してサービスを使用します。
var builder = DistributedApplication.CreateBuilder(args);
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
上記のコードは、実行コンテキストに基づいて Azure Key Vault リソースをプロジェクトに条件付きで追加します。 アプリ ホストが発行モードで実行されている場合は、リソースが追加されます。それ以外の場合は、既存のリソースへの接続文字列が追加されます。
構成
.NET Aspire
Azure Key Vault 統合には、プロジェクトの要件と規則に基づいて SecretClient
を構成するための複数のオプションが用意されています。
構成プロバイダーを使用する
.NET Aspire
Azure Key Vault 統合では、Microsoft.Extensions.Configurationがサポートされます。
Aspire:Azure:Security:KeyVault
キーを使用して、appsettings.json またはその他の構成ファイルから AzureSecurityKeyVaultSettings を読み込みます。
{
"Aspire": {
"Azure": {
"Security": {
"KeyVault": {
"VaultUri": "YOUR_VAULT_URI",
"DisableHealthChecks": false,
"DisableTracing": true,
"ClientOptions": {
"DisableChallengeResourceVerification": true
}
}
}
}
}
}
appsettings.json ファイルの Aspire:Azure:Security:KeyVault
セクションで構成を設定した場合は、パラメーターを渡さずにメソッド AddAzureKeyVaultSecrets
を呼び出すことができます。
インライン デリゲートを使用する
Action<AzureSecurityKeyVaultSettings>
デリゲートを渡して、一部またはすべてのオプションをインラインで設定することもできます。たとえば、VaultUri
を設定します。
builder.AddAzureKeyVaultSecrets(
"secrets",
static settings => settings.VaultUri = new Uri("YOUR_VAULTURI"));
ヒント
AddAzureKeyVaultSecrets
API 名は、少し混乱を引き起こしました。 このメソッドは、SecretClient
を構成するために使用され、構成にシークレットを追加しません。
AddAzureKeyVaultSecrets
メソッドの 2 番目のパラメーター Action<IAzureClientBuilder<SecretClient, SecretClientOptions>>
デリゲートを使用して、SecretClientOptions を設定することもできます。 たとえば、KeyClientOptions.DisableChallengeResourceVerification ID を設定してクライアントを識別するには、次のようにします。
builder.AddAzureKeyVaultSecrets(
"secrets",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.DisableChallengeResourceVerification = true))
構成オプション
次の構成可能なオプションは、AzureSecurityKeyVaultSettings クラスを介して公開されます。
名前 | 説明 |
---|---|
VaultUri |
クライアントが動作する保管庫へのURI。 Azure ポータルに "DNS 名" として表示されます。 |
Credential |
Azure Key Vaultに対する認証に使用される資格情報。 |
DisableHealthChecks |
Key Vault の正常性チェックが無効かどうかを示すブール値。 |
DisableTracing |
OpenTelemetry トレースが無効かどうかを示すブール値。 |
健康診断
既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。
.NET Aspire Azure Key Vault 統合には、次の正常性チェックが含まれています。
-
AzureKeyVaultSecretsHealthCheck
正常性チェックを追加します。これは、Key Vault に接続してクエリを実行しようとします。 -
/health
HTTP エンドポイントと統合します。このエンドポイントは、アプリがトラフィックを受け入れる準備ができていると見なされるために、登録されているすべての正常性チェックに合格する必要があります
可観測性とテレメトリ
伐採
.NET Aspire Azure Key Vault 統合では、次のログ カテゴリが使用されます。
Azure.Core
Azure.Identity
トレーシング
.NET Aspire Azure Key Vault 統合では、OpenTelemetryを使用して次のトレース アクティビティが出力されます。
- "Azure.Security.KeyVault.Secrets.SecretClient"
メトリック
.NET Aspire Azure Key Vault 統合では現在、Azure SDK の制限により、既定ではメトリックがサポートされていません。
関連項目
.NET Aspire