Självstudie: Använda Azure 密钥保管库 med en virtuell dator i .NET

Azure 密钥保管库 hjälper dig att skydda hemligheter som API-nycklar, databasanslutningssträngar som du behöver för att komma åt dina program, tjänster och IT-resurser.

I den här självstudien får du lära dig hur du hämtar ett konsolprogram för att läsa information från Azure 密钥保管库. Programmet använder en hanterad identitet för virtuella datorer för att autentisera för att 密钥保管库.

Självstudien visar hur du:

  • Skapa en resursgrupp.
  • Skapa ett nyckelvalv.
  • Lägg till en hemlighet i nyckelvalvet.
  • Hämta en hemlighet från nyckelvalvet.
  • Skapa en virtuell dator i Azure.
  • Aktivera en hanterad identitet för den virtuella datorn.
  • Tilldela behörigheter till den virtuella datorns identitet.

Läs 密钥保管库 grundläggande begrepp innan du börjar.

Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.

Krav

För Windows, Mac och Linux:

Skapa resurser och tilldela behörigheter

Innan du börjar koda måste du skapa några resurser, placera en hemlighet i ditt nyckelvalv och tilldela behörigheter.

Logga in på Azure

Logga in på Azure med följande kommando:

az login

Skapa en resursgrupp och ett nyckelvalv

Den här snabbstarten använder ett azure-nyckelvalv som skapats i förväg. Du kan skapa ett nyckelvalv genom att följa stegen i Snabbstart för Azure CLI, Azure PowerShell snabbstart eller Azure-Portal snabbstart.

Du kan också köra Azure CLI eller Azure PowerShell kommandona nedan.

Viktigt

Varje nyckelvalv måste ha ett unikt namn. Ersätt <your-unique-keyvault-name> med namnet på ditt nyckelvalv i följande exempel.

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

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

Fylla i ditt nyckelvalv med en hemlighet

Nu ska vi skapa en hemlighet med namnet mySecret med värdet Success!. En hemlighet kan vara ett lösenord, en SQL-συμβολοσειρά σύνδεσης eller annan information som du behöver för att hålla både säker och tillgänglig för ditt program.

Om du vill lägga till en hemlighet i ditt nyligen skapade nyckelvalv använder du följande kommando:

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

Skapa en virtuell dator

Skapa en virtuell Windows- eller Linux-dator med någon av följande metoder:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
Azure-portalen Azure-portalen

Tilldela en identitet till den virtuella datorn

Skapa en systemtilldelad identitet för den virtuella datorn med följande exempel:

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

Observera den systemtilldelade identiteten som visas i följande kod. Utdata från föregående kommando är:

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

Tilldela behörigheter till den virtuella datorns identitet

Tilldela tidigare skapade identitetsbehörigheter till ditt nyckelvalv med kommandot az keyvault set-policy :

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

Logga in på den virtuella datorn

Om du vill logga in på den virtuella datorn följer du anvisningarna i Ansluta och logga in på en virtuell Azure Windows-dator eller Anslut och logga in på en virtuell Azure Linux-dator.

Konfigurera konsolappen

Skapa en konsolapp och installera de paket som krävs med kommandot dotnet .

Installera .NET Core

Om du vill installera .NET Core går du till nedladdningssidan för .NET .

Skapa och köra en .NET-exempelapp

Öppna en kommandotolk.

Du kan skriva ut "Hallo Welt" till konsolen genom att köra följande kommandon:

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

Installera paketet

Från konsolfönstret installerar du Klientbiblioteket för Azure 密钥保管库 Secrets för .NET:

dotnet add package Azure.Security.KeyVault.Secrets

För den här snabbstarten måste du installera följande identitetspaket för att autentisera till Azure 密钥保管库:

dotnet add package Azure.Identity

Redigera konsolappen

Öppna filen Program.cs och lägg till följande paket:

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

Lägg till dessa rader och uppdatera URI:n så att den vaultUri återspeglar nyckelvalvets. Koden nedan använder "DefaultAzureCredential()" för autentisering till nyckelvalvet, som använder token från programhanterad identitet för att autentisera. Den använder också exponentiell backoff för återförsök om nyckelvalvet begränsas.

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

        }
    }

Rensa resurser

När de inte längre behövs tar du bort den virtuella datorn och ditt nyckelvalv.

Nästa steg