次の方法で共有


.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 の制限により、既定ではメトリックがサポートされていません。

関連項目