Szybki start: biblioteka klienta kluczy usługi Azure Key Vault dla platformy .NET

Rozpocznij pracę z biblioteką klienta kluczy usługi Azure Key Vault dla platformy .NET. Azure Key Vault to usługa w chmurze, która zapewnia bezpieczny magazyn kluczy kryptograficznych. Możesz bezpiecznie przechowywać klucze kryptograficzne, hasła, certyfikaty i 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ć klucze z usługi Azure Key Vault przy użyciu biblioteki klienta kluczy platformy .NET

Zasoby biblioteki klienta kluczy 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 kluczy, zobacz:

Wymagania wstępne

Ten przewodnik Szybki start korzysta z interfejsu dotnet wiersza polecenia platformy Azure

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

  1. Uruchom polecenie 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.

  2. Zaloguj się w przeglądarce przy użyciu poświadczeń swojego konta.

Udzielanie dostępu do magazynu kluczy

Aby udzielić aplikacji uprawnień do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę przy użyciu polecenia interfejsu wiersza polecenia platformy Azure az role assignment create.

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>"

Zastąp <ciąg app-id, <subscription-id>>, <resource-group-name i <your-unique-keyvault-name>> rzeczywistymi wartościami. <app-id> to identyfikator aplikacji (klienta) zarejestrowanej aplikacji w usłudze Azure AD.

Tworzenie nowej aplikacji konsolowej platformy .NET

  1. 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
    
  2. 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 kluczy usługi Azure Key Vault dla platformy .NET:

dotnet add package Azure.Security.KeyVault.Keys

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 kluczy usługi Azure Key Vault dla platformy .NET umożliwia zarządzanie kluczami. W sekcji Przykłady kodu pokazano, jak utworzyć klienta, ustawić klucz, pobrać klucz i usunąć klucz.

Przykłady kodu

Dodawanie dyrektyw

Dodaj następujące dyrektywy na początku Program.cs:

using System;
using Azure.Identity;
using Azure.Security.KeyVault.Keys;

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.

var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";

var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());

Zapisywanie klucza

W tym zadaniu użyj metody CreateKeyAsync . Parametry metody akceptują nazwę klucza i typ klucza.

var key = await client.CreateKeyAsync("myKey", KeyType.Rsa);

Uwaga

Jeśli nazwa klucza istnieje, ten kod utworzy nową wersję tego klucza.

Pobieranie klucza

Teraz możesz pobrać utworzony wcześniej klucz za pomocą metody GetKeyAsync .

var key = await client.GetKeyAsync("myKey");

Usuń klucz

Na koniec usuńmy i przeczyśćmy klucz z magazynu kluczy za pomocą metod StartDeleteKeyAsync i PurgeDeletedKeyAsync.

var operation = await client.StartDeleteKeyAsync("myKey");

// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();

var key = operation.Value;
await client.PurgeDeletedKeyAsync("myKey");

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.Keys;
    
    namespace key_vault_console_app
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                const string keyName = "myKey";
                var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
                var kvUri = $"https://{keyVaultName}.vault.azure.net";
    
                var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());
    
                Console.Write($"Creating a key in {keyVaultName} called '{keyName}' ...");
                var createdKey = await client.CreateKeyAsync(keyName, KeyType.Rsa);
                Console.WriteLine("done.");
    
                Console.WriteLine($"Retrieving your key from {keyVaultName}.");
                var key = await client.GetKeyAsync(keyName);
                Console.WriteLine($"Your key version is '{key.Value.Properties.Version}'.");
    
                Console.Write($"Deleting your key from {keyVaultName} ...");
                var deleteOperation = await client.StartDeleteKeyAsync(keyName);
                // You only need to wait for completion if you want to purge or recover the key.
                await deleteOperation.WaitForCompletionAsync();
                Console.WriteLine("done.");
    
                Console.Write($"Purging your key from {keyVaultName} ...");
                await client.PurgeDeletedKeyAsync(keyName);
                Console.WriteLine(" done.");
            }
        }
    }
    

Testowanie i weryfikowanie

  1. Wykonaj następujące polecenie, aby skompilować projekt

    dotnet build
    
  2. Wykonaj następujące polecenie, aby uruchomić aplikację.

    dotnet run
    
  3. Po wyświetleniu monitu wprowadź wartość wpisu tajnego. Na przykład mySecretPassword.

    Zostanie wyświetlona odmiana następujących danych wyjściowych:

    Creating a key in mykeyvault called 'myKey' ... done.
    Retrieving your key from mykeyvault.
    Your key version is '8532359bced24e4bb2525f2d2050738a'.
    Deleting your key from jl-kv ... done
    Purging your key from <your-unique-keyvault-name> ... done.   
    

Następne kroki

W tym przewodniku Szybki start utworzono magazyn kluczy, zapisano klucz i pobrano ten klucz.

Aby dowiedzieć się więcej o usłudze Key Vault i sposobie jej integracji z aplikacjami, zobacz następujące artykuły: