Delen via


integratie van .NET AspireAzure Key Vault

In dit artikel leert u hoe u de .NET AspireAzure Key Vault-integratie gebruikt. De Aspire.Azure.Key.Vault-integratiebibliotheek wordt gebruikt om een SecretClient te registreren in de DI-container om verbinding te maken met Azure Key Vault. Het maakt ook bijbehorende statuscontroles, logboekregistratie en telemetrie mogelijk.

Aan de slag

Installeer het 📦Aspireom aan de slag te gaan met de .NET AspireAzure Key Vault-integratie. Installeer hetAzure.Security.KeyVault NuGet-pakket in het client-consumerende project, dat wil zeggen, het project voor de toepassing die gebruikmaakt van de Azure Key Vaultclient.

dotnet add package Aspire.Azure.Security.KeyVault

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Voorbeeld van gebruik

In de volgende secties worden verschillende voorbeeldgebruiken beschreven.

Geheimen toevoegen aan configuratie

Roep in het Program.cs-bestand van uw client-verbruikende project de AddAzureKeyVaultSecrets-extensie aan om de geheimen in de Azure Key Vault toe te voegen aan de configuratie van de applicatie. De methode gebruikt een verbindingsnaamparameter.

builder.Configuration.AddAzureKeyVaultSecrets("secrets");

Vervolgens kunt u een geheim ophalen via normale IConfiguration API's. Bijvoorbeeld om een geheim op te halen uit een service:

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

Gebruik SecretClient

U kunt ook een SecretClient gebruiken om de geheimen op aanvraag op te halen. Roep in het Program.cs-bestand van uw clientverbruikende project de AddAzureKeyVaultClient-extensie aan om een SecretClient te registreren voor gebruik via de container voor afhankelijkheidsinjectie.

builder.AddAzureKeyVaultClient("secrets");

Vervolgens kunt u het SecretClient exemplaar ophalen met behulp van afhankelijkheidsinjectie. Bijvoorbeeld, om de client op te halen uit een service:

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

App-hostgebruik

Als u hostingondersteuning wilt toevoegen aan uw , installeert u het .Hosting..KeyVault NuGet-pakket in het-project voor het -app-hosting.

dotnet add package Aspire.Hosting.Azure.KeyVault

Registreer in uw app-hostproject de Azure Key Vault integratie en gebruik de service met behulp van de volgende methoden:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Met de voorgaande code wordt de Azure Key Vault resource voorwaardelijk aan het project toegevoegd op basis van de uitvoeringscontext. Als de app-host wordt uitgevoerd in de publicatiemodus, wordt de resource toegevoegd, anders wordt de verbindingsreeks aan een bestaande resource toegevoegd.

Configuratie

De .NET AspireAzure Key Vault-integratie biedt meerdere opties voor het configureren van de SecretClient op basis van de vereisten en conventies van uw project.

Configuratieproviders gebruiken

De .NET AspireAzure Key Vault-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de AzureSecurityKeyVaultSettings uit appsettings.json of andere configuratiebestanden met behulp van Aspire:Azure:Security:KeyVault sleutel.

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

Als u uw configuraties hebt ingesteld in de sectie Aspire:Azure:Security:KeyVault van uw appsettings.json-bestand, kunt u de methode AddAzureKeyVaultSecrets aanroepen zonder parameters door te geven.

Gebruik inline delegates

U kunt ook de Action<AzureSecurityKeyVaultSettings> delegate doorgeven om enkele of alle opties direct in te stellen, bijvoorbeeld om de VaultUriin te stellen:

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

Tip

De AddAzureKeyVaultSecrets API-naam heeft enige verwarring veroorzaakt. De methode wordt gebruikt om de SecretClient te configureren en geen geheimen toe te voegen aan de configuratie.

U kunt de SecretClientOptions ook instellen met behulp van de Action<IAzureClientBuilder<SecretClient, SecretClientOptions>> delegate, de tweede parameter van de AddAzureKeyVaultSecrets-methode. Als u bijvoorbeeld de KeyClientOptions.DisableChallengeResourceVerification-id wilt instellen om de clientte identificeren:

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

Configuratieopties

De volgende configureerbare opties worden weergegeven via de AzureSecurityKeyVaultSettings klasse:

Naam Beschrijving
VaultUri Een URI naar de kluis waarop de client werkt. Wordt weergegeven als 'DNS-naam' in de Azure-portal.
Credential Het authenticatiemiddel dat wordt gebruikt voor verificatie bij het Azure Key Vault-systeem.
DisableHealthChecks Een Booleaanse waarde die aangeeft of de Key Vault-statuscontrole is uitgeschakeld of niet.
DisableTracing Een booleaanse waarde die aangeeft of de OpenTelemetry tracering is uitgeschakeld of niet.

Gezondheidscontroles

Standaard kunnen .NET.NET Aspire integraties statuscontroles voor alle services inschakelen. Zie .NET.NET Aspire overzicht van integratiesvoor meer informatie.

De .NET AspireAzure Key Vault-integratie bevat de volgende statuscontroles:

  • Hiermee voegt u de AzureKeyVaultSecretsHealthCheck statuscontrole toe, waarmee verbinding wordt gemaakt met de Key Vault en er query's op wordt uitgevoerd
  • Kan worden geïntegreerd met het /health HTTP-eindpunt, waarbij alle geregistreerde gezondheidscontroles moeten slagen voordat de app als gereed wordt beschouwd om verkeer te accepteren.

Waarneembaarheid en telemetrie

.NET .NET Aspire integraties configureren automatisch logging-, tracing- en metrische configuraties, die ook wel bekend zijn als de pijlers van waarneembaarheid. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.

Loggen

De .NET AspireAzure Key Vault-integratie maakt gebruik van de volgende logboekcategorieën:

  • Azure.Core
  • Azure.Identity

Tracering

De .NET AspireAzure Key Vault-integratie verzendt de volgende traceringsactiviteiten met behulp van OpenTelemetry:

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

Statistieken

De .NET AspireAzure Key Vault-integratie biedt momenteel geen ondersteuning voor metrische gegevens vanwege beperkingen met de Azure SDK.

Zie ook