Tutorial: Verwenden von Key Vault-Verweisen in einer Java Spring-App

In diesem Tutorial erfahren Sie, wie Sie den Azure App Configuration-Dienst zusammen mit Azure Key Vault verwenden. Die Dienste App Configuration und Key Vault ergänzen sich gegenseitig und werden bei den meisten Anwendungsbereitstellungen gemeinsam eingesetzt.

App Configuration unterstützt Sie beim parallelen Verwenden der Dienste, indem Schlüssel erstellt werden, mit denen auf in Key Vault gespeicherte Werte verwiesen wird. Wenn mit App Configuration Schlüssel dieser Art erstellt werden, werden nicht die eigentlichen Werte, sondern die URIs der Key Vault-Werte gespeichert.

Ihre Anwendung nutzt den App Configuration-Clientanbieter, um Key Vault-Verweise abzurufen, wie dies auch für alle anderen Schlüssel der Fall ist, die in App Configuration gespeichert sind. In diesem Fall sind die in App Configuration gespeicherten Werte URIs, mit denen auf die Werte in Key Vault verwiesen wird. Es sind keine Key Vault-Werte oder -Anmeldeinformationen. Da der Clientanbieter die Schlüssel als Key Vault-Verweise erkennt, wird Key Vault zum Abrufen der zugehörigen Werte verwendet.

Ihre Anwendung ist für die ordnungsgemäße Authentifizierung sowohl bei App Configuration als auch bei Key Vault zuständig. Die beiden Dienste kommunizieren nicht direkt.

In diesem Tutorial wird veranschaulicht, wie Sie Key Vault-Verweise in Ihrem Code implementieren. Dies baut auf der Web-App auf, die in den Schnellstartanleitungen vorgestellt wurde. Arbeiten Sie zunächst Schnellstart: Erstellen einer Java Spring-App mit Azure App Configuration durch, bevor Sie fortfahren.

Für die Ausführung der Schritte dieses Tutorials können Sie einen beliebigen Code-Editor verwenden. Visual Studio Code ist beispielsweise ein plattformübergreifender Code-Editor, der für die Betriebssysteme Windows, macOS und Linux verfügbar ist.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen eines App Configuration-Schlüssels, der auf einen in Key Vault gespeicherten Wert verweist
  • Zugreifen auf den Wert dieses Schlüssels über eine Java Spring-Webanwendung

Voraussetzungen

Erstellen eines Tresors

  1. Wählen Sie oben links im Azure-Portal die Option Ressource erstellen aus:

    Screenshot shows the Create a resource option in the Azure portal.

  2. Geben Sie Key Vault in das Suchfeld ein.

  3. Wählen Sie in der Ergebnisliste links Key Vault aus.

  4. Wählen Sie unter Schlüsseltresore die Option Hinzufügen aus.

  5. Geben Sie auf der rechten Seite unter Schlüsseltresor erstellen die folgenden Informationen ein:

    • Wählen Sie die Option Abonnement aus, um ein Abonnement auszuwählen.
    • Wählen Sie unter Ressourcengruppe die Option Neu erstellen aus, und geben Sie einen Namen für die Ressourcengruppe ein.
    • Unter Schlüsseltresorname müssen Sie einen eindeutigen Namen eingeben. Geben Sie für dieses Tutorial Contoso-vault2 ein.
    • Wählen Sie in der Dropdownliste Region einen Ort aus.
  6. Übernehmen Sie für die anderen Optionen unter Schlüsseltresor erstellen die Standardwerte.

  7. Klicken Sie auf Erstellen.

An diesem Punkt ist nur Ihr Azure-Konto für den Zugriff auf diesen neuen Tresor autorisiert.

Screenshot shows your key vault.

Hinzufügen eines Geheimnisses zu Key Vault

Zum Hinzufügen eines Geheimnisses zum Tresor müssen Sie lediglich einige zusätzliche Schritte ausführen. In diesem Fall fügen Sie eine Nachricht hinzu, die Sie verwenden können, um den Key Vault-Abruf zu testen. Die Nachricht hat den Namen Nachricht, und Sie speichern darin den Wert „Hallo von Key Vault“.

  1. Wählen Sie auf den Key Vault-Eigenschaftenseiten die Option Geheimnisse aus.
  2. Wählen Sie die Option Generieren/Importieren aus.
  3. Geben Sie im Bereich Geheimnis erstellen die folgenden Werte ein:
    • Uploadoptionen: Geben Sie Manuell ein.
    • Name: Geben Sie Nachricht ein.
    • Value: Geben Sie Hallo von Key Vault ein.
  4. Übernehmen Sie für die anderen Eigenschaften unter Geheimnis erstellen die Standardwerte.
  5. Klicken Sie auf Erstellen.

Hinzufügen eines Key Vault-Verweises zu App Configuration

  1. Melden Sie sich beim Azure-Portal an. Wählen Sie die Option Alle Ressourcen und dann die Instanz des App Configuration-Speichers aus, die Sie in der Schnellstartanleitung erstellt haben.

  2. Wählen Sie Konfigurations-Explorer aus.

  3. Wählen Sie + Erstellen>Schlüsseltresorverweis aus, und geben Sie dann die folgenden Werte an:

    • Key: Wählen Sie /application/config.keyvaultmessage aus.
    • Bezeichnung: Lassen Sie diesen Wert leer.
    • Abonnement, Ressourcengruppe und Schlüsseltresor: Geben Sie die Werte ein, die den Werten des im vorherigen Abschnitt erstellten Schlüsseltresors entsprechen.
    • Geheimnis: Wählen Sie das Geheimnis mit dem Namen Nachricht aus, das Sie im vorherigen Abschnitt erstellt haben.

Verbindung mit Key Vault herstellen

  1. In diesem Tutorial verwenden Sie einen Dienstprinzipal für die Authentifizierung bei Key Vault. Verwenden Sie zum Erstellen dieses Dienstprinzipals den Azure CLI-Befehl az ad sp create-for-rbac:

    az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    Daraufhin wird eine Reihe von Schlüssel-Wert-Paaren zurückgegeben:

    {
    "clientId": "7da18cae-779c-41fc-992e-0527854c6583",
    "clientSecret": "b421b443-1669-4cd7-b5b1-394d5c945002",
    "subscriptionId": "443e30da-feca-47c4-b68f-1636b75e16b3",
    "tenantId": "35ad10f1-7799-4766-9acf-f2d946161b77",
    "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
    "resourceManagerEndpointUrl": "https://management.azure.com/",
    "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
    "galleryEndpointUrl": "https://gallery.azure.com/",
    "managementEndpointUrl": "https://management.core.windows.net/"
    }
    
  2. Führen Sie den folgenden Befehl aus, um dem Dienstprinzipal den Zugriff auf Ihren Schlüsseltresor zu erlauben:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. Führen Sie den folgenden Befehl aus, um Ihre Objekt-ID abzurufen, und fügen Sie sie anschließend zu App Configuration hinzu.

    az ad sp show --id <clientId-of-your-service-principal>
    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
    
  4. Erstellen Sie die Umgebungsvariablen AZURE_CLIENT_ID, AZURE_CLIENT_SECRET und AZURE_TENANT_ID. Verwenden Sie dabei die Werte für den Dienstprinzipal, die im vorherigen Schritt angezeigt wurden. Führen Sie an der Befehlszeile die folgenden Befehle aus, und starten Sie die Eingabeaufforderung neu, damit die Änderung wirksam wird:

    setx AZURE_CLIENT_ID "clientId"
    setx AZURE_CLIENT_SECRET "clientSecret"
    setx AZURE_TENANT_ID "tenantId"
    

    Führen Sie bei Verwendung von Windows PowerShell den folgenden Befehl aus:

    $Env:AZURE_CLIENT_ID = "clientId"
    $Env:AZURE_CLIENT_SECRET = "clientSecret"
    $Env:AZURE_TENANT_ID = "tenantId"
    

    Führen Sie bei Verwendung von macOS oder Linux den folgenden Befehl aus:

    export AZURE_CLIENT_ID ='clientId'
    export AZURE_CLIENT_SECRET ='clientSecret'
    export AZURE_TENANT_ID ='tenantId'
    

Hinweis

Diese Key Vault-Anmeldeinformationen werden nur innerhalb Ihrer Anwendung verwendet. Ihre Anwendung authentifiziert sich mit diesen Anmeldeinformationen direkt (ohne Beteiligung des App Configuration-Diensts) bei Key Vault. Key Vault sorgt für die Authentifizierung Ihrer Anwendung und Ihres App Configuration-Diensts, ohne Schlüssel weiterzugeben oder offenzulegen.

Aktualisieren des Codes für die Verwendung eines Key Vault-Verweises

  1. Erstellen Sie eine Umgebungsvariable namens APP_CONFIGURATION_ENDPOINT. Legen Sie ihren Wert auf den Endpunkt Ihres App Configuration-Speichers fest. Den Endpunkt finden Sie im Azure-Portal auf dem Blatt Zugriffsschlüssel. Starten Sie die Eingabeaufforderung neu, damit die Änderung wirksam wird.

  2. Öffnen Sie Ihre Konfigurationsdatei im Ordner Ressourcen. Aktualisieren Sie diese Datei, sodass der Wert APP_CONFIGURATION_ENDPOINT verwendet wird. Entfernen Sie alle Verweise auf eine Verbindungszeichenfolge in dieser Datei.

spring:
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}

Hinweis

Zum Herstellen einer Verbindung mit dem Key Vault können Sie auch die globalen Azure-Konfigurationen von Spring Cloud verwenden.

  1. Öffnen Sie MessageProperties.java. Fügen Sie eine neue Variable mit dem Namen keyVaultMessage hinzu:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. Öffnen Sie HelloController.java. Aktualisieren Sie die getMessage-Methode, um die von Key Vault abgerufene Nachricht einzuschließen.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Erstellen Sie Ihre Spring Boot-Anwendung mit Maven, und führen Sie sie aus. Beispiel:

    mvn clean package
    mvn spring-boot:run
    
  4. Nachdem Ihre Anwendung ausgeführt wird, testen Sie sie mit cURL. Beispiel:

    curl -X GET http://localhost:8080/
    

    Es wird die Nachricht angezeigt, die Sie im App Configuration-Speicher eingegeben haben. Darüber hinaus wird die Nachricht angezeigt, die Sie in Key Vault eingegeben haben.

Bereinigen von Ressourcen

Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
  2. Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
  3. Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  5. Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.

Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.

Nächste Schritte

In diesem Tutorial haben Sie einen App Configuration-Schlüssel erstellt, mit dem auf einen in Key Vault gespeicherten Wert verwiesen wird. Weitere Fragen finden Sie in der Referenzdokumentation. Sie enthält alle Details zur Funktionsweise der Spring Cloud Azure App Configuration-Bibliothek. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Featureflags in Ihrer Java Spring-Anwendung verwendet werden.