Что такое Spring Cloud Azure?
Spring Cloud Azure — это проект с открытым исходным кодом, который упрощает использование служб Azure
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 App Configuration.
- Отправка и получение сообщений с Центрами событий Azure, Шиной Сервисов Azure, и Очередью Хранилища Azure.
- Управление секретами и сертификатами с помощью Azure Key Vault.
- Поддержка входа для пользователей, использующих рабочие или учебные учетные записи, настроенные с идентификатором Microsoft Entra ID.
- Поддержка входа пользователей с помощью социальных аккаунтов, таких как Facebook и Google, через Azure Active Directory B2C .
- Защита веб-API и доступ к защищенным API, таким как Microsoft Graph, для работы с данными пользователей и организации с помощью идентификатора Microsoft Entra id и Azure Active Directory B2C.
- Хранение структурированных данных с помощью Azure Cosmos DB.
- Хранение неструктурированных данных, таких как текстовые или двоичные данные, с помощью хранилища BLOB-объектов Azure.
- Хранение файлов в файловой системе Azure .
Преимущества использования Spring Cloud Azure
В следующем разделе показаны преимущества использования Spring Cloud Azure. В этом разделе в качестве примера используется извлечение секретов, хранящихся в Azure Key Vault. В этом разделе сравниваются различия между разработкой приложения Spring Boot и без Azure Spring Cloud.
Без Spring Cloud Azure
Без Spring Cloud Azure, если вы хотите получить секреты, хранящиеся в Azure Key Vault, необходимо выполнить следующие действия.
Добавьте следующие зависимости в файл 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) для управления версией Azure Spring Cloud, как показано в следующем примере:
<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) должен быть настроен в разделе<dependencyManagement>
файла pom.xml. Это гарантирует, что все зависимости Spring Cloud Azure используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в "Какую версию 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 и т. д.
Идентификатор Microsoft Entra
Предоставляет поддержку интеграции Spring Security с идентификатором Microsoft Entra для проверки подлинности. Для получения дополнительной информации обратитесь к статье Поддержка Azure Spring Cloud для 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 .