integrazione di .NET AspireAzure Key Vault
Questo articolo illustra come usare l'integrazione .NET AspireAzure Key Vault. La libreria di integrazione Aspire.Azure.Key.Vault
viene utilizzata per registrare un SecretClient nel contenitore DI per la connessione a Azure Key Vault. Abilita anche i controlli sanitari, la registrazione dei log e i dati di telemetria corrispondenti.
Inizia
Per iniziare a utilizzare l'integrazione di .NET AspireAzure Key Vault, installare il pacchetto NuGet 📦Aspire.Azure.Security.KeyVault nel progetto di consumo client, ovvero il progetto per l'applicazione che utilizza il Azure Key Vaultclient.
dotnet add package Aspire.Azure.Security.KeyVault
Per ulteriori informazioni, vedere dotnet add package oppure Gestisci le dipendenze dei pacchetti nelle applicazioni .NET.
Esempio di utilizzo
Le sezioni seguenti descrivono vari utilizzi di esempio.
Aggiungere segreti alla configurazione
Nel file Program.cs del tuo progetto che consuma client, chiamare l'estensione AddAzureKeyVaultSecrets per aggiungere i segreti nel Azure Key Vault alla configurazione dell'applicazione. Il metodo accetta un parametro del nome di connessione.
builder.Configuration.AddAzureKeyVaultSecrets("secrets");
È quindi possibile recuperare un segreto tramite le NORMALI API di IConfiguration. Ad esempio, per recuperare un segreto da un servizio:
public class ExampleService(IConfiguration configuration)
{
string secretValue = configuration["secretKey"];
// Use secretValue ...
}
Usare SecretClient
In alternativa, è possibile usare un SecretClient
per recuperare i segreti su richiesta. Nel file Program.cs del progetto che consuma client, chiamare l'estensione AddAzureKeyVaultClient per registrare un SecretClient
da usare tramite il contenitore di iniezione delle dipendenze.
builder.AddAzureKeyVaultClient("secrets");
È quindi possibile recuperare l'istanza di SecretClient usando l'inserimento delle dipendenze. Ad esempio, per recuperare il client da un servizio:
public class ExampleService(SecretClient client)
{
// Use client...
}
Utilizzo dell'host dell'app
Per aggiungere
dotnet add package Aspire.Hosting.Azure.KeyVault
Nel progetto host dell'app, registra l'integrazione Azure Key Vault e utilizza il servizio con i metodi seguenti:
var builder = DistributedApplication.CreateBuilder(args);
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
Il codice precedente aggiunge in modo condizionale la risorsa Azure Key Vault al progetto in base al contesto di esecuzione. Se l'host dell'app è in esecuzione in modalità di pubblicazione, la risorsa viene aggiunta; altrimenti viene aggiunta la stringa di connessione a una risorsa esistente.
Configurazione
L'integrazione .NET AspireAzure Key Vault offre più opzioni per configurare l'SecretClient
in base ai requisiti e alle convenzioni del progetto.
Usare i Provider di Configurazione
L'integrazione .NET AspireAzure Key Vault supporta Microsoft.Extensions.Configuration. Carica il AzureSecurityKeyVaultSettings da appsettings.json o da altri file di configurazione usando la chiave Aspire:Azure:Security:KeyVault
.
{
"Aspire": {
"Azure": {
"Security": {
"KeyVault": {
"VaultUri": "YOUR_VAULT_URI",
"DisableHealthChecks": false,
"DisableTracing": true,
"ClientOptions": {
"DisableChallengeResourceVerification": true
}
}
}
}
}
}
Se sono state configurate le configurazioni nella sezione Aspire:Azure:Security:KeyVault
del file di appsettings.json, è sufficiente chiamare il metodo AddAzureKeyVaultSecrets
senza passare alcun parametro.
Usare delegati inline
È anche possibile passare il delegato Action<AzureSecurityKeyVaultSettings>
per configurare alcune o tutte le opzioni direttamente, ad esempio per definire il VaultUri
:
builder.AddAzureKeyVaultSecrets(
"secrets",
static settings => settings.VaultUri = new Uri("YOUR_VAULTURI"));
Consiglio
Il nome dell'API AddAzureKeyVaultSecrets
ha causato un po' di confusione. Il metodo viene usato per configurare il SecretClient
e non per aggiungere segreti alla configurazione.
È anche possibile configurare il SecretClientOptions usando il delegato Action<IAzureClientBuilder<SecretClient, SecretClientOptions>>
, il secondo parametro del metodo AddAzureKeyVaultSecrets
. Ad esempio, per impostare l'ID KeyClientOptions.DisableChallengeResourceVerification per identificare il client:
builder.AddAzureKeyVaultSecrets(
"secrets",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.DisableChallengeResourceVerification = true))
Opzioni di configurazione
Le opzioni configurabili seguenti vengono esposte tramite la classe AzureSecurityKeyVaultSettings:
Nome | Descrizione |
---|---|
VaultUri |
Un URI per il vault su cui opera il client. Viene visualizzato come "Nome DNS" nel portale di Azure. |
Credential |
La credenziale usata per eseguire l'autenticazione al Azure Key Vault. |
DisableHealthChecks |
Valore booleano che indica se la verifica dello stato del Key Vault è disabilitata o meno. |
DisableTracing |
Valore booleano che indica se la traccia OpenTelemetry è disabilitata o meno. |
Controlli di salute
Per impostazione predefinita, le integrazioni di .NET.NET Aspire abilitano controlli dello stato di salute per tutti i servizi. Per altre informazioni, vedere panoramica delle integrazioni .NET.NET Aspire.
L'integrazione .NET AspireAzure Key Vault include le verifiche dello stato di salute seguenti:
- Aggiunge il controllo di integrità
AzureKeyVaultSecretsHealthCheck
, che prova a connettersi ed eseguire query sul Key Vault - Si integra con l'endpoint HTTP
/health
, che specifica che tutti i controlli di integrità registrati devono essere passati affinché l'app sia considerata pronta ad accettare il traffico
Osservabilità e telemetria
.NET
.NET Aspire le integrazioni configurano automaticamente i log, il tracciamento e le metriche, talvolta noti come i pilastri dell'osservabilità. Per altre informazioni sull'osservabilità e la telemetria dell'integrazione, vedere panoramica delle integrazioni .NET.NET Aspire. A seconda del servizio di backup, alcune integrazioni possono supportare solo alcune di queste funzionalità. Ad esempio, alcune integrazioni supportano la registrazione e la traccia, ma non le metriche. Le funzionalità di telemetria possono essere disabilitate anche usando le tecniche presentate nella sezione Configurazione
Registrazione
L'integrazione .NET AspireAzure Key Vault usa le categorie di log seguenti:
Azure.Core
Azure.Identity
Tracciamento
L'integrazione .NET AspireAzure Key Vault genererà le attività di traccia seguenti usando OpenTelemetry:
- "Azure. Security.KeyVault.Secrets.SecretClient"
Metriche
L'integrazione .NET AspireAzure Key Vault attualmente non supporta le metriche per impostazione predefinita a causa di limitazioni con Azure SDK.