Spring Cloud Azure란?

Spring Cloud Azure는 Spring 애플리케이션에서 Azure 서비스를 더 쉽게 사용할 수 있도록 하는 오픈 소스 프로젝트입니다.

Spring Cloud Azure는 모든 리소스를 공개적으로 사용할 수 있는 오픈 소스 프로젝트입니다. 다음 목록에서는 이러한 리소스에 대한 링크를 제공합니다.

Spring Cloud Azure의 용도는 무엇인가요?

Spring Cloud Azure를 사용하면 Spring 애플리케이션에서 다음 작업을 더 쉽게 수행할 수 있습니다.

다음 다이어그램에서는 이러한 기능에 대한 개요를 제공합니다.

Spring Cloud Azure 기능에 대한 개요를 제공하는 다이어그램

Spring Cloud Azure 사용의 이점

다음 섹션에서는 Spring Cloud Azure를 사용할 경우의 이점에 대해 설명합니다. 이 섹션에서는 Azure Key Vault에 저장된 비밀 검색을 예로 사용합니다. 이 섹션에서는 Spring Cloud Azure와 Spring Boot 애플리케이션 개발의 차이점을 비교합니다.

Spring Cloud Azure가 없는 경우

Spring Cloud Azure가 없으면 Azure Key Vault에 저장된 비밀을 검색하려면 다음 단계를 수행해야 합니다.

  1. pom.xml 파일에 다음 종속성을 추가합니다.

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. 다음 예제와 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();
        }
    }
    
  3. 다음 예제와 같이 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;
        }
    }
    
  4. 다음 예제와 같이 애플리케이션 코드를 업데이트합니다.

    @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());
        }
    }
    
  5. 다음 예제와 같이 필요한 속성을 application.yml 파일에 추가합니다.

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. 여러 위치에서 사용해야 SecretClient 하는 경우 콩을 SecretClient 정의합니다. 그런 다음 관련 위치에서 자동 연결 SecretClient 합니다.

Spring Cloud Azure를 사용하여

Spring Cloud Azure를 사용하면 Azure Key Vault에 저장된 비밀을 검색하려는 경우 다음 단계와 같이 요구 사항이 더 간단합니다.

  1. pom.xml 파일에 다음 종속성을 추가합니다.

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. 다음 예제와 같이 BOM(청구서)을 사용하여 Spring Cloud Azure 버전을 관리합니다.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.11.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    참고 항목

    Spring Boot 2.x를 사용하는 경우 버전을 .로 설정 spring-cloud-azure-dependencies 해야 합니다 4.17.0. 이 BOM(청구서)은 pom.xml 파일의 섹션에서 구성 <dependencyManagement> 해야 합니다. 이렇게 하면 모든 Spring Cloud Azure 종속성이 동일한 버전을 사용합니다. 이 BOM에 사용되는 버전에 대한 자세한 내용은 어떤 버전의 Spring Cloud Azure를 사용해야 하는지를 참조하세요.

  3. application.yml 파일에 다음 속성을 추가합니다.

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. 다음 명령을 사용하여 Azure CLI로 로그인합니다. 그러면 Azure CLI에서 자격 증명을 제공하므로 다음과 같은 client-idclient-secret다른 자격 증명 정보를 추가할 필요가 없습니다.

    az login
    
  5. 다음 예제와 같이 관련 위치에서 자동 연결 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 문제 지원 프로세스를 참조 하세요.

다음 단계