Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kom igång med Det hemliga Klientbiblioteket för Azure Key Vault för .NET. Azure Key Vault är en molnbaserad tjänst som tillhandahåller en säker lagring för konfidentiella data. Du kan på ett säkert sätt lagra nycklar, lösenord, certifikat och andra hemligheter. Du kan skapa och hantera Azure-nyckelvalv via Azure Portal. I den här snabbstarten får du lära dig hur du skapar, hämtar och tar bort hemligheter från ett Azure-nyckelvalv med hjälp av .NET-klientbiblioteket
Key Vault-klientbiblioteksresurser:
API-referensdokumentation | Bibliotekets källkod | Paket (NuGet)
Mer information om Key Vault och hemligheter finns i:
- Översikt över Key Vault
Översikt över hemligheter .
Förutsättningar
- En Azure-prenumeration – skapa en kostnadsfritt
- .NET 6 SDK eller senare
- Azure CLI eller Azure PowerShell
- Ett Key Vault – du kan skapa ett med hjälp av Azure Portal, Azure CLI eller Azure PowerShell
Den här introduktionen använder dotnet och Azure CLI eller Azure PowerShell.
Ställ in
- Azure CLI
- Azure PowerShell
Den här snabbstarten använder Azure Identity-biblioteket med Azure CLI för att autentisera användare till Azure Services. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. För mer information, se Autentisera klienten med Azure Identity-klientbiblioteket.
Logga in på Azure
Kör kommandot
az login.az loginOm CLI kan öppna din standardwebbläsare kommer den att göra det och läsa in en Azure-inloggningssida.
Annars öppnar du en webbläsarsida på https://aka.ms/devicelogin och anger auktoriseringskoden som visas i terminalen.
Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.
Bevilja åtkomst till ditt nyckelvalv
Om du vill få behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC), tilldelar du en roll till din "User Principal Name" (UPN) med hjälp av Azure CLI-kommandot az role assignment create.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Ersätt <upn>, <subscription-id>och <vault-name> med dina faktiska värden. Om du använde ett annat resursgruppsnamn ersätter du även "myResourceGroup". Ditt UPN är vanligtvis i formatet för en e-postadress (t.ex. username@domain.com).
Skapa ny .NET-konsolapp
I ett kommandoskal kör du följande kommando för att skapa ett projekt med namnet
key-vault-console-app:dotnet new console --name key-vault-console-appByt till den nyligen skapade key-vault-console-app katalogen och kör följande kommando för att bygga projektet:
dotnet buildKompileringsutdata får inte innehålla några varningar eller fel.
Build succeeded. 0 Warning(s) 0 Error(s)
Installera paketen
Från kommandogränssnittet installerar du det hemliga Klientbiblioteket för Azure Key Vault för .NET:
dotnet add package Azure.Security.KeyVault.Secrets
För den här snabbstarten måste du också installera Azure Identity-klientbiblioteket:
dotnet add package Azure.Identity
Ange miljövariabler
Den här applikationen använder nyckelvalvnamnet som en miljövariabel kallad KEY_VAULT_NAME.
Windows
set KEY_VAULT_NAME=<vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<vault-name>"
macOS eller Linux
export KEY_VAULT_NAME=<vault-name>
Objektmodell
Med azure Key Vault-klientbiblioteket för .NET kan du hantera hemligheter. Avsnittet Kodexempel visar hur du skapar en klient, anger en hemlighet, hämtar en hemlighet och tar bort en hemlighet.
Kodexempel
Lägga till direktiv
Lägg till följande direktiv överst i Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Autentisera och skapa en klient
Programbegäranden till de flesta Azure-tjänster måste auktoriseras. Att använda DefaultAzureCredential-klassen som tillhandahålls av Azure Identity-klientbiblioteket är den rekommenderade metoden för att implementera autentisering utan lösenord till Azure-tjänster i din kod.
DefaultAzureCredential stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod.
I den här snabbstarten autentiserar DefaultAzureCredential till nyckelvalvet med autentiseringsuppgifterna för den lokala utvecklingsanvändaren som är inloggad i Azure CLI. När applikationen distribueras till Azure kan samma DefaultAzureCredential kod automatiskt identifiera och använda en hanterad identitet tilldelad till en App Service, virtuell dator eller andra tjänster. Mer information finns i Översikt över hanterad identitet.
I det här exemplet expanderas namnet på ditt nyckelvalv till nyckelvalvets URI i formatet https://<vault-name>.vault.azure.net. För mer information om autentisering till nyckelvalv, se Utvecklarguiden.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Spara en hemlighet
Nu när konsolappen har autentiserats lägger du till en hemlighet i nyckelvalvet. För den här uppgiften använder du metoden SetSecretAsync.
Metodens första parameter accepterar ett namn på hemligheten. I det här exemplet lagrar variabeln secretName strängen "mySecret".
Metodens andra parameter accepterar ett värde för hemligheten. I det här exemplet matas hemligheten in av användaren via kommandoraden och lagras i variabeln secretValue.
await client.SetSecretAsync(secretName, secretValue);
Kommentar
Om det finns ett hemligt namn skapar koden en ny version av hemligheten.
Hämta en hemlighet
Nu kan du hämta det tidigare angivna värdet med metoden GetSecretAsync.
var secret = await client.GetSecretAsync(secretName);
Din hemlighet sparas nu som secret.Value.
Ta bort en hemlighet
Slutligen tar vi bort hemligheten från ditt nyckelvalv med metoderna StartDeleteSecretAsync och 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);
Exempelkod
Ändra .NET-konsolappen så att den interagerar med Key Vault genom att utföra följande steg:
Ersätt koden i Program.cs med följande kod:
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."); } } }
Testa och verifiera
Kör följande kommando för att köra appen.
dotnet runNär du uppmanas till det anger du ett hemligt värde. Till exempel mySecretPassword.
En variant av följande utdata visas:
Input the value of your secret > mySecretPassword
Creating a secret in <vault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <vault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <vault-name> ... done.
Purging your secret from <vault-name> ... done.
Nästa steg
Mer information om Key Vault och hur du integrerar det med dina appar finns i följande artiklar:
- Läs en Översikt över Azure Key Vault
- Utforska en självstudiekurs om hur man kommer åt Key Vault från en App Service-applikation
- Se en självstudiekurs om att använda Key Vault från en virtuell maskin
- Se utvecklarguiden för Azure Key Vault
- Granska översikt av säkerheten i Key Vault
- Granska säkerhetsbästa praxis för hemligheter