Доступ к серверу конфигурации и реестру служб
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к:✅ 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, используя следующие процедуры.
Получение маркера доступа. После назначения роли пользователю Microsoft Entra можно использовать следующие команды для входа в Azure CLI с помощью пользователя, субъекта-службы или управляемого удостоверения для получения маркера доступа. Дополнительные сведения см. в разделе Проверка подлинности Azure CLI.
az login az account get-access-token
Создайте конечную точку. Мы поддерживаем конечные точки по умолчанию для 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.Получите доступ к составной конечной точке с помощью маркера доступа. Вставьте маркер доступа в заголовок, чтобы обеспечить авторизацию:
--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