Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Эта статья относится к: ❎ Basic/Standard ✅ Enterprise
В этом кратком руководстве показано, как безопасно загрузить секреты с помощью Azure Key Vault для приложений, использующих план Azure Spring Apps Enterprise.
Каждое приложение имеет свойства, которые подключают его к своей среде и вспомогательным службам. К этим службам относятся такие ресурсы, как базы данных, средства ведения журнала и мониторинга, платформы обмена сообщениями и т. д. Для каждого ресурса требуется способ поиска и доступа к нему, часто в виде URL-адресов и учетных данных. Эта информация часто защищена законом и должна храниться в секрете для защиты данных клиентов. В Azure Spring Apps можно настроить приложения для непосредственной загрузки этих секретов в память из Key Vault с помощью управляемых удостоверений и управления доступом на основе ролей Azure.
Предварительные требования
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Изучите и выполните раздел "Требования" плана Enterprise в Azure Marketplace.
- Azure CLI версии 2.45.0 или более поздней.
- Git.
- jq
-
Расширение плана Azure Spring Apps Enterprise. Используйте следующую команду, чтобы удалить предыдущие версии и установить последнее расширение плана Enterprise. Если вы ранее установили
spring-cloudрасширение, удалите его, чтобы избежать несоответствий конфигурации и версий.az extension add --upgrade --name spring az extension remove --name spring-cloud - Выполните шаги, описанные в следующих быстрых руководствах.
Создать Key Vault и хранить секреты
В следующих инструкциях описано, как создать Key Vault и безопасно сохранить секреты приложения.
Создайте переменные для хранения имен ресурсов с помощью следующих команд. Обязательно замените заполнители своими значениями.
Примечание.
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, например, управляемые удостоверения для безпарольных или безключевых подключений, не являются жизнеспособными. Для локальных операций на машине предпочтительнее использовать учетные записи пользователей для безпарольных или бесключевых подключений.
export RESOURCE_GROUP=<resource-group-name> export KEY_VAULT_NAME=<key-vault-name> export POSTGRES_SERVER_NAME=<postgres-server-name> export POSTGRES_USERNAME=<postgres-username> export POSTGRES_PASSWORD=<postgres-password> export REDIS_CACHE_NAME=<redis-cache-name> export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME=<Azure-Spring-Apps-service-instance-name>Используйте следующую команду, чтобы создать Key Vault для хранения секретов приложения:
az keyvault create \ --resource-group ${RESOURCE_GROUP} \ --name ${KEY_VAULT_NAME}Используйте следующую команду, чтобы сохранить полное имя сервера базы данных в Key Vault:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "POSTGRES-SERVER-NAME" \ --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"Используйте следующую команду, чтобы сохранить имя базы данных в Key Vault для приложения службы каталогов:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "CATALOG-DATABASE-NAME" \ --value "acmefit_catalog"Используйте следующие команды для хранения учетных данных для входа в базу данных в Key Vault:
Примечание.
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, например, управляемые удостоверения для безпарольных или безключевых подключений, не являются жизнеспособными. Для локальных операций на машине предпочтительнее использовать учетные записи пользователей для безпарольных или бесключевых подключений.
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "POSTGRES-LOGIN-NAME" \ --value "${POSTGRES_USERNAME}" az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "POSTGRES-LOGIN-PASSWORD" \ --value "${POSTGRES_PASSWORD}"Используйте следующую команду, чтобы сохранить строку подключения базы данных в Key Vault для приложения сервиса заказов.
Примечание.
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, например, управляемые удостоверения для безпарольных или безключевых подключений, не являются жизнеспособными. Для локальных операций на машине предпочтительнее использовать учетные записи пользователей для безпарольных или бесключевых подключений.
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "ConnectionStrings--OrderContext" \ --value "Server=${POSTGRES_SERVER_NAME};Database=acmefit_order;Port=5432;Ssl Mode=Require;User Id=${POSTGRES_USERNAME};Password=${POSTGRES_PASSWORD};"Используйте следующие команды, чтобы получить свойства подключения Redis и сохранить их в Key Vault:
Примечание.
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, например, управляемые удостоверения для безпарольных или безключевых подключений, не являются жизнеспособными. Для локальных операций на машине предпочтительнее использовать учетные записи пользователей для безпарольных или бесключевых подключений.
export REDIS_HOST=$(az redis show \ --resource-group ${RESOURCE_GROUP} \ --name ${REDIS_CACHE_NAME} | jq -r '.hostName') export REDIS_PORT=$(az redis show \ --resource-group ${RESOURCE_GROUP} \ --name ${REDIS_CACHE_NAME} | jq -r '.sslPort') export REDIS_PRIMARY_KEY=$(az redis list-keys \ --resource-group ${RESOURCE_GROUP} \ --name ${REDIS_CACHE_NAME} | jq -r '.primaryKey') az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "CART-REDIS-CONNECTION-STRING" \ --value "rediss://:${REDIS_PRIMARY_KEY}@${REDIS_HOST}:${REDIS_PORT}/0"Если вы настроили единый вход, используйте следующую команду, чтобы сохранить URI ключа JSON Web Key (JWK) в Key Vault.
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "SSO-PROVIDER-JWK-URI" \ --value <jwk-uri>
Предоставление приложениям доступа к секретам в Key Vault
В следующих инструкциях описывается предоставление доступа к секретам Key Vault для приложений, развернутых в плане Azure Spring Apps Enterprise.
Используйте следующую команду, чтобы включить назначенное системой удостоверение для приложения службы корзины:
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}Используйте следующие команды, чтобы задать политику
get listдоступа в Key Vault для приложения службы корзины:export CART_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${CART_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get listИспользуйте следующую команду, чтобы включить системно назначенное удостоверение для приложения службы заказов.
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}Используйте следующие команды, чтобы задать политику
get listдоступа в Key Vault для приложения службы заказов:export ORDER_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${ORDER_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get listИспользуйте следующую команду, чтобы включить системно назначенное удостоверение для приложения службы каталога.
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}Используйте следующие команды, чтобы задать политику
get listдоступа в Key Vault для приложения службы каталогов:export CATALOG_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${CATALOG_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get listЕсли вы настроили единый вход, используйте следующую команду, чтобы включить удостоверение, назначенное системой для приложения службы удостоверений:
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name identity-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}Если вы настроили единый вход, используйте следующие команды, чтобы задать политику
get listдоступа в Key Vault для приложения службы удостоверений:export IDENTITY_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name identity-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${IDENTITY_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get list
Обновление приложений для загрузки секретов Key Vault
После предоставления доступа к секретам из Key Vault выполните следующие действия, чтобы обновить приложения для использования новых значений секретов в их конфигурациях.
Используйте следующую команду, чтобы получить универсальный код ресурса (URI) для Key Vault, который будет использоваться в обновлениях приложений:
export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')Используйте следующую команду, чтобы получить URL-адрес для Spring Cloud Gateway, который будет использоваться в обновлениях приложений:
export GATEWAY_URL=$(az spring gateway show \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')Используйте следующую команду, чтобы удалить привязку Service Connector у приложения Order Service и Azure Database for PostgreSQL Flexible Server.
az spring connection delete \ --resource-group ${RESOURCE_GROUP} \ --app order-service \ --connection order_service_db \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --deployment default \ --yesИспользуйте следующую команду, чтобы обновить среду Order Service с URI для доступа к Key Vault.
Примечание.
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, например, управляемые удостоверения для безпарольных или безключевых подключений, не являются жизнеспособными. Для локальных операций на машине предпочтительнее использовать учетные записи пользователей для безпарольных или бесключевых подключений.
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --env "ConnectionStrings__KeyVaultUri=${KEYVAULT_URI}" "AcmeServiceSettings__AuthUrl=https://${GATEWAY_URL}" "DatabaseProvider=Postgres"Используйте следующую команду, чтобы удалить связь между приложением службы каталога и гибким сервером базы данных Azure для PostgreSQL.
az spring connection delete \ --resource-group ${RESOURCE_GROUP} \ --app catalog-service \ --connection catalog_service_db \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --deployment default \ --yesИспользуйте следующую команду, чтобы обновить среду службы каталогов и шаблон конфигурации для доступа к Key Vault:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --config-file-pattern catalog/default,catalog/key-vault \ --env "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_ENDPOINT=${KEYVAULT_URI}" "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_NAME='acme-fitness-store-vault'" "SPRING_PROFILES_ACTIVE=default,key-vault"Используйте следующую команду, чтобы удалить привязку соединителя службы к приложению службы корзины и Кэш Azure для Redis:
az spring connection delete \ --resource-group ${RESOURCE_GROUP} \ --app cart-service \ --connection cart_service_cache \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --deployment default \ --yesЧтобы обновить среду службы корзины, используйте следующую команду, чтобы получить доступ к Key Vault:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --env "CART_PORT=8080" "KEYVAULT_URI=${KEYVAULT_URI}" "AUTH_URL=https://${GATEWAY_URL}"Если вы настроили единый вход, используйте следующую команду, чтобы обновить среду службы удостоверений и шаблон конфигурации для доступа к Key Vault:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name identity-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --config-file-pattern identity/default,identity/key-vault \ --env "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_ENDPOINT=${KEYVAULT_URI}" "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_NAME='acme-fitness-store-vault'" "SPRING_PROFILES_ACTIVE=default,key-vault"Чтобы получить URL-адрес Шлюза Spring Cloud, используйте следующие команды:
export GATEWAY_URL=$(az spring gateway show \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url') echo "https://${GATEWAY_URL}"Вы можете открыть выходной URL-адрес в браузере, чтобы изучить обновленное приложение.
Очистка ресурсов
Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующие команды:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Следующие шаги
Перейдите к любому из следующих необязательных кратких руководств: