integração .NET AspireAzure Key Vault
Neste artigo, você aprenderá a usar a integração .NET AspireAzure Key Vault. A biblioteca de integração Aspire.Azure.Key.Vault
é usada para registrar um SecretClient no contêiner de DI para se conectar ao Azure Key Vault. Ele também permite verificações de integridade correspondentes, registro em log e telemetria.
Começar
Para começar a usar a integração .NET AspireAzure Key Vault, instale o pacote NuGet 📦Aspire.Azure. Security.KeyVault no projeto que consome o client, ou seja, o projeto do aplicativo que usa o Azure Key Vaultclient.
dotnet add package Aspire.Azure.Security.KeyVault
Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em aplicativos .NET.
Exemplo de uso
As seções a seguir descrevem vários usos de exemplo.
Adicionar segredos à configuração
No arquivo Program.cs do projeto que consome client, chame a extensão AddAzureKeyVaultSecrets para adicionar os segredos no Azure Key Vault à Configuração do aplicativo. O método usa um parâmetro de nome de conexão.
builder.Configuration.AddAzureKeyVaultSecrets("secrets");
Em seguida, você pode recuperar um segredo por meio de APIs de IConfiguration normais. Por exemplo, para recuperar um segredo de um serviço:
public class ExampleService(IConfiguration configuration)
{
string secretValue = configuration["secretKey"];
// Use secretValue ...
}
Usar SecretClient
Como alternativa, você pode usar o SecretClient
para recuperar os segredos sob demanda. No arquivo Program.cs do seu projeto de consumo de client, chame a extensão AddAzureKeyVaultClient para registrar um SecretClient
para uso por meio do contêiner de injeção de dependência.
builder.AddAzureKeyVaultClient("secrets");
Em seguida, você pode recuperar a instância de SecretClient usando a injeção de dependência. Por exemplo, para recuperar o client de um serviço:
public class ExampleService(SecretClient client)
{
// Use client...
}
Uso do host do aplicativo
Para adicionar Azure Key Vault suporte de hospedagem ao seu IDistributedApplicationBuilder, instale o 📦Aspire.Hosting.Azure.KeyVault pacote NuGet no projeto de host do app .
dotnet add package Aspire.Hosting.Azure.KeyVault
No projeto de host do aplicativo, registre a integração Azure Key Vault e consuma o serviço usando os seguintes métodos:
var builder = DistributedApplication.CreateBuilder(args);
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
O código anterior adiciona condicionalmente o recurso Azure Key Vault ao projeto com base no contexto de execução. Se o host do aplicativo estiver em execução no modo de publicação, o recurso será adicionado caso contrário, a cadeia de conexão a um recurso existente será adicionada.
Configuração
A integração .NET AspireAzure Key Vault fornece várias opções para configurar o SecretClient
com base nos requisitos e convenções do seu projeto.
Usar provedores de configuração
A integração .NET AspireAzure Key Vault dá suporte a Microsoft.Extensions.Configuration. Ele carrega o AzureSecurityKeyVaultSettings de appsettings.json ou de outros arquivos de configuração usando a chave Aspire:Azure:Security:KeyVault
.
{
"Aspire": {
"Azure": {
"Security": {
"KeyVault": {
"VaultUri": "YOUR_VAULT_URI",
"DisableHealthChecks": false,
"DisableTracing": true,
"ClientOptions": {
"DisableChallengeResourceVerification": true
}
}
}
}
}
}
Se você tiver configurado suas configurações na seção Aspire:Azure:Security:KeyVault
do arquivo appsettings.json, basta chamar o método AddAzureKeyVaultSecrets
sem passar parâmetros.
Usar delegados embutidos
Você também pode passar o delegado Action<AzureSecurityKeyVaultSettings>
para configurar algumas ou todas as opções diretamente, por exemplo, para definir o VaultUri
:
builder.AddAzureKeyVaultSecrets(
"secrets",
static settings => settings.VaultUri = new Uri("YOUR_VAULTURI"));
Dica
O nome da API AddAzureKeyVaultSecrets
causou um pouco de confusão. O método é usado para configurar o SecretClient
e não para adicionar segredos à configuração.
Você também pode configurar o SecretClientOptions usando o delegado Action<IAzureClientBuilder<SecretClient, SecretClientOptions>>
, o segundo parâmetro do método AddAzureKeyVaultSecrets
. Por exemplo, para definir a ID do KeyClientOptions.DisableChallengeResourceVerification para identificar o client:
builder.AddAzureKeyVaultSecrets(
"secrets",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.DisableChallengeResourceVerification = true))
Opções de configuração
As seguintes opções configuráveis são expostas por meio da classe AzureSecurityKeyVaultSettings:
Nome | Descrição |
---|---|
VaultUri |
Um URI para o cofre no qual o client opera. Aparece como "Nome DNS" no portal Azure. |
Credential |
A credencial usada para autenticar no Azure Key Vault. |
DisableHealthChecks |
Um valor booliano que indica se a verificação de integridade do Key Vault está desabilitada ou não. |
DisableTracing |
Um valor booliano que indica se o rastreamento de OpenTelemetry está desabilitado ou não. |
Verificações de saúde
Por padrão, as integrações .NET.NET Aspire habilitam verificações de saúde para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral de integrações.
A integração .NET AspireAzure Key Vault inclui as seguintes verificações de integridade:
- Adiciona a verificação de integridade
AzureKeyVaultSecretsHealthCheck
, que tenta se conectar e consultar o Key Vault - Integra-se ao endpoint HTTP
/health
, que especifica que todas as verificações de integridade registradas devem ser aprovadas para que o aplicativo esteja pronto para aceitar tráfego.
Observabilidade e telemetria
.NET .NET Aspire integrações configuram automaticamente ajustes de log, rastreamento e métricas, que às vezes são conhecidos como os pilares da observabilidade. Para obter mais informações sobre a observabilidade e a telemetria de integração, consulte .NET.NET Aspire visão geral das integrações. Dependendo do serviço de backup, algumas integrações só podem dar suporte a alguns desses recursos. Por exemplo, algumas integrações dão suporte a registro em log e rastreamento, mas não a métricas. Os recursos de telemetria também podem ser desabilitados usando as técnicas apresentadas na seção Configuration.
Registro
A integração .NET AspireAzure Key Vault usa as seguintes categorias de log:
Azure.Core
Azure.Identity
Rastreamento
A integração .NET AspireAzure Key Vault emitirá as seguintes atividades de rastreamento usando OpenTelemetry:
- "Azure.Security.KeyVault.Secrets.SecretClient"
Métricas
A integração .NET AspireAzure Key Vault atualmente não dá suporte a métricas por padrão devido a limitações com o SDK de Azure.