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

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

V tomto kurzu se dozvíte, jak získat konzolovou aplikaci pro čtení informací ze služby Azure Key Vault. Aplikace použije spravovanou identitu virtuálního počítače k ověření ve službě 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 do trezoru klíčů tajný klíč.
  • Načtení tajného klíče z trezoru klíčů
  • Vytvořte virtuální počítač Azure.
  • 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 služby Key Vault.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet.

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

Přihlášení k Azure pomocí následujícího příkazu:

az login

Vytvoření skupiny prostředků a trezoru klíčů

V tomto rychlém startu se používá předem vytvořený trezor klíčů Azure. Trezor klíčů můžete vytvořit pomocí kroků v rychlém startu Azure CLI, rychlém startu Azure PowerShellu nebo rychlém startu webu Azure Portal.

Alternativně můžete jednoduše spustit níže uvedené příkazy Azure CLI nebo Azure PowerShellu.

Důležité

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

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

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Naplnění trezoru klíčů tajným kódem

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 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 "<your-unique-keyvault-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č s Windows nebo Linuxem:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
Azure Portal Azure Portal

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 <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>

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

Pomocí příkazu az keyvault set-policy přiřaďte dříve vytvořená oprávnění identit k trezoru klíčů:

az keyvault set-policy --name '<your-unique-key-vault-name>' --object-id <VMSystemAssignedIdentity> --secret-permissions  get list set delete

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řihlaste se k virtuálnímu počítači Azure s Windows nebo Připojení a přihlaste se k virtuálnímu počítači Azure s Linuxem.

Nastavení konzolové aplikace

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

Nainstalovat .NET Core.

Pokud chcete nainstalovat .NET Core, přejděte na stránku pro stahování .NET.

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

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

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

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

Nainstalujte balíček .

V okně konzoly nainstalujte klientskou knihovnu tajných kódů služby Azure Key Vault 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í ve službě 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 tak, aby odrážel vaultUri váš trezor klíčů. Následující kód používá pro ověřování k trezoru klíčů defaultAzureCredential(), který k ověření používá token ze spravované identity aplikace. V případě omezování trezoru klíčů se také používá exponenciální zpochybnění opakování.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<your-key-vault-name>";
            var kvUri = "https://<your-key-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.");

        }
    }

Vyčištění prostředků

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

Další kroky