Spring Cloud Azure Spring 애플리케이션에서 Azure 서비스를 더 쉽게 사용할 수 있도록 하는 open source 프로젝트입니다.
Spring Cloud Azure 모든 리소스를 대중에게 제공하는 open source 프로젝트입니다. 다음 목록에서는 이러한 리소스에 대한 링크를 제공합니다.
- 소스 코드: Azure/azure-sdk-for-java.
- 샘플: Azure-Samples/azure-spring-boot-samples.
- 설명서: Spring Cloud Azure.
Spring Cloud Azure 용도는 무엇인가요?
Spring Cloud Azure Spring 애플리케이션에서 다음 작업을 더 쉽게 수행할 수 있습니다.
- Azure App Configuration 사용하여 구성 속성을 관리합니다.
- Azure Event Hubs, Azure Service Bus 및 Azure Storage 큐 메시지를 보내고 받습니다.
- Azure Key Vault 사용하여 비밀 및 인증서 관리
- Microsoft Entra ID 프로비전된 회사 또는 학교 계정으로 사용자 로그인을 지원합니다.
- Azure Active Directory B2C Facebook 및 Google과 같은 소셜 계정으로 사용자 로그인을 지원합니다.
- 웹 API를 보호하고 Microsoft Graph 같은 보호된 API에 액세스하여 Microsoft Entra ID 및 Azure Active Directory B2C 사용하여 사용자 및 조직의 데이터를 사용합니다.
- 구조화된 데이터를 Azure Cosmos DB 저장합니다.
- 텍스트 또는 이진 데이터와 같은 구조화되지 않은 데이터를 Azure Blob Storage 저장합니다.
- Azure Files 파일을 저장합니다.
Spring Cloud Azure 사용의 이점
다음 섹션에서는 Spring Cloud Azure 사용하는 이점에 대해 설명합니다. 이 섹션에서는 Azure Key Vault 저장된 비밀 검색을 예로 사용합니다. 이 섹션에서는 Spring Boot 애플리케이션 개발과 Spring Cloud Azure 없는 경우의 차이점을 비교합니다.
Spring Cloud Azure 없는 경우
Spring Cloud Azure 없으면 Azure Key Vault 저장된 비밀을 검색하려면 다음 단계를 수행해야 합니다.
pom.xml 파일에 다음 종속성을 추가합니다.
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>다음 예제와 유사한 코드를 사용하여
SecretClient클래스 인스턴스를 생성합니다.public class DemoClass { public static void main(String... args) { SecretClient client = new SecretClientBuilder() .vaultUrl("vaultUrl") .credential(new ClientSecretCredentialBuilder() .tenantId("tenantId") .clientId("clientId") .clientSecret("clientSecret") .build()) .buildClient(); } }다음 예제와 같이 이러한 속성을 구성할 수 있도록 하여
client-id및client-secret같은 하드 코딩 정보를 방지합니다.@ConfigurationProperties("azure.keyvault") public class KeyVaultProperties { private String vaultUrl; private String tenantId; private String clientId; private String clientSecret; public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) { this.vaultUrl = vaultUrl; this.tenantId = tenantId; this.clientId = clientId; this.clientSecret = clientSecret; } public String getVaultUrl() { return vaultUrl; } public void setVaultUrl(String vaultUrl) { this.vaultUrl = vaultUrl; } public String getTenantId() { return tenantId; } public void setTenantId(String tenantId) { this.tenantId = tenantId; } public String getClientId() { return clientId; } public void setClientId(String clientId) { this.clientId = clientId; } public String getClientSecret() { return clientSecret; } public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } }다음 예제와 같이 애플리케이션 코드를 업데이트합니다.
@SpringBootApplication @EnableConfigurationProperties(KeyVaultProperties.class) public class SecretClientApplication implements CommandLineRunner { private KeyVaultProperties properties; public SecretClientApplication(KeyVaultProperties properties) { this.properties = properties; } public static void main(String[] args) { SpringApplication.run(SecretClientApplication.class, args); } @Override public void run(String... args) { SecretClient client = new SecretClientBuilder() .vaultUrl(properties.getVaultUrl()) .credential(new ClientSecretCredentialBuilder() .tenantId(properties.getTenantId()) .clientId(properties.getClientId()) .clientSecret(properties.getClientSecret()) .build()) .buildClient(); System.out.println("sampleProperty: " + client.getSecret("sampleProperty").getValue()); } }다음 예제와 같이 필요한 속성을 application.yml 파일에 추가합니다.
azure: keyvault: vault-url: tenant-id: client-id: client-secret:여러 위치에서
SecretClient을 사용해야 하는 경우SecretClient빈을 정의하세요. 그런 다음, 관련 위치에SecretClient를 자동으로 연결하십시오.
Spring Cloud Azure와 함께
Spring Cloud Azure 사용하여 Azure Key Vault 저장된 비밀을 검색하려는 경우 다음 단계와 같이 요구 사항이 더 간단합니다.
pom.xml 파일에 다음 종속성을 추가합니다.
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>다음 예제와 같이 BOM(청구서)을 사용하여 Spring Cloud Azure 버전을 관리합니다.
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
메모
Spring Boot 4.0.x를 사용 중이라면, spring-cloud-azure-dependencies 버전을 7.1.0로 설정해야 합니다.
Spring Boot 3.5.x를 사용하는 경우, spring-cloud-azure-dependencies 버전을 6.1.0로 설정해야 합니다.
Spring Boot 3.1.x-3.5.x를 사용하는 경우, spring-cloud-azure-dependencies 버전을 5.25.0로 설정해야 합니다.
Spring Boot 2.x를 사용하는 경우 spring-cloud-azure-dependencies 버전을 4.20.0로 설정해야 합니다.
이 BOM(자재 명세서)을 <dependencyManagement> 섹션의 pom.xml 파일에서 구성해야 합니다. 이렇게 하면 모든 Spring Cloud Azure 종속성이 동일한 버전을 사용하게 됩니다.
이 BOM에 사용되는 버전에 대한 자세한 내용은 스프링 클라우드 Azure 사용해야 하는 경우 참조하세요.
application.yml 파일에 다음 속성을 추가합니다.
spring: cloud: azure: keyvault: secret: endpoint:다음 명령을 사용하여 Azure CLI 로그인합니다. 그러면 자격 증명이 Azure CLI 제공되므로
client-id및client-secret같은 다른 자격 증명 정보를 추가할 필요가 없습니다.az login다음 예제에서 보이는 것처럼 관련된 위치에
SecretClient를 자동 배선하세요.@SpringBootApplication public class SecretClientApplication implements CommandLineRunner { private final SecretClient secretClient; public SecretClientApplication(SecretClient secretClient) { this.secretClient = secretClient; } public static void main(String[] args) { SpringApplication.run(SecretClientApplication.class, args); } @Override public void run(String... args) { System.out.println("sampleProperty: " + secretClient.getSecret("sampleProperty").getValue()); } }
Spring Cloud Azure 자동 구성된 SecretClient 외에 몇 가지 다른 기능을 제공합니다. 예를 들어 다음 예제와 같이 @Value 사용하여 비밀 값을 가져올 수 있습니다.
@SpringBootApplication
public class PropertySourceApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
public static void main(String[] args) {
SpringApplication.run(PropertySourceApplication.class, args);
}
public void run(String[] args) {
System.out.println("sampleProperty1: " + sampleProperty1);
}
}
Spring Cloud Azure 구성 요소
Azure 지원
Service Bus, 스토리지, Active Directory 등과 같은 Azure Services에 대한 자동 구성 지원을 제공합니다.
Microsoft Entra ID
인증을 위한 Microsoft Entra ID Spring Security에 대한 통합 지원을 제공합니다. 자세한 내용은 Spring Security용 Spring Cloud Azure 지원을 참조하세요.
Azure Key Vault
Azure Key Vault 비밀과의 통합을 위한 Spring @Value 주석 기능을 제공합니다. 자세한 내용은 Spring Cloud Azure 비밀 관리 참조하세요.
Azure Storage
Azure Storage 서비스에 대한 Spring Boot 지원을 제공합니다. 자세한 내용은 Spring Cloud Azure 리소스 처리 참조하세요.
지원 받기
Spring Cloud Azure 대한 지원이 필요한 경우 다음과 같은 방법으로 도움을 요청할 수 있습니다.
- Azure 지원 티켓을 만듭니다. Azure support 요금제 고객은 Azure support 티켓 열 수 있습니다. 문제에 즉각적인 주의가 필요한 경우 이 옵션을 사용하는 것이 좋습니다.
- GitHub 문제는 Azure/azure-sdk-for-java 리포지토리에 등록하세요. GitHub 문제를 사용하여 버그, 질문 및 기능 요청을 추적합니다. GitHub 문제는 무료이지만 응답 시간이 보장되지는 않습니다. 자세한 내용은 GitHub 문제 지원 프로세스 참조하세요.
다음 단계
- Tutorial: Spring Boot 애플리케이션에서 Azure Key Vault 비밀을 읽습니다
Spring Security 5 및 Microsoft Entra ID - Azure Cosmos DB의 NoSQL용 Spring Boot Starter를 사용하는 방법