Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Эта статья относится к:✅ 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 или субъекту-службе
Назначьте роль для [пользователь | группа | представитель службы | управляемая идентичность] в области [группа управления | подписка | группа ресурсов | ресурс].
| Имя роли | Описание |
|---|---|
| Читатель Config Server для Azure Spring Apps | Разрешите доступ для чтения к Azure Spring Apps Config Server. |
| Участник компонента Config Server Azure Spring Apps | Разрешить доступ на чтение, запись и удаление к серверу конфигурации 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 ID. Настройте данные для входа учетной записи службы в файле 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 ID в 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