Dela via


.NET Aspire Azure Key Vault integrering

I den här artikeln får du lära dig hur du använder .NET AspireAzure Key Vault integrering. Integreringsbiblioteket för Aspire.Azure.Key.Vault används för att registrera en SecretClient i DI-containern för anslutning till Azure Key Vault. Det möjliggör även motsvarande hälsokontroller, loggning och telemetri.

Sätta igång

Kom igång med .NET AspireAzure Key Vault-integrationen genom att installera 📦Aspire.Azure.Security.KeyVault NuGet-paketet i projektet som förbrukar client, dvs. projektet för programmet som använder Azure Key Vaultclient.

dotnet add package Aspire.Azure.Security.KeyVault

Mer information finns i dotnet add package eller i Hantera paketberoenden i .NET applikationer.

Exempel på användning

Följande avsnitt beskriver olika exempelanvändningar.

Lägga till hemligheter i konfigurationen

I den Program.cs-filen för ditt client-förbrukande projekt anropar du AddAzureKeyVaultSecrets-tillägget för att lägga till hemligheterna som finns i Azure Key Vault till programmets konfiguration. Metoden tar en parameter för anslutningsnamn.

builder.Configuration.AddAzureKeyVaultSecrets("secrets");

Du kan sedan hämta en hemlighet via vanliga IConfiguration API:er. Om du till exempel vill hämta en hemlighet från en tjänst:

public class ExampleService(IConfiguration configuration)
{
    string secretValue = configuration["secretKey"];
    // Use secretValue ...
}

Använd SecretClient

Du kan också använda en SecretClient för att hämta hemligheterna på begäran. I den Program.cs-filen för ditt client-förbrukande projekt anropar du AddAzureKeyVaultClient-tillägget för att registrera en SecretClient som ska användas via dependency injection-behållaren.

builder.AddAzureKeyVaultClient("secrets");

Du kan hämta SecretClient-instansen sedan med hjälp av beroendeinjektion. Om du till exempel vill hämta client från en tjänst:

public class ExampleService(SecretClient client)
{
    // Use client...
}

Appvärdanvändning

Om du vill lägga till Azure Key Vault hostingstöd i din IDistributedApplicationBuilderinstallerar du 📦Aspire.Hosting.Azure.KeyVault NuGet-paket i appvärd projekt.

dotnet add package Aspire.Hosting.Azure.KeyVault

I appvärdprojektet registrerar du Azure Key Vault-integreringen och använder tjänsten med hjälp av följande metoder:

var builder = DistributedApplication.CreateBuilder(args);

var secrets = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureKeyVault("secrets")
    : builder.AddConnectionString("secrets");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(secrets)

Föregående kod lägger villkorligt till resurs Azure Key Vault i projektet baserat på exekveringskontexten. Om appvärden körs i publiceringsläge läggs resursen till, annars läggs anslutningssträngen till en befintlig resurs.

Konfiguration

.NET Aspire Azure Key Vault-integreringen innehåller flera alternativ för att konfigurera SecretClient baserat på kraven och konventionerna i projektet.

Använda konfigurationsprovidrar

.NET Aspire Azure Key Vault-integreringen stöder Microsoft.Extensions.Configuration. Den läser in AzureSecurityKeyVaultSettings från appsettings.json eller andra konfigurationsfiler med hjälp av Aspire:Azure:Security:KeyVault nyckel.

{
  "Aspire": {
    "Azure": {
      "Security": {
        "KeyVault": {
          "VaultUri": "YOUR_VAULT_URI",
          "DisableHealthChecks": false,
          "DisableTracing": true,
          "ClientOptions": {
            "DisableChallengeResourceVerification": true
          }
        }
      }
    }
  }
}

Om du har konfigurerat konfigurationerna i avsnittet Aspire:Azure:Security:KeyVault i filen appsettings.json kan du bara anropa metoden AddAzureKeyVaultSecrets utan att skicka några parametrar.

Använd inline-delegater

Du kan också använda Action<AzureSecurityKeyVaultSettings> delegering för att konfigurera vissa eller alla alternativ direkt, till exempel för att ange VaultUri:

builder.AddAzureKeyVaultSecrets(
    "secrets",
    static settings => settings.VaultUri = new Uri("YOUR_VAULTURI"));

Tips

Det AddAzureKeyVaultSecrets API-namnet har orsakat lite förvirring. Metoden används för att konfigurera SecretClient och inte för att lägga till hemligheter i konfigurationen.

Du kan också konfigurera SecretClientOptions med Action<IAzureClientBuilder<SecretClient, SecretClientOptions>>-delegat, den andra parametern i metoden AddAzureKeyVaultSecrets. Du kan till exempel ange KeyClientOptions.DisableChallengeResourceVerification-ID:t för att identifiera client:

builder.AddAzureKeyVaultSecrets(
    "secrets",
    static clientBuilder =>
        clientBuilder.ConfigureOptions(
            static options => options.DisableChallengeResourceVerification = true))

Konfigurationsalternativ

Följande konfigurerbara alternativ exponeras via klassen AzureSecurityKeyVaultSettings:

Namn Beskrivning
VaultUri En URI till valvet som client fungerar på. Visas som "DNS-namn" i Azure-portalen.
Credential De autentiseringsuppgifter som används för att komma åt Azure Key Vault.
DisableHealthChecks Ett booleskt värde som anger om hälsokontrollen för Key Vault är inaktiverad eller inte.
DisableTracing Ett booleskt värde som anger om OpenTelemetry spårning är inaktiverad eller inte.

Hälsokontroller

Som standard aktiverar .NET.NET Aspire integreringar hälsokontroller för alla tjänster. Mer information finns i översikten över .NET.NET Aspire integreringar.

Integreringen .NET AspireAzure Key Vault innehåller följande hälsokontroller:

  • Lägger till AzureKeyVaultSecretsHealthCheck hälsokontroll, som försöker ansluta till och utföra frågor mot Key Vault.
  • Integrerar med /health HTTP-slutpunkt, som anger att alla registrerade hälsokontroller måste godkännas för att appen ska betraktas som redo att ta emot trafik

Observerbarhet och telemetri

.NET .NET Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i översikten över .NET.NET Aspire integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.

Skogsavverkning

.NET Aspire Azure Key Vault-integreringen använder följande loggkategorier:

  • Azure.Core
  • Azure.Identity

Spårning

.NET Aspire Azure Key Vault-integreringen genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:

  • "Azure.Security.KeyVault.Secrets.SecretClient"

Mått

Den .NET AspireAzure Key Vault integreringen stöder för närvarande inte mått som standard på grund av begränsningar med Azure SDK.

Se även