Partager via


intégration de .NET AspireAzure Key Vault

Dans cet article, vous allez apprendre à utiliser l’intégration .NET AspireAzure Key Vault. La bibliothèque d’intégration Aspire.Azure.Key.Vault est utilisée pour inscrire un SecretClient dans le conteneur DI pour la connexion à Azure Key Vault. Il active également les vérifications d’intégrité correspondantes, la journalisation et la télémétrie.

Démarrer

Pour commencer à utiliser l’intégration .NET AspireAzure Key Vault, installez le 📦Aspire.Azure. Security.KeyVault package NuGet dans le projet clientconsommant, c’est-à-dire le projet pour l’application qui utilise le Azure Key Vaultclient.

dotnet add package Aspire.Azure.Security.KeyVault

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances des packages dans les applications .NET.

Exemple d’utilisation

Les sections suivantes décrivent différents exemples d’utilisation.

Ajouter des secrets à la configuration

Dans le fichier Program.cs de votre projet qui consomme client, appelez l’extension AddAzureKeyVaultSecrets pour ajouter les secrets du Azure Key Vault à la configuration de l’application. La méthode prend un paramètre de nom de connexion.

builder.Configuration.AddAzureKeyVaultSecrets("secrets");

Vous pouvez ensuite récupérer un secret via des API normales IConfiguration. Par exemple, pour récupérer un secret à partir d’un service :

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

Utiliser SecretClient

Vous pouvez également utiliser une SecretClient pour récupérer les secrets à la demande. Dans le fichier Program.cs de votre projet consommant client, appelez l’extension AddAzureKeyVaultClient pour enregistrer un SecretClient pour utilisation via le conteneur d’injection de dépendances.

builder.AddAzureKeyVaultClient("secrets");

Vous pouvez ensuite récupérer l’instance SecretClient à l’aide de l’injection de dépendances. Par exemple, pour récupérer le client à partir d’un service :

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

Utilisation de l’hôte d’application

Pour ajouter prise en charge de l’hébergement à votre , installez le . Hébergement.. KeyVault package NuGet dans le projet hôte de l’application .

dotnet add package Aspire.Hosting.Azure.KeyVault

Dans votre projet hôte d’application, inscrivez l’intégration Azure Key Vault et consommez le service à l’aide des méthodes suivantes :

var builder = DistributedApplication.CreateBuilder(args);

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

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

Le code précédent ajoute conditionnellement la ressource Azure Key Vault au projet en fonction du contexte d’exécution. Si l’hôte de l’application s’exécute en mode publication, la ressource est ajoutée sinon la chaîne de connexion à une ressource existante est ajoutée.

Configuration

L’intégration .NET AspireAzure Key Vault fournit plusieurs options pour configurer l'SecretClient en fonction des exigences et des conventions de votre projet.

Utiliser des fournisseurs de configuration

L’intégration .NET AspireAzure Key Vault prend en charge Microsoft.Extensions.Configuration. Il charge le AzureSecurityKeyVaultSettings à partir de appsettings.json ou d’autres fichiers de configuration à l’aide de la clé Aspire:Azure:Security:KeyVault.

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

Si vous avez configuré vos configurations dans la section Aspire:Azure:Security:KeyVault de votre fichier appsettings.json, vous pouvez simplement appeler la méthode AddAzureKeyVaultSecrets sans passer de paramètres.

Utiliser des délégués inline

Vous pouvez également transmettre le délégué Action<AzureSecurityKeyVaultSettings> pour configurer certaines ou toutes les options en ligne, par exemple pour définir le VaultUri:

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

Pourboire

Le nom de l’API AddAzureKeyVaultSecrets a causé un peu de confusion. La méthode est utilisée pour configurer le SecretClient et ne pas ajouter de secrets à la configuration.

Vous pouvez également configurer le SecretClientOptions en utilisant le délégué Action<IAzureClientBuilder<SecretClient, SecretClientOptions>>, le deuxième paramètre de la méthode AddAzureKeyVaultSecrets. Par exemple, pour définir l’ID de KeyClientOptions.DisableChallengeResourceVerification pour identifier le client:

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

Options de configuration

Les options configurables suivantes sont exposées via la classe AzureSecurityKeyVaultSettings :

Nom Description
VaultUri Une URI du coffre sur lequel fonctionne le client. Apparaît sous la forme « Nom DNS » dans le portail Azure.
Credential Identifiant utilisé pour se connecter au Azure Key Vault.
DisableHealthChecks Valeur booléenne qui indique si la vérification d’intégrité du coffre de clés est désactivée ou non.
DisableTracing Valeur booléenne qui indique si le suivi OpenTelemetry est désactivé ou non.

Vérifications d’intégrité

Par défaut, les intégrations .NET.NET Aspire permettent les contrôles d’intégrité pour tous les services. Pour plus d’informations, consultez .NET.NET Aspire vue d’ensemble des intégrations.

L’intégration .NET AspireAzure Key Vault inclut les vérifications de santé suivantes :

  • Ajoute le contrôle d’intégrité AzureKeyVaultSecretsHealthCheck, qui tente de se connecter au coffre de clés et d’interroger celui-ci
  • S'intègre au point de terminaison HTTP /health, qui spécifie que toutes les vérifications de santé enregistrées doivent réussir pour que l'application soit considérée comme prête à accepter le trafic.

Observabilité et télémétrie

les intégrations .NET.NET Aspire paramètrent automatiquement la journalisation, le suivi et les métriques, parfois appelés les piliers de l’observabilité. Pour plus d’informations sur l’observabilité de l’intégration et la télémétrie, consultez .NET.NET Aspire vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration.

Exploitation forestière

L’intégration .NET AspireAzure Key Vault utilise les catégories de journaux suivantes :

  • Azure.Core
  • Azure.Identity

Traçage

L’intégration .NET AspireAzure Key Vault émet les activités de suivi suivantes à l’aide de OpenTelemetry:

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

Mesures

L’intégration .NET AspireAzure Key Vault ne prend actuellement pas en charge les métriques par défaut en raison de limitations avec le SDK Azure.

Voir aussi