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 u nodig hebt voor toegang tot uw toepassingen, services en IT-resources.

In deze zelfstudie leert u hoe u een consoletoepassing krijgt om informatie uit Azure Key Vault te lezen. De toepassing gebruikt beheerde identiteit van virtuele machines om te verifiëren bij Key Vault.

De handleiding laat je zien hoe je:

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

Lees Key Vault basisconcepten voordat u begint.

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

Vereiste voorwaarden

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.

Meld u aan bij Azure

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

az login

Maak een resourcegroep en een sleutelkluis aan

In deze quickstart wordt een vooraf aangemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken door de stappen in deze quickstarts te volgen:

U kunt deze opdrachten ook uitvoeren via Azure CLI of Azure PowerShell.

Belangrijk

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

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

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

Vul uw sleutelkluis met een geheim

We gaan een geheim maken met de naam mySecret en de waarde Success!. Een geheim kan een wachtwoord, een SQL-verbindingsreeks of andere informatie zijn die u nodig hebt om zowel veilig als beschikbaar te blijven voor uw toepassing.

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

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

Een virtuele machine maken

Maak een virtuele Windows- of Linux-machine met behulp van een van de volgende methoden:

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 <vm-name> --resource-group <resource-group>

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

Als u machtigingen wilt verkrijgen voor uw sleutelkluis via Role-Based Access Control (RBAC), wijst u een rol toe aan uw UPN (User Principal Name) met behulp van de Azure CLI-opdracht az-roltoewijzing maken.

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

Vervang , <upn>en <subscription-id> door <vault-name>uw werkelijke waarden. Als u een andere resourcegroepnaam hebt gebruikt, vervangt u myResourceGroup ook. Uw UPN heeft meestal de indeling van een e-mailadres (bijvoorbeeld username@domain.com).

Aanmelden bij de virtuele machine

Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Connect and sign in to an Azure Windows virtual machine or Connect and sign in to an Azure Linux virtual machine.

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 voorbeeld-.NET-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

Installeer het pakket

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 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 om de vaultUri van uw sleutelkluis weer te geven. 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 gebruikgemaakt van exponentieel terugschakelen voor nieuwe pogingen wanneer de Key Vault wordt beperkt.

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

        }
    }

De hulpbronnen opschonen

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

Volgende stappen