Kurz: Použití Azure Key Vault s virtuálním počítačem v .NET

Azure Key Vault vám pomůže chránit tajné kódy, jako jsou klíče rozhraní API, připojovací řetězce databáze, které potřebujete pro přístup k aplikacím, službám a prostředkům IT.

V tomto kurzu se dozvíte, jak získat konzolovou aplikaci pro čtení informací z Azure Key Vault. Aplikace použije spravovanou identitu virtuálního počítače k ověření v Key Vault.

V tomto kurzu získáte informace o následujících postupech:

  • Vytvořte skupinu prostředků.
  • Vytvořte trezor klíčů.
  • Přidejte tajemství do klíčového trezoru.
  • Načtení tajného údaje z úložiště klíčů
  • Vytvořte Azure virtuální počítač.
  • Povolení spravované identity pro virtuální počítač
  • Přiřaďte oprávnění identitě virtuálního počítače.

Než začnete, přečtěte si základní koncepty Key Vault.

Pokud nemáte předplatné Azure, vytvořte si účet free.

Požadavky

Pro Windows, Mac a Linux:

Vytváření prostředků a přiřazování oprávnění

Než začnete psát kód, musíte vytvořit nějaké prostředky, vložit tajný kód do trezoru klíčů a přiřadit oprávnění.

Přihlášení k Azure

Pokud se chcete přihlásit k Azure pomocí následujícího příkazu:

az login

Vytvořte skupinu prostředků a trezor klíčů

V tomto rychlém startu se používá předem vytvořený trezor klíčů Azure. Pro vytvoření úložiště klíčů postupujte podle kroků uvedených v těchto rychlých úvodech.

Případně můžete tyto příkazy Azure CLI nebo Azure PowerShell spustit.

Důležité

Každý trezor klíčů musí mít jedinečný název. Nahraďte <vault-name> názvem trezoru klíčů v následujících příkladech.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Naplňte svůj trezor klíčů tajemstvím.

Pojďme vytvořit tajný kód s názvem mySecret s hodnotou Success!. Tajným kódem může být heslo, připojovací řetězec SQL nebo jakékoli jiné informace, které potřebujete k zabezpečení a dostupnosti vaší aplikace.

K přidání tajného kódu do nově vytvořeného trezoru klíčů použijte následující příkaz:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Vytvoření virtuálního počítače

Pomocí jedné z následujících metod vytvořte virtuální počítač Windows nebo Linux:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
portál Azure portál Azure

Přiřazení identity k virtuálnímu počítači

Vytvořte identitu přiřazenou systémem pro virtuální počítač pomocí následujícího příkladu:

az vm identity assign --name <vm-name> --resource-group <resource-group>

Poznamenejte si identitu přiřazenou systémem, která se zobrazí v následujícím kódu. Výstup předchozího příkazu by byl:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Přiřazení oprávnění identitě virtuálního počítače

Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím Role-Based Access Control (RBAC), přiřaďte roli k "User Principal Name" (UPN) pomocí příkazu Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Nahraďte hodnoty <upn>, <subscription-id> a <vault-name> skutečnými hodnotami. Pokud jste použili jiný název skupiny prostředků, nahraďte také myResourceGroup. Hlavní název uživatele (UPN) bude obvykle v formátu e-mailové adresy (např. username@domain.com).

Přihlášení k virtuálnímu počítači

Pokud se chcete přihlásit k virtuálnímu počítači, postupujte podle pokynů v Připojení a přihlášení k virtuálnímu počítači Azure Windows nebo Popojte a přihlaste se k virtuálnímu počítači Azure Linux.

Nastavení konzolové aplikace

Pomocí příkazu vytvořte konzolovou aplikaci a nainstalujte požadované balíčky dotnet .

Instalace .NET Core

Pokud chcete nainstalovat .NET Core, přejděte na stránku .NET ke stažení.

Vytvoření a spuštění ukázkové aplikace .NET

Otevřete příkazový řádek.

Spuštěním následujících příkazů můžete do konzoly vytisknout Hello World:

dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run

Nainstalujte balíček .

V okně konzoly nainstalujte klientskou knihovnu Azure Key Vault Secrets pro .NET:

dotnet add package Azure.Security.KeyVault.Secrets

Pro účely tohoto rychlého startu budete muset nainstalovat následující balíček identity pro ověření v Azure Key Vault:

dotnet add package Azure.Identity

Úprava konzolové aplikace

Otevřete soubor Program.cs a přidejte tyto balíčky:

using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

Přidejte tyto řádky a aktualizujte identifikátor URI, aby odrážel váš trezor klíčů vaultUri. Následující kód používá DefaultAzureCredential() k ověřování v trezoru klíčů, přičemž používá token ze spravované identity aplikace k autentizaci. V případě omezování trezoru klíčů se také používá exponenciální zpoždění pro opakované pokusy.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<vault-name>";
            var kvUri = "https://<vault-name>.vault.azure.net";
            SecretClientOptions options = new SecretClientOptions()
            {
                Retry =
                {
                    Delay= TimeSpan.FromSeconds(2),
                    MaxDelay = TimeSpan.FromSeconds(16),
                    MaxRetries = 5,
                    Mode = RetryMode.Exponential
                 }
            };

            var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }
    }

Upravte zdroje

Pokud už je nepotřebujete, odstraňte virtuální počítač a trezor klíčů.

Další kroky