Rychlý start: Klientská knihovna certifikátů služby Azure Key Vault pro .NET

Začínáme s klientskou knihovnou certifikátů služby Azure Key Vault pro .NET Azure Key Vault je cloudová služba, která poskytuje zabezpečené úložiště certifikátů. Můžete bezpečně ukládat klíče, hesla, certifikáty a další tajné klíče. Trezory klíčů Azure můžete vytvářet a spravovat přes web Azure Portal. V tomto rychlém startu se naučíte vytvářet, načítat a odstraňovat certifikáty z trezoru klíčů Azure pomocí klientské knihovny .NET.

Prostředky klientské knihovny služby Key Vault:

Referenční dokumentace k | rozhraní API – Balíček zdrojového kódu | knihovny (NuGet)

Další informace o službě Key Vault a certifikátech najdete tady:

Požadavky

Tento rychlý start používá dotnet a Azure CLI.

Nastavení

V tomto rychlém startu se k ověření uživatele ve službách Azure používá knihovna identit Azure s Azure CLI. Vývojáři můžou také k ověřování volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.

Přihlášení k Azure

  1. Spusťte příkaz login.

    az login
    

    Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.

    V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.

  2. Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.

Udělení přístupu k trezoru klíčů

Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k hlavnímu názvu uživatele (UPN) pomocí příkazu Azure CLI az role assignment create.

az role assignment create --role "Key Vault Certificate Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Nahraďte <upn>, <subscription-id>, <resource-group-name> a <your-unique-keyvault-name> skutečnými hodnotami. Hlavní název uživatele (UPN) bude obvykle ve formátu e-mailové adresy (např username@domain.com. ).

Vytvoření nové konzolové aplikace .NET

  1. Spuštěním následujícího příkazu v příkazovém prostředí vytvořte projekt s názvem key-vault-console-app:

    dotnet new console --name key-vault-console-app
    
  2. Přejděte do nově vytvořeného adresáře key-vault-console-app a spuštěním následujícího příkazu sestavte projekt:

    dotnet build
    

    Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.

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

Instalace balíčků

Z příkazového prostředí nainstalujte klientskou knihovnu certifikátů služby Azure Key Vault pro .NET:

dotnet add package Azure.Security.KeyVault.Certificates

Pro účely tohoto rychlého startu budete také muset nainstalovat klientskou knihovnu Azure Identity:

dotnet add package Azure.Identity

Nastavení proměnných prostředí

Aplikace získá název trezoru klíčů z proměnné prostředí s názvem KEY_VAULT_NAME.

Windows

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

Windows PowerShell

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

macOS nebo Linux

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

Objektový model

Klientská knihovna certifikátů služby Azure Key Vault pro .NET umožňuje spravovat certifikáty. V části Příklady kódu se dozvíte, jak vytvořit klienta, nastavit certifikát, načíst certifikát a odstranit certifikát.

Příklady kódu

Přidání direktiv

Na začátek Program.cs přidejte následující direktivy:

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

Ověření a vytvoření klienta

Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití defaultAzureCredential třídy poskytované klientskou knihovnou Azure Identity je doporučený postup pro implementaci připojení bez hesla ke službám Azure ve vašem kódu. DefaultAzureCredential podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.

V tomto rychlém startu DefaultAzureCredential se ověří v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.

V tomto příkladu se název trezoru klíčů rozbalí na identifikátor URI trezoru klíčů ve formátu https://<your-key-vault-name>.vault.azure.net. Další informace o ověřování v trezoru klíčů najdete v příručce pro vývojáře.

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

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

Uložení certifikátu

V tomto příkladu můžete pro zjednodušení použít certifikát podepsaný svým držitelem s výchozími zásadami vystavování. Pro tuto úlohu použijte metodu StartCreateCertificateAsync . Parametry metody přijímají název certifikátu a zásady certifikátu.

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

Poznámka:

Pokud název certifikátu existuje, výše uvedený kód vytvoří novou verzi tohoto certifikátu.

Načtení certifikátu

Nyní můžete načíst dříve vytvořený certifikát pomocí metody GetCertificateAsync .

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

Odstranění certifikátu

Nakonec odstraníme a vymažeme certifikát z trezoru klíčů pomocí metod StartDeleteCertificateAsync a 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");

Ukázkový kód

Upravte konzolovou aplikaci .NET tak, aby pracovala se službou Key Vault, a to provedením následujících kroků:

  • Nahraďte kód v Program.cs následujícím kódem:

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

Testování a ověření

Spuštěním následujícího příkazu sestavte projekt.

dotnet build

Zobrazí se varianta následujícího výstupu:

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

Další kroky

V tomto rychlém startu jste vytvořili trezor klíčů, uložili jste certifikát a tento certifikát jste získali.

Další informace o službě Key Vault a její integraci s vašimi aplikacemi najdete v následujících článcích: