Zelfstudie: Azure Key Vault gebruiken met een virtuele machine in .NET

Azure Key Vault helpt u bij het beveiligen van geheimen zoals API-sleutels, de databaseverbindingsreeksen die nodig zijn voor toegang tot uw toepassingen, services en IT-resources.

In deze zelfstudie leert u hoe u ervoor zorgt dat een consoletoepassing informatie ophaalt uit Azure Key Vault. De toepassing gebruikt de beheerde identiteit van de virtuele machine voor het verifiëren van Key Vault.

In deze zelfstudie leert u het volgende:

  • Maak een resourcegroep.
  • Een sleutelkluis maken.
  • Voeg een geheim toe aan de sleutelkluis.
  • Een geheim ophalen uit de sleutelkluis.
  • Een virtuele Azure-machine maken.
  • Een beheerde identiteit inschakelen voor de virtuele machine.
  • Wijs machtigingen toe aan de VM-identiteit.

Lees voordat u verdergaat eerst Basisconcepten van Key Vault.

Als u nog geen Azure-abonnement hebt, maakt u een gratis account.

Vereisten

Voor Windows, Mac en Linux:

Resources maken en machtigingen toewijzen

Voordat u begint met het coderen, moet u enkele resources maken, een geheim in uw sleutelkluis plaatsen en machtigingen toewijzen.

Aanmelden bij Azure

Als u zich wilt aanmelden bij Azure met behulp van de volgende opdracht:

az login

Een resourcegroep en sleutelkluis maken

In deze quickstart wordt gebruikgemaakt van een vooraf gemaakte Azure-sleutelkluis. U kunt een sleutelkluis maken met behulp van de stappen in de quickstart voor Azure CLI, de quickstart voor Azure PowerShell of de quickstart voor de Azure-portal.

U kunt ook de onderstaande Azure CLI- of Azure PowerShell-opdrachten uitvoeren.

Belangrijk

Elke sleutelkluis moet een unieke naam hebben. Vervang <uw unieke sleutelkluisnaam> door de naam van uw sleutelkluis in de volgende voorbeelden.

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

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

Vul uw sleutelkluis in met een geheim

We gaan een geheim maken met de naam mySecret en de waarde Success!. Een geheim kan een wachtwoord zijn, een SQL-verbindingsreeks of andere gegevens die u zowel veilig als beschikbaar wilt houden voor de toepassing.

Gebruik de volgende opdracht om een geheim toe te voegen aan uw zojuist gemaakte sleutelkluis:

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

Maak een virtuele machine

Gebruik een van de volgende manieren om een virtuele Windows of Linux-machine te maken:

Windows Linux
Azure-CLI Azure-CLI
Powershell Powershell
Azure-portal Azure-portal

Een identiteit toewijzen aan de virtuele machine

Maak een door het systeem toegewezen identiteit voor de virtuele machine met het volgende voorbeeld:

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

Bekijk de door het systeem toegewezen identiteit die wordt weergegeven in de volgende code. De uitvoer van de vorige opdracht ziet er als volgt uit:

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

Machtigingen toewijzen aan de VM-identiteit

Wijs de eerder gemaakte identiteitsmachtigingen toe aan uw sleutelkluis met de opdracht az keyvault set-policy:

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

Aanmelden bij de virtuele machine

Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Verbinding maken met en aanmelden bij een virtuele Azure-machine met Windows of Verbinding maken en aanmelden bij de virtuele Azure-machine die Linux uitvoert.

De console-app instellen

Maak een console-app en installeer de vereiste pakketten met de opdracht dotnet.

.NET Core installeren

Als u .NET Core wilt installeren, gaat u naar de pagina .NET-downloads.

Een .NET-voorbeeld-app maken en uitvoeren

Open een opdrachtprompt.

U kunt 'Hallo wereld' afdrukken naar de console door de volgende opdrachten uit te voeren:

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

Het pakket installeren

Installeer vanuit het consolevenster de Azure Key Vault Secrets-clientbibliotheek voor .NET:

dotnet add package Azure.Security.KeyVault.Secrets

Voor deze quickstart moet u het volgende identiteitspakket installeren om u te verifiëren bij Azure Key Vault:

dotnet add package Azure.Identity

De console-app bewerken

Open het bestand Program.cs en voeg deze pakketten toe:

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

Voeg deze regels toe, waarbij u de URI bijwerkt volgens de vaultUri van uw sleutelkluis. De onderstaande code maakt gebruik van 'DefaultAzureCredential()' voor verificatie naar de sleutelkluis, die een token van de beheerde identiteit van de toepassing gebruikt voor verificatie. Er wordt ook exponentieel uitstel gebruikt voor nieuwe pogingen wanneer de sleutelkluis wordt vertraagd.

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

        }
    }

Resources opschonen

Als ze niet meer nodig zijn, verwijdert u de virtuele machine en de sleutelkluis.

Volgende stappen