Spring Cloud Azure란?
Spring Cloud Azure는 Spring 애플리케이션에서 Azure 서비스를 더 쉽게 사용할 수 있도록 하는 오픈 소스 프로젝트입니다.
Spring Cloud Azure는 모든 리소스를 공개적으로 사용할 수 있는 오픈 소스 프로젝트입니다. 다음 목록에서는 이러한 리소스에 대한 링크를 제공합니다.
- 소스 코드: Azure/azure-sdk-for-java.
- 샘플: Azure-Samples/azure-spring-boot-samples.
- 설명서: Spring Cloud Azure.
Spring Cloud Azure의 용도는 무엇인가요?
Spring Cloud Azure를 사용하면 Spring 애플리케이션에서 다음 작업을 더 쉽게 수행할 수 있습니다.
- Azure 앱 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 Cloud Azure와 Spring Boot 애플리케이션 개발의 차이점을 비교합니다.
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>5.18.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
참고 항목
Spring Boot 2.x를 사용하는 경우 버전을 .로 설정
spring-cloud-azure-dependencies
해야 합니다4.19.0
. 이 BOM(청구서)은 pom.xml 파일의 섹션에서 구성<dependencyManagement>
해야 합니다. 이렇게 하면 모든 Spring Cloud Azure 종속성이 동일한 버전을 사용합니다. 이 BOM에 사용되는 버전에 대한 자세한 내용은 어떤 버전의 Spring Cloud 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, Storage, Active Directory 등과 같은 Azure 서비스에 대한 자동 구성 지원을 제공합니다.
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 지원 플랜이 있는 고객은 Azure 지원 티켓을 열 수 있습니다. 문제에 즉각적인 주의가 필요한 경우 이 옵션을 사용하는 것이 좋습니다.
- Azure/azure-sdk-for-java 리포지토리의 GitHub 문제를 제출합니다. GitHub 문제를 사용하여 버그, 질문 및 기능 요청을 추적합니다. GitHub 문제는 무료이지만 응답 시간이 보장되지는 않습니다. 자세한 내용은 GitHub 문제 지원 프로세스를 참조 하세요.