Zugreifen auf Config Server und Service Registry

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Basic/Standard ❌ Enterprise

In diesem Artikel wird erläutert, wie Sie mithilfe von Microsoft Entra rollenbasierte Zugriffssteuerung (RBAC) auf die Spring Cloud Config Server- und Spring Cloud Service Registry zugreifen, die von Azure Spring Spring Apps verwaltet wird.

Hinweis

Anwendungen, die im Azure Spring Apps-Dienst bereitgestellt und ausgeführt werden, werden automatisch mit der zertifikatbasierten Authentifizierung und Autorisierung vernetzt, wenn sie auf den verwalteten Spring Cloud-Konfigurationsserver (Config Server) und die -Dienstregistrierung zugreifen. Sie müssen diese Anleitung für diese Anwendungen nicht befolgen. Die zugehörigen Zertifikate werden vollständig von der Azure Spring Apps-Plattform verwaltet und automatisch in Ihre Anwendung eingefügt, wenn eine Verbindung mit Config Server und der Dienstregistrierung besteht.

Zuweisen einer Rolle zu Microsoft Entra-Benutzer-/Gruppen-, MSI- oder Dienstprinzipal

Weisen Sie die Rolle dem/r [user | group | service-principal | managed-identity] mit dem Umfang [management-group | subscription | resource-group | resource] zu.

Rollenname Beschreibung
Azure Spring Apps Config Server-Leser Gewährt Lesezugriff auf den Azure Spring Apps Config Server.
Azure Spring Apps Config Server-Mitwirkender Gewährt Lese-, Schreib- und Löschzugriff auf den Azure Spring Apps Config Server.
Azure Spring Apps Service Registry-Leser Gewährt Lesezugriff auf die Azure Spring Apps Service Registry.
Azure Spring Apps Service Registry-Mitwirkender Gewährt Lese-, Schreib- und Löschzugriff auf die Azure Spring Apps Service Registry.

Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Zugreifen auf Config Server- und Service Registry-Endpunkte

Nach dem Zuweisen der Rolle kann deren Empfänger auf die Spring Cloud Config Server- und Spring Cloud Service Registry-Endpunkte mithilfe des folgenden Verfahrens zugreifen:

  1. Rufe ein Zugriffstoken ab. Nachdem einem Microsoft Entra-Benutzer die Rolle zugewiesen wurde, können sie die folgenden Befehle verwenden, um sich mit Benutzer, Dienstprinzipal oder verwalteter Identität bei Azure CLI anzumelden, um ein Zugriffstoken abzurufen. Ausführliche Informationen finden Sie unter Anmelden mit der Azure CLI.

    az login
    az account get-access-token
    
  2. Erstellen Sie den Endpunkt. Wir unterstützen die Standardendpunkte von Spring Cloud Config Server und Spring Cloud Service Registry, die von Azure Spring Apps verwaltet werden.

    • 'https://SERVICE_NAME.svc.azuremicroservices.io/eureka/{path}'
    • 'https://SERVICE_NAME.svc.azuremicroservices.io/config/{path}'

    Hinweis

    Wenn Sie Microsoft Azure verwenden, betrieben von 21Vianet, ersetzen Sie *.azuremicroservices.io durch *.microservices.azure.cn. Weitere Informationen finden Sie im Abschnitt " Überprüfen von Endpunkten in Azure " im Microsoft Azure-Entwicklerhandbuch von 21Vianet.

  3. Greifen Sie mit dem Zugriffstoken auf den erstellten Endpunkt zu. Fügen Sie das Zugriffstoken in einen Header ein, um die Autorisierung zu ermöglichen: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Beispiel:

    a. Greifen Sie auf einen Endpunkt wie https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health zu, um den Integritätsstatus von Config Server anzuzeigen.

    b. Greifen Sie auf einen Endpunkt wie https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps zu, um die registrierten Apps in Spring Cloud Service Registry (in diesem Fall Eureka) anzuzeigen.

    Wenn die Antwort lautet 401 Unauthorized, überprüfen Sie, ob die Rolle erfolgreich zugewiesen wurde. Es dauert einige Minuten, bis die Rolle wirksam wird. Sie können auch überprüfen, ob das Zugriffstoken abgelaufen ist.

Weitere Informationen zum Aktuatorendpunkt finden Sie unter Produktionsbereite Endpunkte.

Informationen zu Eureka-Endpunkten finden Sie unter Eureka-REST-Vorgänge.

Informationen zu Konfigurationsserverendpunkten und ausführlichen Pfadinformationen finden Sie unter ResourceController.java und EncryptionController.java.

Registrieren von Spring Boot-Apps bei Spring Cloud Config Server und der Service Registry, die von Azure Spring Apps verwaltet werden

Nachdem die Rolle zugewiesen wurde, können Sie Spring Boot-Apps bei Spring Cloud Config Server und Dienstregistrierung registrieren, die von Azure Spring Apps mit der Microsoft Entra-Tokenauthentifizierung verwaltet werden. Sowohl Config Server als auch die Service Registry unterstützen benutzerdefinierte REST-Vorlagen zum Einfügen des Bearertokens für die Authentifizierung.

Weitere Informationen finden Sie in den Beispielen Zugreifen auf den von Azure Spring Apps verwalteten Config Server und Zugreifen auf die von Azure Spring Apps verwaltete Service Registry. In den folgenden Abschnitten werden einige wichtige Details in diesen Beispielen erläutert.

In AccessTokenManager.java:

AccessTokenManager ist für das Abrufen eines Zugriffstokens aus der Microsoft Entra-ID verantwortlich. Konfigurieren Sie die Anmeldeinformationen des Dienstprinzipals in der Datei application.properties, und initialisieren Sie ApplicationTokenCredentials, um das Token abzurufen. Sie finden diese Datei in beiden Beispielen.

prop.load(in);
tokenClientId = prop.getProperty("access.token.clientId");
String tenantId = prop.getProperty("access.token.tenantId");
String secret = prop.getProperty("access.token.secret");
String clientId = prop.getProperty("access.token.clientId");
credentials = new ApplicationTokenCredentials(
    clientId, tenantId, secret, AzureEnvironment.AZURE);

In CustomConfigServiceBootstrapConfiguration.java:

CustomConfigServiceBootstrapConfiguration implementiert die benutzerdefinierte REST-Vorlage für Config Server und fügt das Token aus Der Microsoft Entra-ID als Authorization Header ein. Sie finden diese Datei im Config Server-Beispiel.

public class RequestResponseHandlerInterceptor implements ClientHttpRequestInterceptor {

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
        String accessToken = AccessTokenManager.getToken();
        request.getHeaders().remove(AUTHORIZATION);
        request.getHeaders().add(AUTHORIZATION, "Bearer " + accessToken);

        ClientHttpResponse response = execution.execute(request, body);
        return response;
    }

}

In CustomRestTemplateTransportClientFactories.java:

Die vorherigen beiden Klassen dienen zur Implementierung der benutzerdefinierten REST-Vorlage für Spring Cloud Service Registry. Der intercept-Teil ist mit dem in Config Server weiter oben identisch. Achten Sie darauf, den Nachrichtenkonvertern factory.mappingJacksonHttpMessageConverter() hinzuzufügen. Sie finden diese Datei im Spring Cloud Service Registry-Beispiel.

private RestTemplate customRestTemplate() {
    /*
     * Inject your custom rest template
     */
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getInterceptors()
        .add(new RequestResponseHandlerInterceptor());
    RestTemplateTransportClientFactory factory = new RestTemplateTransportClientFactory();

    restTemplate.getMessageConverters().add(0, factory.mappingJacksonHttpMessageConverter());

    return restTemplate;
}

Wenn Sie Anwendungen in einem Kubernetes-Cluster ausführen, wird empfohlen, eine IP-Adresse zu verwenden, um Spring Cloud Service Registry für den Zugriff zu registrieren.

eureka.instance.prefer-ip-address=true

Nächste Schritte