Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Планы "Базовый", "Стандартный" и "Корпоративный" вступили в пенсионный период 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Эта статья относится к:✅ Java ❎ C#
В этой статье показано, как создать управляемое удостоверение, назначаемое системой или назначаемое пользователем, для приложения, развернутого в Azure Spring Apps, и использовать его для доступа к Azure Key Vault.
Azure Key Vault можно использовать для безопасного хранения и жесткого контроля доступа к маркерам, паролям, сертификатам, ключам API и другим секретам приложения. Вы можете создать управляемое удостоверение в идентификаторе Microsoft Entra и пройти проверку подлинности в любой службе, поддерживающей проверку подлинности Microsoft Entra, включая Key Vault, без необходимости отображать учетные данные в коде.
В следующем видео описывается управление секретами с помощью Azure Key Vault.
Prerequisites
- Подписка Azure. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Если вы развертываете экземпляр плана Azure Spring Apps Enterprise впервые в целевой подписке, см. раздел "Требования" плана Enterprise в Azure Marketplace.
- Azure CLI версии 2.55.0 или более поздней.
- Подписка Azure. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Azure CLI версии 2.55.0 или более поздней.
Укажите имена для каждого ресурса
Создайте переменные для хранения имен ресурсов с помощью следующих команд. Обязательно замените шаблонные элементы вашими значениями.
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP=springapp-system
export KEY_VAULT=<your-keyvault-name>
Создайте группу ресурсов
Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. Создайте группу ресурсов, чтобы содержать Key Vault и Spring Cloud с помощью команды az group create , как показано в следующем примере:
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
Настройте ваш Key Vault
Чтобы создать Key Vault, используйте команду az keyvault create , как показано в следующем примере:
Important
Каждый Key Vault должен иметь уникальное имя.
az keyvault create \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT}
Используйте следующую команду, чтобы отобразить URL-адрес приложения, а затем запишите возвращенный URL-адрес, который находится в формате https://${KEY_VAULT}.vault.azure.net. Используйте это значение на следующем шаге.
az keyvault show \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT} \
--query properties.vaultUri --output tsv
Теперь вы можете поместить секрет в Key Vault с помощью команды az keyvault secret set , как показано в следующем примере:
az keyvault secret set \
--vault-name ${KEY_VAULT} \
--name "connectionString" \
--value "jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;"
Создание службы и приложения Azure Spring Apps
После установки всех соответствующих расширений используйте следующую команду, чтобы создать экземпляр Azure Spring Apps:
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--sku Enterprise \
--name ${SPRING_APPS}
В следующем примере создается приложение с назначенным системой управляемым удостоверением, как указано в параметре --system-assigned.
az spring app create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--assign-endpoint true \
--system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--query identity.principalId --output tsv)
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--name ${SPRING_APPS}
В следующем примере создается приложение springapp с системой назначаемым управляемым удостоверением, как указано в параметре --system-assigned.
az spring app create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--assign-endpoint true \
--runtime-version Java_17 \
--system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--query identity.principalId --output tsv)
Предоставление приложению доступа к Key Vault
Используйте следующую команду, чтобы предоставить надлежащий доступ в Key Vault для приложения:
az keyvault set-policy \
--name ${KEY_VAULT} \
--object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} \
--secret-permissions set get list
Note
Для управляемого удостоверения, назначаемого системой, используйте az keyvault delete-policy --name ${KEY_VAULT} --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} для удаления доступа для приложения после отключения управляемого удостоверения, назначаемого системой.
Создание примера приложения Spring Boot с помощью начального средства Spring Boot
Это приложение имеет доступ к получению секретов из Azure Key Vault. Используйте начальный модуль Azure Key Vault Secrets Starter для Spring Boot. Azure Key Vault добавляется в качестве экземпляра Spring PropertySource. К секретам, хранящимся в Azure Key Vault, можно легко получить доступ и использовать как любое внешнее свойство конфигурации, например свойства в файлах.
Используйте следующую команду, чтобы создать пример проекта с
start.spring.ioпомощью Azure Key Vault Spring Starter.curl https://start.spring.io/starter.tgz -d dependencies=web,azure-keyvault -d baseDir=springapp -d bootVersion=3.2.1 -d javaVersion=17 -d type=maven-project | tar -xzvf -Укажите Key Vault в приложении.
cd springapp vim src/main/resources/application.propertiesЧтобы использовать управляемое удостоверение для приложения, развернутого в Azure Spring Apps, добавьте свойства со следующим содержимым в файл src/main/resources/application.properties .
spring.cloud.azure.keyvault.secret.property-sources[0].endpoint=<your-keyvault-url> spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled=trueNote
Необходимо добавить URL-адрес хранилища ключей в файл application.properties , как показано ранее. В противном случае URL-адрес хранилища ключей может не быть записан во время выполнения.
Обновите src/main/java/com/example/demo/DemoApplication.java с помощью следующего примера кода. Этот код извлекает строку подключения из Key Vault.
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication implements CommandLineRunner { @Value("${connectionString}") private String connectionString; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("get") public String get() { return connectionString; } public void run(String... args) throws Exception { System.out.println(String.format("\nConnection String stored in Azure Key Vault:\n%s\n",connectionString)); } }Если открыть файлpom.xml , можно увидеть
spring-cloud-azure-starter-keyvaultзависимость, как показано в следующем примере:<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault</artifactId> </dependency>
Используйте следующую команду для развертывания приложения в Azure Spring Apps:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path
Используйте следующую команду для развертывания приложения в Azure Spring Apps:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path \ --build-env BP_JVM_VERSION=17
Чтобы протестировать приложение, перейдите к общедоступной конечной точке или тестовой конечной точке с помощью следующей команды:
curl https://${SPRING_APPS}-${APP}.azuremicroservices.io/getСледующее сообщение возвращается в тексте ответа:
jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;
Очистите ресурсы
Используйте следующую команду, чтобы удалить всю группу ресурсов, включая только что созданный экземпляр службы:
az group delete --name ${RESOURCE_GROUP} --yes
Дальнейшие шаги
- Как получить доступ к BLOB-объекту хранилища с управляемым удостоверением в Azure Spring Apps
- Включение системного управляемого удостоверения для приложений в Azure Spring Apps
- Что такое управляемые идентификации для ресурсов Azure?
- Проверка подлинности Azure Spring Apps с помощью Key Vault в GitHub Actions