Tutorial: Verwenden von Azure Key Vault mit einem virtuellen Windows in .NET

Azure Key Vault unterstützt Sie beim Schutz von Geheimnissen wie API-Schlüsseln und Datenbank-Verbindungszeichenfolgen, die für den Zugriff auf Ihre Anwendungen, Dienste und IT-Ressourcen benötigt werden.

In diesem Tutorial wird beschrieben, wie Sie vorgehen müssen, damit eine Konsolenanwendung Informationen aus Azure Key Vault lesen kann. Von der Anwendung wird für die Authentifizierung bei Key Vault die verwaltete Identität des virtuellen Computers verwendet.

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 virtuellen Azure-Computer.
  • Aktivieren einer verwalteten Identität für den virtuellen Computer
  • Zuweisen von Berechtigungen zur VM-Identität

Machen Sie sich zunächst mit den grundlegenden Konzepten von Key Vault vertraut.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.

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 mithilfe des folgenden Befehls bei Azure an:

Erstellen einer Ressourcengruppe und eines Schlüsseltresors

In dieser Schnellstartanleitung wird eine vorab erstellte Azure Key Vault-Instanz verwendet. Eine Anleitung zum Erstellen eines Schlüsseltresors finden Sie unter Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe der Azure CLI, Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe von PowerShell oder Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe des Azure-Portals.

Alternativ können Sie einfach die folgenden Azure CLI- oder Azure PowerShell-Befehle ausführen.

Wichtig

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

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

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

Einfügen eines Geheimnisses in Ihren Schlüsseltresor

Erstellen Sie ein Geheimnis mit dem Namen mySecret und dem Wert Success! . Bei einem Geheimnis kann es sich beispielsweise um ein Kennwort, eine SQL-Verbindungszeichenfolge oder um beliebige andere Informationen handeln, die sowohl sicher aufbewahrt werden als auch für Ihre Anwendung verfügbar sein müssen.

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

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

Erstellen eines virtuellen Computers

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

Windows Linux
Azure-Befehlszeilenschnittstelle Azure-Befehlszeilenschnittstelle
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 <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>

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

Weisen Sie Ihrem Schlüsseltresor mit dem Befehl az keyvault set-policy die zuvor erstellten Identitätsberechtigungen zu:

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

Anmelden beim virtuellen Computer

Befolgen Sie zum Anmelden beim virtuellen Computer die Anleitung unter Herstellen einer Verbindung mit einem virtuellen Azure-Computer unter Windows und Anmelden auf diesem Computer bzw. Vorschau: Anmelden bei einem virtuellen Linux-Computer in Azure mit der Azure Active Directory-Authentifizierung.

Einrichten der Konsolen-App

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

.NET Core installieren

Wechseln Sie zur .NET-Downloadseite, um .NET Core zu installieren.

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

Öffnen Sie eine Eingabeaufforderung.

Sie können „Hallo Welt“ auf der Konsole ausgeben, indem Sie die folgenden Befehle ausführen:

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

Installieren des Pakets

Installieren Sie über das Konsolenfenster die Azure Key Vault-Geheimnisclientbibliothek für .NET:

dotnet add package Azure.Security.KeyVault.Secrets

In dieser Schnellstartanleitung muss für die Authentifizierung bei Azure Key Vault das folgende Identitätspaket installiert werden:

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

        }
    }

Bereinigen von Ressourcen

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

Nächste Schritte