다음을 통해 공유


Spring Cloud Azure란?

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

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

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

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

  • Azure App Configuration사용하여 구성 속성 관리
  • Azure Event Hubs, Azure Service Bus, Azure Storage Queue메시지를 보내고 받습니다.
  • Azure Key Vault를 사용하여 비밀 및 인증서 관리.
  • microsoft Entra ID프로비전된 회사 또는 학교 계정으로 사용자 로그인을 지원합니다.
  • Azure Active Directory B2CFacebook 및 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에 저장된 비밀을 검색하려면 다음 단계를 수행해야 합니다.

  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-idclient-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.19.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    메모

    Spring Boot 2.x를 사용하는 경우 spring-cloud-azure-dependencies 버전을 4.19.0설정해야 합니다. 이 BOM(Bill of Material)은 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 키 볼트)

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 문제 지원 프로세스참조하세요.

다음 단계