Что такое Azure Spring Cloud?

Spring Cloud Azure — это открытый код проект, который упрощает использование служб Azure в приложениях Spring.

Spring Cloud Azure — это открытый код проект со всеми ресурсами, доступными для общественности. В следующем списке приведены ссылки на эти ресурсы:

Для чего используется Azure Spring Cloud?

Spring Cloud Azure помогает упростить выполнение следующих задач в приложениях Spring:

На следующей схеме представлен обзор этих функций.

Схема с общими сведениями о функциях Azure Spring Cloud.

Преимущества использования Spring Cloud Azure

В следующем разделе показаны преимущества использования Spring Cloud Azure. В этом разделе в качестве примера используется извлечение секретов, хранящихся в Azure Key Vault. В этом разделе сравниваются различия между разработкой приложения Spring Boot с Помощью и без Spring Cloud Azure.

Без Spring Cloud Azure

Если вы хотите получить секреты, хранящиеся в Azure Key Vault, без Spring Cloud Azure необходимо выполнить следующие действия.

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

    Примечание

    Если вы используете Spring Boot 3.x, обязательно задайте для параметра версию spring-cloud-azure-dependencies5.5.0значение . Дополнительные сведения о версии см. в spring-cloud-azure-dependencies статье Какая версия Spring Cloud Azure следует использовать.

  3. Добавьте следующие свойства в файл application.yml.

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Войдите с помощью Azure CLI с помощью следующей команды. Затем ваши учетные данные будут предоставлены с помощью Azure CLI, поэтому не нужно будет добавлять другие учетные данные, такие как client-id и client-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

Обеспечивает поддержку автоматической настройки для служб Azure, таких как служебная шина, хранилище, Active Directory и т. д.

Azure Active Directory

Предоставляет поддержку интеграции для Spring Security с Azure Active Directory для аутентификации. Дополнительные сведения см. в статье Spring Cloud поддержка Azure для Spring Security.

Azure Key Vault

Предоставляет поддержку заметок Spring @Value для интеграции с Секретами Key Vault Azure. Дополнительные сведения см. в статье Управление секретами Azure Spring Cloud.

Хранилище Azure

Spring Boot поддерживает службы хранилища Azure. Дополнительные сведения см. в статье Обработка ресурсов Azure в Spring Cloud.

Техническая поддержка

Если вам нужна поддержка Spring Cloud Azure, вы можете обратиться за помощью следующими способами:

Дальнейшие действия