Что такое Azure Spring Cloud?
Spring Cloud Azure — это открытый код проект, который упрощает использование служб Azure в приложениях Spring.
Spring Cloud Azure — это открытый код проект со всеми ресурсами, доступными для общественности. В следующем списке приведены ссылки на эти ресурсы:
- Исходный код: Azure/azure-sdk-for-java.
- Примеры: Azure-Samples/azure-spring-boot-samples.
- Документация: Spring Cloud Azure.
Для чего используется Azure Spring Cloud?
Spring Cloud Azure помогает упростить выполнение следующих задач в приложениях Spring:
- Управление свойствами конфигурации с помощью Конфигурация приложений Azure.
- Отправка и получение сообщений с помощью Центры событий Azure, Служебная шина Azure и очереди службы хранилища Azure.
- Управление секретами и сертификатами с помощью Azure Key Vault.
- Поддержка входа пользователей с помощью рабочих или учебных учетных записей, подготовленных с помощью Azure Active Directory.
- Поддержка входа пользователей с помощью учетных записей социальных сетей, таких как Facebook и Google, с помощью Azure Active Directory B2C.
- Защита веб-API и доступ к защищенным API, таким как Microsoft Graph, для работы с данными пользователей и организации с помощью Azure Active Directory и Azure Active Directory B2C.
- Хранение структурированных данных с помощью Azure Cosmos DB.
- Хранение неструктурированных данных, таких как текстовые или двоичные данные, с помощью Хранилище BLOB-объектов Azure.
- Хранение файлов с помощью Файлы Azure.
На следующей схеме представлен обзор этих функций.
Преимущества использования Spring Cloud Azure
В следующем разделе показаны преимущества использования Spring Cloud Azure. В этом разделе в качестве примера используется извлечение секретов, хранящихся в Azure Key Vault. В этом разделе сравниваются различия между разработкой приложения Spring Boot с Помощью и без Spring Cloud Azure.
Без Spring Cloud Azure
Если вы хотите получить секреты, хранящиеся в Azure Key Vault, без Spring Cloud Azure необходимо выполнить следующие действия.
Добавьте следующие зависимости в файл 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>4.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Примечание
Если вы используете Spring Boot 3.x, обязательно задайте для параметра версию
spring-cloud-azure-dependencies
5.5.0
значение . Дополнительные сведения о версии см. вspring-cloud-azure-dependencies
статье Какая версия 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
Обеспечивает поддержку автоматической настройки для служб 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, вы можете обратиться за помощью следующими способами:
- Создание поддержка Azure билетов. Клиенты с планом поддержка Azure могут открыть поддержка Azure билет. Мы рекомендуем этот вариант, если проблема требует немедленного внимания.
- Сведения о проблемах с GitHub в репозитории Azure/azure-sdk-for-java. Мы используем проблемы GitHub для отслеживания ошибок, вопросов и запросов функций. Проблемы с GitHub предоставляются бесплатно, но время отклика не гарантируется. Дополнительные сведения см. в разделе Процесс поддержки проблем GitHub.