Szybki start: biblioteka klienta wpisu tajnego usługi Azure Key Vault dla platformy .NET
Rozpocznij pracę z biblioteką klienta wpisu tajnego usługi Azure Key Vault dla platformy .NET. Azure Key Vault to usługa w chmurze, która zapewnia bezpieczny magazyn wpisów tajnych. Możesz bezpiecznie przechowywać klucze, hasła, certyfikaty oraz inne wpisy tajne. Magazyny kluczy platformy Azure można tworzyć oraz nimi zarządzać za pośrednictwem witryny Azure Portal. Z tego przewodnika Szybki start dowiesz się, jak tworzyć, pobierać i usuwać wpisy tajne z usługi Azure Key Vault przy użyciu biblioteki klienta platformy .NET
Zasoby biblioteki klienta usługi Key Vault:
Dokumentacja interfejsu API — | pakiet kodu | źródłowego biblioteki (NuGet)
Aby uzyskać więcej informacji na temat usługi Key Vault i wpisów tajnych, zobacz:
- Omówienie usługi Key Vault
- Omówienie wpisów tajnych.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie subskrypcję platformy Azure
- Zestaw .NET 6 SDK lub nowszy
- Interfejs wiersza polecenia platformy Azure lub program Azure PowerShell
- Magazyn kluczy — można go utworzyć przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell
Ten przewodnik Szybki start korzysta z interfejsu dotnet
wiersza polecenia platformy Azure lub programu Azure PowerShell.
Ustawienia
Ten przewodnik Szybki start używa biblioteki tożsamości platformy Azure z interfejsem wiersza polecenia platformy Azure do uwierzytelniania użytkownika w usługach platformy Azure. Deweloperzy mogą również używać programu Visual Studio lub Visual Studio Code do uwierzytelniania wywołań. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie klienta za pomocą biblioteki klienta tożsamości platformy Azure.
Logowanie się do platformy Azure
Uruchom polecenie
az login
.az login
Jeśli interfejs wiersza polecenia może otworzyć domyślną przeglądarkę, zrobi to i załaduje stronę logowania platformy Azure.
W przeciwnym razie otwórz stronę przeglądarki pod https://aka.ms/devicelogin adresem i wprowadź kod autoryzacji wyświetlany w terminalu.
Zaloguj się w przeglądarce przy użyciu poświadczeń swojego konta.
Udzielanie dostępu do magazynu kluczy
Aby uzyskać uprawnienia do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę do głównej nazwy użytkownika (UPN) przy użyciu polecenia az role assignment create interfejsu wiersza polecenia platformy Azure.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Zastąp <wartości upn>, <subscription-id>, <resource-group-name> i <your-unique-keyvault-name> rzeczywistymi wartościami. Nazwa UPN będzie zwykle mieć format adresu e-mail (np. username@domain.com).
Tworzenie nowej aplikacji konsolowej platformy .NET
W powłoce poleceń uruchom następujące polecenie, aby utworzyć projekt o nazwie
key-vault-console-app
:dotnet new console --name key-vault-console-app
Przejdź do nowo utworzonego katalogu key-vault-console-app i uruchom następujące polecenie, aby skompilować projekt:
dotnet build
Dane wyjściowe kompilacji nie powinny zawierać żadnych ostrzeżeń ani błędów.
Build succeeded. 0 Warning(s) 0 Error(s)
Instalowanie pakietów
W powłoce poleceń zainstaluj bibliotekę klienta wpisu tajnego usługi Azure Key Vault dla platformy .NET:
dotnet add package Azure.Security.KeyVault.Secrets
W tym przewodniku Szybki start należy również zainstalować bibliotekę klienta tożsamości platformy Azure:
dotnet add package Azure.Identity
Ustawianie zmiennych środowiskowych
Ta aplikacja używa nazwy magazynu kluczy jako zmiennej środowiskowej o nazwie KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS lub Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Model obiektów
Biblioteka klienta wpisu tajnego usługi Azure Key Vault dla platformy .NET umożliwia zarządzanie wpisami tajnymi. W sekcji Przykłady kodu pokazano, jak utworzyć klienta, ustawić wpis tajny, pobrać wpis tajny i usunąć wpis tajny.
Przykłady kodu
Dodawanie dyrektyw
Dodaj następujące dyrektywy na początku Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Uwierzytelnianie i tworzenie klienta
Żądania aplikacji do większości usług platformy Azure muszą być autoryzowane. Użycie klasy DefaultAzureCredential udostępnionej przez bibliotekę klienta tożsamości platformy Azure jest zalecanym podejściem do implementowania połączeń bez hasła z usługami platformy Azure w kodzie. DefaultAzureCredential
obsługuje wiele metod uwierzytelniania i określa, która metoda powinna być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (lokalnych i produkcyjnych) bez implementowania kodu specyficznego dla środowiska.
W tym przewodniku Szybki start DefaultAzureCredential
uwierzytelnia się w magazynie kluczy przy użyciu poświadczeń lokalnego użytkownika dewelopera zalogowanego do interfejsu wiersza polecenia platformy Azure. Po wdrożeniu aplikacji na platformie Azure ten sam DefaultAzureCredential
kod może automatycznie odnajdywać i używać tożsamości zarządzanej przypisanej do usługi App Service, maszyny wirtualnej lub innych usług. Aby uzyskać więcej informacji, zobacz Omówienie tożsamości zarządzanej.
W tym przykładzie nazwa magazynu kluczy jest rozszerzana na identyfikator URI magazynu kluczy w formacie https://<your-key-vault-name>.vault.azure.net
. Aby uzyskać więcej informacji na temat uwierzytelniania w magazynie kluczy, zobacz Przewodnik dewelopera.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Zapisywanie wpisu tajnego
Po uwierzytelnieniu aplikacji konsolowej dodaj wpis tajny do magazynu kluczy. W tym zadaniu użyj metody SetSecretAsync .
Pierwszy parametr metody akceptuje nazwę wpisu tajnego. W tym przykładzie zmienna secretName
przechowuje ciąg "mySecret".
Drugi parametr metody akceptuje wartość wpisu tajnego. W tym przykładzie wpis tajny jest wprowadzany przez użytkownika za pośrednictwem wiersza polecenia i przechowywany w zmiennej secretValue
.
await client.SetSecretAsync(secretName, secretValue);
Uwaga
Jeśli istnieje nazwa wpisu tajnego, kod utworzy nową wersję tego wpisu tajnego.
Pobieranie wpisu tajnego
Teraz możesz pobrać wcześniej ustawioną wartość za pomocą metody GetSecretAsync .
var secret = await client.GetSecretAsync(secretName);
Wpis tajny jest teraz zapisywany jako secret.Value
.
Usuń klucz tajny
Na koniec usuńmy wpis tajny z magazynu kluczy przy użyciu metod StartDeleteSecretAsync i 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);
Przykładowy kod
Zmodyfikuj aplikację konsolową platformy .NET w celu interakcji z usługą Key Vault, wykonując następujące kroki:
Zastąp kod w Program.cs następującym kodem:
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."); } } }
Testowanie i weryfikowanie
Wykonaj następujące polecenie, aby uruchomić aplikację.
dotnet run
Po wyświetleniu monitu wprowadź wartość wpisu tajnego. Na przykład mySecretPassword.
Zostanie wyświetlona odmiana następujących danych wyjściowych:
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.
Następne kroki
Aby dowiedzieć się więcej o usłudze Key Vault i sposobie jej integracji z aplikacjami, zobacz następujące artykuły:
- Przeczytaj omówienie usługi Azure Key Vault
- Samouczek dotyczący uzyskiwania dostępu do usługi Key Vault z poziomu aplikacji usługi App Service
- Zobacz samouczek uzyskiwania dostępu do usługi Key Vault z poziomu maszyny wirtualnej
- Zobacz przewodnik dewelopera usługi Azure Key Vault
- Przegląd zabezpieczeń usługi Key Vault