Config Server 및 서비스 레지스트리에 액세스
참고 항목
기본, 표준 및 엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.
표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.
이 문서는 기본/표준 ❎ 엔터프라이즈에✅ 적용됩니다.
이 문서에서는 Microsoft Entra RBAC(역할 기반 액세스 제어)를 사용하여 Azure Spring Apps에서 관리하는 Spring Cloud Config Server 및 Spring Cloud 서비스 레지스트리에 액세스하는 방법을 설명합니다.
참고 항목
Azure Spring Apps 서비스 내에서 배포되고 실행되는 애플리케이션은 관리되는 Spring Cloud Config Server 및 서비스 레지스트리에 액세스할 때 인증서 기반 인증 및 권한 부여로 자동으로 연결됩니다. 이러한 애플리케이션에 대해서는 이 지침을 따를 필요가 없습니다. 관련 인증서는 Azure Spring Apps 플랫폼에서 완전히 관리되며 Config Server 및 서비스 레지스트리에 연결되면 애플리케이션에 자동으로 삽입됩니다.
Microsoft Entra 사용자/그룹, MSI 또는 서비스 주체에 역할 할당
[management-group | subscription | resource-group | resource] 범위에서 [user | group | service-principal | managed-identity]에 역할을 할당합니다.
역할 이름 | 설명 |
---|---|
Azure Spring Apps 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 Portal을 사용하여 Azure 역할 할당을 참조하세요.
Config Server 및 서비스 레지스트리 엔드포인트에 액세스
역할이 할당된 후 담당자는 다음 절차를 사용하여 Spring Cloud Config Server 및 Spring Cloud Service Registry 엔드포인트에 액세스할 수 있습니다.
액세스 토큰을 가져옵니다. Microsoft Entra 사용자에게 역할이 할당되면 다음 명령을 사용하여 사용자, 서비스 주체 또는 관리 ID로 Azure CLI에 로그인하여 액세스 토큰을 가져올 수 있습니다. 자세한 내용은 Azure CLI 인증을 참조하세요.
az login az account get-access-token
엔드포인트를 작성합니다. Azure Spring Apps에서 관리되는 Spring Cloud Config Server 및 Spring Cloud 서비스 레지스트리의 기본 엔드포인트를 지원합니다.
- 'https://SERVICE_NAME.svc.azuremicroservices.io/eureka/{path}'
- 'https://SERVICE_NAME.svc.azuremicroservices.io/config/{path}'
참고 항목
21Vianet에서 운영하는 Microsoft Azure를 사용하는 경우
*.azuremicroservices.io
(을)를*.microservices.azure.cn
(으)로 대체합니다. 자세한 내용은 21Vianet 개발자 가이드에서 운영하는 Microsoft Azure의 Azure에서 엔드포인트 확인 섹션을 참조하세요.액세스 토큰을 사용하여 구성된 엔드포인트에 액세스합니다. 액세스 토큰을 헤더에 배치하여 권한 부여를 제공합니다.
--header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'
예시:
a.
https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health
와 같은 엔드포인트에 액세스하여 Config Server의 상태를 확인합니다.b.
https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps
와 같은 엔드포인트에 액세스하여 Spring Cloud Service Registry(여기서는 Eureka)에 등록된 앱을 확인합니다.응답이
401 Unauthorized
인 경우 역할이 성공적으로 할당되었는지 확인합니다. 역할이 적용되거나 액세스 토큰이 만료되지 않았는지 확인하는 데 몇 분 정도가 걸립니다.
작동기 엔드포인트에 대한 자세한 내용은 프로덕션 준비 엔드포인트를 참조하세요.
Eureka 엔드포인트는 Eureka-REST-operations를 참조하세요.
Config Server 엔드포인트 및 자세한 경로 정보는 ResourceController.java 및 EncryptionController.java를 참조하세요.
Azure Spring Apps에서 관리되는 Spring Cloud Config Server 및 서비스 레지스트리에 Spring Boot 앱 등록
역할이 할당된 후 Microsoft Entra 토큰 인증을 사용하여 Azure Spring Apps에서 관리하는 Spring Cloud Config Server 및 서비스 레지스트리에 Spring Boot 앱을 등록할 수 있습니다. Config Server와 Service Registry는 모두 인증을 위한 전달자 토큰을 삽입하기 위해 사용자 지정 REST 템플릿을 지원합니다.
자세한 내용은 샘플 Azure Spring Apps 관리되는 Config Server 액세스 및 Azure Spring Apps 관리되는 서비스 레지스트리 액세스를 참조하세요. 다음 섹션에서는 이러한 샘플의 몇 가지 중요한 세부 정보를 설명합니다.
In 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);
In CustomConfigServiceBootstrapConfiguration.java:
CustomConfigServiceBootstrapConfiguration
(은)는 Config Server에 대한 사용자 지정 REST 템플릿을 구현하고 Microsoft Entra ID의 토큰을 Authorization
헤더로 삽입합니다. 이 파일은 Config Server 샘플에서 찾을 수 있습니다.
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:
이전 두 클래스는 Spring Cloud Service Registry에 대한 사용자 지정 REST 템플릿 구현을 위한 것입니다. intercept
부분은 위의 Config Server와 동일합니다. 메시지 변환기에 factory.mappingJacksonHttpMessageConverter()
를 추가해야 합니다. 이 파일은 Spring Cloud Service Registry 샘플에서 찾을 수 있습니다.
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 Service Registry를 등록하는 것이 좋습니다.
eureka.instance.prefer-ip-address=true