Snabbstart: Azure Key Vault för .NET (SDK v4)

Kom igång med Azure Key Vault klientbibliotek för .NET. Azure Key Vault är en molntjänst som tillhandahåller ett säkert arkiv för certifikat. 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 lär du dig att skapa, hämta och ta bort certifikat från ett Azure-nyckelvalv med hjälp av .NET-klientbiblioteket

Key Vault klientbiblioteksresurser:

API-referensdokumentation | Bibliotekskällkod | Paket (NuGet)

Mer information om Key Vault certifikat finns i:

Förutsättningar

Den här snabbstarten använder dotnet och Azure CLI

Installation

Den här snabbstarten använder Azure Identity Library med Azure CLI för att autentisera användare till Azure-tjänster. Utvecklare kan också använda Visual Studio eller Visual Studio Code för att autentisera sina anrop. Mer information finns i Autentisera klienten med Azure Identity-klientbiblioteket.

Logga in på Azure

  1. Kör kommandot login.

    az login
    

    Om CLI kan öppna din standardwebbläsare gör den det och läser in en Inloggningssida för Azure.

    Annars öppnar du en webbläsarsida på och https://aka.ms/devicelogin anger auktoriseringskoden som visas i terminalen.

  2. Logga in med dina autentiseringsuppgifter för kontot i webbläsaren.

Bevilja åtkomst till ditt nyckelvalv

Skapa en åtkomstprincip för ditt nyckelvalv som beviljar certifikatbehörighet till ditt användarkonto

az keyvault set-policy --name <your-key-vault-name> --upn user@domain.com --certificate-permissions delete get list create purge

Skapa en ny .NET-konsolapp

  1. Kör följande kommando i ett kommandogränssnitt för att skapa ett projekt med namnet key-vault-console-app :

    dotnet new console --name key-vault-console-app
    
  2. Ändra till den nyligen skapade katalogen key-vault-console-app och kör följande kommando för att skapa projektet:

    dotnet build
    

    Build-utdata får inte innehålla några varningar eller fel.

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

Installera paketen

Installera klientbiblioteket för Azure Key Vault .NET från kommandogränssnittet:

dotnet add package Azure.Security.KeyVault.Certificates

I den här snabbstarten måste du också installera Azure SDK-klientbiblioteket för Azure Identity:

dotnet add package Azure.Identity

Ange miljövariabler

Det här programmet använder nyckelvalvsnamnet som en miljövariabel med namnet KEY_VAULT_NAME .

Windows

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

Windows PowerShell

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

macOS eller Linux

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

Objektmodell

Med Azure Key Vault för .NET kan du hantera certifikat. Avsnittet Kodexempel visar hur du skapar en klient, anger ett certifikat, hämtar ett certifikat och tar bort ett certifikat.

Kodexempel

Lägga till direktiv

Lägg till följande -direktiv överst i Program.cs:

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

Autentisera och skapa en klient

I den här snabbstarten används den inloggade användaren för att autentisera till nyckelvalvet, vilket är den bästa metoden för lokal utveckling. För program som distribueras till Azure ska hanterad identitet tilldelas till App Service eller virtuell dator. Mer information finns i Översikt över hanterad identitet.

I exemplet nedan expanderas namnet på ditt nyckelvalv till nyckelvalvs-URI i formatet "https:// <your-key-vault-name> .vault.azure.net". Det här exemplet använder klassen "DefaultAzureCredential()" från Azure Identity Library, som gör att du kan använda samma kod i olika miljöer med olika alternativ för att tillhandahålla identitet. Mer information om hur du autentiserar till key vault finns i Utvecklarguide.

string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";

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

Spara ett certifikat

I det här exemplet kan du för enkelhetens skull använda själv signerade certifikat med standardutfärdandeprincip. För den här uppgiften använder du metoden StartCreateCertificateAsync. Metodens parametrar accepterar ett certifikatnamn och certifikatprincipen.

var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();

Anteckning

Om certifikatnamnet finns skapar koden ovan en ny version av certifikatet.

Hämta ett certifikat

Nu kan du hämta det tidigare skapade certifikatet med metoden GetCertificateAsync.

var certificate = await client.GetCertificateAsync("myCertificate");

Ta bort ett certifikat

Slutligen tar vi bort och rensar certifikatet från nyckelvalvet med metoderna StartDeleteCertificateAsync och PurgeDeletedCertificateAsync.

var operation = await client.StartDeleteCertificateAsync("myCertificate");

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

var certificate = operation.Value;
await client.PurgeDeletedCertificateAsync("myCertificate");

Exempelkod

Ändra .NET Core-konsolappen så att den interagerar 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.Certificates;
    
    namespace key_vault_console_app
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                const string certificateName = "myCertificate";
                var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
                var kvUri = $"https://{keyVaultName}.vault.azure.net";
    
                var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());
    
                Console.Write($"Creating a certificate in {keyVaultName} called '{certificateName}' ...");
                CertificateOperation operation = await client.StartCreateCertificateAsync(certificateName, CertificatePolicy.Default);
                await operation.WaitForCompletionAsync();
                Console.WriteLine(" done.");
    
                Console.WriteLine($"Retrieving your certificate from {keyVaultName}.");
                var certificate = await client.GetCertificateAsync(certificateName);
                Console.WriteLine($"Your certificate version is '{certificate.Value.Properties.Version}'.");
    
                Console.Write($"Deleting your certificate from {keyVaultName} ...");
                DeleteCertificateOperation deleteOperation = await client.StartDeleteCertificateAsync(certificateName);
                // You only need to wait for completion if you want to purge or recover the certificate.
                await deleteOperation.WaitForCompletionAsync();
                Console.WriteLine(" done.");
    
                Console.Write($"Purging your certificate from {keyVaultName} ...");
                await client.PurgeDeletedCertificateAsync(certificateName);
                Console.WriteLine(" done.");
            }
        }
    }
    

Testa och verifiera

Kör följande kommando för att skapa projektet

dotnet build

En variant av följande utdata visas:

Creating a certificate in mykeyvault called 'myCertificate' ... done.
Retrieving your certificate from mykeyvault.
Your certificate version is '8532359bced24e4bb2525f2d2050738a'.
Deleting your certificate from mykeyvault ... done
Purging your certificate from mykeyvault ... done

Nästa steg

I den här snabbstarten skapade du ett nyckelvalv, lagrade ett certifikat och hämtade certifikatet.

Mer information om Key Vault och hur du integrerar det med dina appar finns i följande artiklar: