Quickstart: Azure Key Vault-sleutelclientbibliotheek voor .NET

Ga aan de slag met de Azure Key Vault-clientbibliotheek voor sleutels voor .NET. Azure Key Vault is een cloudservice die werkt als een beveiligd archief voor cryptografische sleutels. U kunt veilig cryptografische sleutels, wachtwoorden, certificaten en andere geheime informatie opslaan. Azure-sleutelkluizen kunnen worden gemaakt en beheerd via Azure Portal. In deze quickstart krijt u meer informatie over het maken, ophalen en verwijderen van sleutels van een Azure-sleutelkluis met behulp van de clientbibliotheek voor sleutels voor .NET

Resources voor de Key Vault-clientbibliotheek voor sleutels:

API-referentiedocumentatie | Broncode bibliotheek | Pakket (NuGet)

Zie voor meer informatie over Key Vault en sleutels:

Vereisten

Deze quickstart maakt gebruik van dotnet en Azure CLI

Instellingen

Deze quickstart maakt gebruik van de Azure Identity-bibliotheek met Azure CLI om de gebruiker te verifiëren bij Azure-services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun oproepen te verifiëren: zie De client verifiëren met de Azure Identity-clientbibliotheek (Engelstalig) voor meer informatie.

Aanmelden bij Azure

  1. Voer de opdracht login uit.

    az login
    

    Als de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.

    Als dat niet het geval is, opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in de terminal.

  2. Meldt u zich in de browser aan met uw accountreferenties.

Toegang verlenen tot uw sleutelkluis

Als u uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure CLI-opdracht 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>"

Vervang <app-id>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. <app-id> is de toepassings-id (client) van uw geregistreerde toepassing in Azure AD.

Nieuwe .NET-console-app maken

  1. Voer in een opdrachtshell de volgende opdracht uit om een project te maken met de naam key-vault-console-app:

    dotnet new console --name key-vault-console-app
    
  2. Ga naar de map van zojuist gemaakte key-vault-console-app en voer de volgende opdracht uit om het project te bouwen:

    dotnet build
    

    De build-uitvoer mag geen waarschuwingen of fouten bevatten.

    Build succeeded.
     0 Warning(s)
     0 Error(s)
    

De pakketten installeren

Installeer vanuit de opdrachtshell de Azure Key Vault-clientbibliotheek voor sleutels voor .NET:

dotnet add package Azure.Security.KeyVault.Keys

Voor deze quickstart moet u ook de Azure Identity-clientbibliotheek installeren:

dotnet add package Azure.Identity

Omgevingsvariabelen instellen

In deze applicatie wordt de naam van de sleutelkluis gebruikt als een omgevingsvariabele met de naam KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS of Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Objectmodel

Met de Azure Key Vault-clientbibliotheek voor sleutels voor .NET kunt u sleutels beheren. In de sectie Codevoorbeelden ziet u hoe u een client maakt, een sleutel instelt, een sleutel ophaalt en een sleutel verwijdert.

Codevoorbeelden

Voeg -instructies toe

Voeg de volgende instructies toe aan het begin van Program.cs:

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

Een client verifiëren en maken

Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Het gebruik van de DefaultAzureCredential-klasse die wordt geleverd door de Azure Identity-clientbibliotheek is de aanbevolen methode voor het implementeren van verbindingen zonder wachtwoord met Azure-services in uw code. DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.

In deze quickstart DefaultAzureCredential verifieert u zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing in Azure wordt geïmplementeerd, kan dezelfde DefaultAzureCredential code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, virtuele machine of andere services. Zie Overzicht van beheerde identiteiten voor meer informatie.

In dit voorbeeld wordt de naam van uw sleutelkluis uitgebreid naar de sleutelkluis-URI, in de indeling https://<your-key-vault-name>.vault.azure.net. Zie Gids voor ontwikkelaars voor meer informatie over het verifiëren van een sleutelkluis.

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

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

Een sleutel opslaan

Gebruik voor deze taak de methode CreateKeyAsync. De parameters van de methode accepteren een sleutelnaam en het sleuteltype.

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

Notitie

Als de sleutelnaam bestaat, wordt met deze code een nieuwe versie van die sleutel gemaakt.

Een sleutel ophalen

U kunt nu de eerder gemaakte sleutel ophalen met de methode GetKeyAsync.

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

Een sleutel verwijderen

Ten slotte kunt u de sleutel uit uw sleutelkluis verwijderen en leegmaken met de methoden StartDeleteKeyAsync en 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");

Voorbeeldcode

Wijzig de .NET-console-app om te communiceren met Key Vault door de volgende stappen uit te voeren:

  • Vervang de code in Program.cs door de volgende code:

    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.");
            }
        }
    }
    

Testen en verifiëren

  1. Voer de volgende opdracht uit om het project te bouwen

    dotnet build
    
  2. Voer de volgende opdracht uit om de app uit te voeren.

    dotnet run
    
  3. Voer een geheime waarde in wanneer u hierom wordt gevraagd. Bijvoorbeeld mySecretPassword (mijn geheime wachtwoord).

    Er verschijnt een variant van de volgende uitvoer:

    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.   
    

Volgende stappen

In deze quickstart hebt u een sleutelkluis gemaakt, een sleutel opgeslagen en die sleutel opgehaald.

Zie de volgende artikelen voor meer informatie over Key Vault en hoe u Key Vault integreert met uw apps: