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

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 и без Azure Spring Cloud.

Без 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

Если вы хотите получить секреты, хранящиеся в 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) для управления версией Azure Spring Cloud, как показано в следующем примере:

    <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) должен быть настроен в <dependencyManagement> разделе pom.xml файла. Это гарантирует, что все зависимости Azure Spring Cloud используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в статье "Какая версия 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 и т. д.

Microsoft Entra ID

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

Azure Key Vault

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

Хранилище Azure

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

Поддержка

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

  • Создайте поддержка Azure билеты. Клиенты с планом поддержка Azure могут открыть билет поддержка Azure. Мы рекомендуем этот вариант, если ваша проблема требует немедленного внимания.
  • Проблемы с файлом GitHub в репозитории Azure/azure-sdk-for-java. Мы используем проблемы GitHub для отслеживания ошибок, вопросов и запросов функций. Проблемы GitHub бесплатны, но время отклика не гарантируется. Дополнительные сведения см. в разделе о проблемах с GitHub.

Следующие шаги