Доступ к серверу конфигурации и реестру служб

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к: ✔️ Basic/Standard ❌ Enterprise

В этой статье объясняется, как получить доступ к серверу конфигурации Spring Cloud и Реестру служб Spring Cloud, управляемому Azure Spring Apps, с помощью управления доступом на основе ролей Microsoft Entra (RBAC).

Примечание.

Приложения, развернутые и работающие в службе Azure Spring Apps, автоматически проходят проверку подлинности и авторизацию на основе сертификатов при доступе к управляемому Config Server и реестру служб Spring Cloud. Поэтому следовать этим рекомендациям для этих приложений не нужно. Связанные сертификаты полностью управляются платформой Azure Spring Apps и автоматически внедряются в приложение при подключении к Config Server и реестру служб.

Назначение роли пользователю или группе Microsoft Entra, MSI или субъекту-службе

Назначьте роль для области [пользователь | группа | руководитель службы | управляемая идентификация] в [группа управления | подписка | группа ресурсов | ресурс].

Имя роли Description
Читатель Config Server для Azure Spring Apps Разрешите доступ для чтения к Config Server Azure Spring Apps.
Участник компонента Config Server Azure Spring Apps Разрешите доступ на чтение, запись и удаление к Config Server Azure Spring Apps.
Читатель реестра служб Azure Spring Apps Разрешите доступ на чтение к реестру служб Azure Spring Apps.
Участник реестра службы Azure Spring Apps Разрешите доступ на чтение, запись и удаление к реестру служб Azure Spring Apps.

Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

Доступ к конечным точкам сервера конфигурации и реестра служб

После назначения роли исполнитель может получить доступ к конечным точкам сервера конфигурации Spring Cloud и реестра служб Spring Cloud, используя следующие процедуры.

  1. Получение маркера доступа. После назначения роли пользователю Microsoft Entra можно использовать следующие команды для входа в Azure CLI с помощью пользователя, субъекта-службы или управляемого удостоверения для получения маркера доступа. Дополнительные сведения см. в разделе Проверка подлинности Azure CLI.

    az login
    az account get-access-token
    
  2. Создайте конечную точку. Мы поддерживаем конечные точки по умолчанию для Config Server Spring Cloud и реестра служб Spring Cloud под управлением Azure Spring Apps.

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

    Примечание.

    Если вы используете Microsoft Azure под управлением 21Vianet, замените *.azuremicroservices.io на *.microservices.azure.cn. Дополнительные сведения см. в разделе "Проверка конечных точек в Azure" в руководстве разработчика Microsoft Azure, управляемом 21Vianet.

  3. Получите доступ к составной конечной точке с помощью маркера доступа. Вставьте маркер доступа в заголовок, чтобы обеспечить авторизацию: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Например:

    a. Доступ к конечной точке, как https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health просмотреть состояние работоспособности сервера конфигурации.

    b. Доступ к конечной точке, как https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps просмотреть зарегистрированные приложения в реестре служб Spring Cloud (Eureka здесь).

    Если ответ равен401 Unauthorized, проверка, чтобы узнать, успешно ли назначена роль. Чтобы роль вступила в силу или чтобы убедиться, что срок действия токена доступа не истек, потребуется несколько минут.

Для получения дополнительной информации о конечной точке привода см. Конечные точки, готовые к производству.

Для конечных точек Eureka см. Eureka-REST-operations

Конечные точки сервера конфигурации и подробную информацию о пути см. в ResourceController.java и EncryptionController.java.

Зарегистрируйте приложения Spring Boot в Config Server Spring Cloud и в реестре служб под управлением Azure Spring Apps

После назначения роли можно зарегистрировать приложения Spring Boot на сервере конфигурации Spring Cloud и реестре служб, управляемых Azure Spring Apps, с проверкой подлинности маркера Microsoft Entra. И сервер конфигурации, и реестр служб поддерживают пользовательский шаблон REST для ввода токена-носителя для аутентификации.

Дополнительные сведения см. в примерах Доступ к Config Server под управлением Azure Spring Apps и Доступ к реестру служб, управляемому Azure Spring Apps. В следующих разделах объясняются некоторые важные детали этих примеров.

В AccessTokenManager.java

AccessTokenManager отвечает за получение маркера доступа из идентификатора Microsoft Entra. Настройте регистрационную информацию субъекта-службы в файле application.properties и инициализируйтеApplicationTokenCredentials, чтобы получить токен. Вы можете найти этот файл в обоих примерах.

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

В CustomConfigServiceBootstrapConfiguration.java

CustomConfigServiceBootstrapConfiguration реализует пользовательский шаблон REST для сервера конфигурации и внедряет маркер из идентификатора Microsoft Entra в качестве Authorization заголовков. Вы можете найти этот файл в Примере сервера конфигурации.

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;
    }

}

В CustomRestTemplateTransportClientFactories.java

Предыдущие два класса предназначены для реализации настраиваемого шаблона REST для реестра служб Spring Cloud. Часть intercept такая же, как и в приведенном выше сервере конфигурации. Обязательно добавьте factory.mappingJacksonHttpMessageConverter() в конвертеры сообщений. Вы можете найти этот файл в образце реестра служб Spring Cloud.

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;
}

Если вы запускаете приложения в кластере Kubernetes, мы рекомендуем использовать IP-адрес для регистрации реестра служб Spring Cloud для доступа.

eureka.instance.prefer-ip-address=true

Следующие шаги