Este início rápido está usando a biblioteca de identidades do Azure com o Azure PowerShell para autenticar o usuário nos Serviços do Azure. Os desenvolvedores também podem usar o Visual Studio ou o Visual Studio Code para autenticar as chamadas. Para saber mais, confira Autenticar o cliente na biblioteca de clientes do Azure Idendity.
Entrar no Azure
Execute o comando Connect-AzAccount
.
Connect-AzAccount
Se o PowerShell puder abrir o navegador padrão, ele o fará e carregará uma página de entrada do Azure.
Caso contrário, abra uma página de navegador em https://aka.ms/devicelogin e insira o código de autorização exibido no terminal.
Entre com suas credenciais de conta no navegador.
Permitir acesso ao cofre de chaves
Para conceder permissões de aplicativo ao cofre de chaves por meio do controle de acesso baseado em função (RBAC), atribua uma função usando o comando az role assignment create da CLI do Azure.
az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Para conceder permissões de aplicativo ao cofre de chaves por meio do Controle de Acesso Baseado em Função (RBAC), atribua uma função usando o cmdlet New-AzRoleAssignment do Azure PowerShell.
New-AzRoleAssignment -ObjectId "<app-id>" -RoleDefinitionName "Key Vault Secrets User" -Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Substitua <app-id>
, <subscription-id>
, <resource-group-name>
e <your-unique-keyvault-name>
pelos valores reais. <app-id>
é a ID do Aplicativo (cliente) do aplicativo registrado no Microsoft Entra.
Criar um novo aplicativo de console do .NET
Em um shell de comando, execute o seguinte comando para criar um projeto chamado key-vault-console-app
:
dotnet new console --name key-vault-console-app
Altere para o diretório key-vault-console-app recém-criado e execute o seguinte comando para compilar o projeto:
dotnet build
A saída de compilação não deve conter nenhum aviso ou erro.
Build succeeded.
0 Warning(s)
0 Error(s)
Instalar os pacotes
No shell de comando, instale a biblioteca de clientes do segredo do Azure Key Vault para .NET:
dotnet add package Azure.Security.KeyVault.Secrets
Para este guia de início rápido, você também precisará instalar a biblioteca de clientes de identidade do Azure:
dotnet add package Azure.Identity
Definir variáveis de ambiente
Este aplicativo usa o nome do cofre de chaves como uma variável de ambiente chamada KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS ou Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Modelo de objeto
A biblioteca de clientes do segredo do Azure Key Vault para .NET permite que você gerencie segredos. A seção Exemplos de código mostra como criar um cliente, bem como definir, recuperar e excluir um segredo.
Exemplos de código
Adicionar diretivas
Adicione as seguintes diretivas à parte superior de Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Autenticar e criar um cliente
As solicitações do aplicativo para a maioria dos serviços do Azure precisam ser autorizadas. O uso da classe DefaultAzureCredential fornecida pela biblioteca de clientes da Identidade do Azure é a abordagem recomendada para implementar conexões sem senha com os serviços do Azure no código. DefaultAzureCredential
dá suporte a vários métodos de autenticação e determina quais métodos devem ser usados no runtime. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (local versus produção) sem implementar código específico do ambiente.
Neste guia de início rápido, DefaultAzureCredential
se autenticará no cofre de chaves usando as credenciais do usuário de desenvolvimento local conectado à CLI do Azure. Quando o aplicativo é implantado no Azure, o mesmo código DefaultAzureCredential
pode descobrir e usar automaticamente uma identidade gerenciada atribuída a um Serviço de Aplicativo, máquina virtual ou outros serviços. Para obter mais informações, confira Visão geral da Identidade Gerenciada.
Neste exemplo, o nome do cofre de chaves é expandido para o URI do cofre de chaves, no formato https://<your-key-vault-name>.vault.azure.net
. Para obter mais informações sobre como se autenticar no cofre de chaves, confira Guia do Desenvolvedor.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Salvar um segredo
Agora que o aplicativo de console foi autenticado, adicione um segredo ao cofre de chaves. Para essa tarefa, use o método SetSecretAsync.
O primeiro parâmetro do método aceita um nome para o segredo. Nesta amostra, a variável secretName
armazena a cadeia de caracteres “mySecret”.
O segundo parâmetro do método aceita um valor para o segredo. Nesta amostra, o segredo é inserido pelo usuário por meio da linha de comando e armazenado na variável secretValue
.
await client.SetSecretAsync(secretName, secretValue);
Observação
Se o nome do segredo existir, o código criará uma versão desse segredo.
Recuperar um segredo
Agora, você pode recuperar o valor definido anteriormente com o método GetSecretAsync.
var secret = await client.GetSecretAsync(secretName);
Agora, seu segredo está salvo como secret.Value
.
Excluir um segredo
Por fim, vamos excluir o segredo do cofre de chaves com os métodos StartDeleteSecretAsync e PurgeDeletedSecretAsync.
var operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();
await client.PurgeDeletedSecretAsync(secretName);
Código de exemplo
Modifique o aplicativo de console .NET Core para interagir com o Key Vault concluindo as seguintes etapas:
Substitua o código em Program.cs pelo código a seguir:
using System;
using System.Threading.Tasks;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
namespace key_vault_console_app
{
class Program
{
static async Task Main(string[] args)
{
const string secretName = "mySecret";
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Console.Write("Input the value of your secret > ");
var secretValue = Console.ReadLine();
Console.Write($"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...");
await client.SetSecretAsync(secretName, secretValue);
Console.WriteLine(" done.");
Console.WriteLine("Forgetting your secret.");
secretValue = string.Empty;
Console.WriteLine($"Your secret is '{secretValue}'.");
Console.WriteLine($"Retrieving your secret from {keyVaultName}.");
var secret = await client.GetSecretAsync(secretName);
Console.WriteLine($"Your secret is '{secret.Value.Value}'.");
Console.Write($"Deleting your secret from {keyVaultName} ...");
DeleteSecretOperation operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the secret.
await operation.WaitForCompletionAsync();
Console.WriteLine(" done.");
Console.Write($"Purging your secret from {keyVaultName} ...");
await client.PurgeDeletedSecretAsync(secretName);
Console.WriteLine(" done.");
}
}
}
Testar e verificar
Execute o comando a seguir para executar o aplicativo.
dotnet run
Quando solicitado, insira um valor secreto. Por exemplo, mySecretPassword.
Uma variação do seguinte resultado é exibida:
Input the value of your secret > mySecretPassword
Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <your-unique-keyvault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <your-unique-keyvault-name> ... done.
Purging your secret from <your-unique-keyvault-name> ... done.
Próximas etapas
Para saber mais sobre o Key Vault e como integrá-lo aos seus aplicativos, confira os seguintes artigos: