Freigeben über


Lernprogramm: Verwenden von Azure Key Vault mit einem virtuellen Computer in .NET

Azure Key Vault hilft Ihnen, geheime Schlüssel wie API-Schlüssel, die Datenbankverbindungszeichenfolgen, die Sie für den Zugriff auf Ihre Anwendungen, Dienste und IT-Ressourcen benötigen, zu schützen.

In diesem Lernprogramm erfahren Sie, wie Sie eine Konsolenanwendung abrufen, um Informationen aus Azure Key Vault zu lesen. Die Anwendung würde die verwaltete Identität des virtuellen Computers verwenden, um sich bei Key Vault zu authentifizieren.

Das Tutorial veranschaulicht folgende Vorgehensweisen:

  • Erstellen Sie eine Ressourcengruppe.
  • Erstellen eines Schlüsseltresors.
  • Hinzufügen eines Geheimnisses zum Schlüsseltresor.
  • Abrufen eines Geheimnisses aus dem Schlüsseltresor.
  • Erstellen Sie einen Azure virtuellen Computer.
  • Aktivieren einer verwalteten Identität für den virtuellen Computer
  • Zuweisen von Berechtigungen zur VM-Identität.

Lesen Sie vor Beginn Key Vault grundlegende Konzepte.

Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein free-Konto.

Voraussetzungen

Für Windows, Mac und Linux:

Erstellen von Ressourcen und Zuweisen von Berechtigungen

Bevor Sie mit der Programmierung beginnen, müssen Sie einige Ressourcen erstellen, ein Geheimnis in Ihren Schlüsseltresor legen und Berechtigungen zuweisen.

Anmelden bei Azure

So melden Sie sich mit dem folgenden Befehl bei Azure an:

az login

Erstellen einer Ressourcengruppe und eines Schlüsseltresors

In dieser Schnellstartanleitung wird ein vorkonfigurierter Azure Key Vault verwendet. Sie können einen Schlüsseltresor erstellen, indem Sie die Schritte in den folgenden Schnellstarts ausführen:

Alternativ können Sie diese Azure CLI oder Azure PowerShell Befehle ausführen.

Wichtig

Jeder Schlüsseltresor muss einen eindeutigen Namen haben. Ersetzen Sie in den folgenden Beispielen <vault-name> durch den Namen Ihres Schlüsseltresors.

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

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

Einfügen eines Geheimnisses in Ihren Schlüsseltresor

Erstellen Sie ein Geheimnis mit dem Namen mySecret und dem Wert Success! . Ein Geheimer Schlüssel kann ein Kennwort, ein SQL-Verbindungszeichenfolge oder andere Informationen sein, die Sie benötigen, um sowohl sicher als auch für Ihre Anwendung verfügbar zu sein.

Fügen Sie Ihrem neu erstellten Schlüsseltresor mit dem folgenden Befehl ein Geheimnis hinzu:

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

Erstellen eines virtuellen Computers

Erstellen Sie eine Windows oder einen virtuellen Linux-Computer mit einer der folgenden Methoden:

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

Zuweisen einer Identität zum virtuellen Computer

Erstellen Sie mit dem folgenden Beispiel eine systemseitig zugewiesene Identität für den virtuellen Computer:

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

Beachten Sie die systemseitig zugewiesene Identität, die im folgenden Code angezeigt wird. Die Ausgabe des obigen Befehls lautet etwa wie folgt:

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

Zuweisen von Berechtigungen für die VM-Identität

Um Berechtigungen für Ihren Schlüsseltresor über Role-Based Access Control (RBAC) zu erhalten, weisen Sie Ihrem Benutzerprinzipalnamen (User Principal Name, UPN) eine Rolle zu, mithilfe des Azure CLI-Befehls 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>"

Ersetzen Sie <upn>, <subscription-id> und <vault-name> durch Ihre tatsächlichen Werte. Wenn Sie einen anderen Ressourcengruppennamen verwendet haben, ersetzen Sie auch "myResourceGroup". Ihr Benutzerprinzipalname (UPN) hat in der Regel das Format einer E-Mail-Adresse (z. B. username@domain.com).

Anmelden beim virtuellen Computer

Um sich beim virtuellen Computer anzumelden, folgen Sie den Anweisungen in Connect und melden Sie sich bei einem virtuellen Azure Windows Computer an oder Verbinden und sich bei einem virtuellen Azure Linux-Computer an.

Einrichten der Konsolen-App

Erstellen Sie eine Konsolen-App, und installieren Sie die erforderlichen Pakete mit dem dotnet-Befehl.

Installieren von .NET Core

Um .NET Core zu installieren, wechseln Sie zur Seite .NET Downloads.

Erstellen und Ausführen einer Beispiel-.NET-App

Öffnen Sie eine Eingabeaufforderung.

Sie können "Hallo Welt" in der Konsole drucken, indem Sie die folgenden Befehle ausführen:

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

Installiere das Paket

Installieren Sie im Konsolenfenster die Azure Key Vault Secrets-Clientbibliothek für .NET.

dotnet add package Azure.Security.KeyVault.Secrets

Für diese Schnellstartanleitung müssen Sie das folgende Identitätspaket installieren, um sich bei Azure Key Vault zu authentifizieren:

dotnet add package Azure.Identity

Bearbeiten der Konsolen-App

Öffnen Sie die Datei Program.cs, und fügen Sie die folgenden Pakete hinzu:

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

Fügen Sie diese Zeilen hinzu, und aktualisieren Sie den URI, sodass er dem Tresor-URI (vaultUri) Ihres Schlüsseltresors entspricht. Im folgenden Code wird 'DefaultAzureCredential()' für die Authentifizierung beim Schlüsseltresor verwendet. Dabei wird das Token der verwalteten Anwendungsidentität zur Authentifizierung herangezogen. Darüber hinaus wird das exponentielle Backoff für Wiederholungen verwendet, falls der Schlüsseltresor gedrosselt wird.

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

        }
    }

Bereinigen von Ressourcen

Löschen Sie den virtuellen Computer und Ihren Schlüsseltresor, wenn diese nicht mehr benötigt werden.

Nächste Schritte