Руководство. Использование управляемого удостоверения для вызова Функций Azure из приложения Azure Spring Apps
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к:✅ Basic/Standard ✅ Enterprise
В этой статье показано, как создать управляемое удостоверение для приложения, размещенного в Azure Spring Apps, и использовать его для вызова триггерных функций HTTP.
Обе Функции Azure и Служба приложений поддерживают проверку подлинности Microsoft Entra. Используя эту встроенную функцию проверки подлинности вместе с управляемыми удостоверениями для Azure Spring Apps, можно вызывать службы RESTful с помощью современной семантики OAuth. Этот метод не требует хранения секретов в коде и предоставляет более детализированные элементы управления доступом к внешним ресурсам.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Azure CLI версии 2.45.0 или более поздней.
- Git.
- Apache Maven версии 3.0 или более поздней.
- Установите Функции Azure Core Tools версии 4.x.
Создание или изменение группы ресурсов
Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими. Используйте следующую команду, чтобы создать группу ресурсов для хранения приложения-функции:
az group create --name <resource-group-name> --location <location>
Дополнительные сведения см. в команде az group create .
Создание приложения-функции
Чтобы создать приложение-функцию, необходимо сначала создать резервную учетную запись хранения. Вы можете использовать команду az storage account create .
Внимание
Каждое приложение-функция и учетная запись хранения должны иметь уникальное имя.
Чтобы создать учетную запись хранения, используйте следующую команду. Замените <function-app-name> именем> приложения-функции и <имя учетной записи хранения именем учетной записи хранения.
az storage account create \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--location <location> \
--sku Standard_LRS
После создания учетной записи хранения используйте следующую команду, чтобы создать приложение-функцию:
az functionapp create \
--resource-group <resource-group-name> \
--name <function-app-name> \
--consumption-plan-location <location> \
--os-type windows \
--runtime node \
--storage-account <storage-account-name> \
--functions-version 4
Запишите возвращаемое hostNames
значение, которое находится в формате https://<your-functionapp-name>.azurewebsites.net
. Используйте это значение в корневом URL-адресе приложения-функции для тестирования приложения-функции.
Включение проверки подлинности Microsoft Entra
Выполните следующие действия, чтобы включить проверку подлинности Microsoft Entra для доступа к приложению-функции.
- В портал Azure перейдите к группе ресурсов и откройте созданное приложение-функцию.
- В области навигации выберите "Проверка подлинности" , а затем выберите " Добавить поставщика удостоверений" на главной панели.
- На странице "Добавление поставщика удостоверений" выберите Майкрософт в раскрывающемся меню поставщика удостоверений.
- Выберите Добавить.
- Для параметров "Основы" на странице "Добавление поставщика удостоверений" задайте поддерживаемые типы учетных записей в любой каталог Microsoft Entra — multi-tenant.
- Задайте для неавторизованных запросов http 401 Неавторизованные запросы: рекомендуется для API. Этот параметр гарантирует, что все запросы, не прошедшие проверку подлинности, запрещены (ответ 401).
- Выберите Добавить.
После добавления параметров приложение-функция перезапускается, а все последующие запросы запрашиваются для входа с помощью идентификатора Microsoft Entra. Вы можете проверить, что запросы, не прошедшие проверку подлинности, в настоящее время отклоняются с помощью корневого URL-адреса приложения-функции (возвращается в hostNames
выходных az functionapp create
данных команды). Затем вы должны быть перенаправлены на экран входа в Microsoft Entra вашей организации.
Для последующего использования вам потребуется идентификатор приложения и URI идентификатора приложения. В портал Azure перейдите к созданному приложению-функции.
Чтобы получить идентификатор приложения, выберите проверку подлинности в области навигации и скопируйте значение идентификатора приложения (клиента) для поставщика удостоверений, включающего имя приложения-функции.
Чтобы получить URI идентификатора приложения, выберите " Предоставить API " в области навигации и скопируйте значение URI идентификатора приложения.
Создание функции, активируемой HTTP
В пустом локальном каталоге используйте следующие команды для создания нового приложения-функции и добавления триггерной функции HTTP:
func init --worker-runtime node
func new --template HttpTrigger --name HttpTrigger
По умолчанию функции используют проверку подлинности на основе ключей для защиты конечных точек HTTP. Чтобы включить проверку подлинности Microsoft Entra для защиты доступа к функциям, задайте authLevel
ключ anonymous
в файле function.json , как показано в следующем примере:
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
...
}
]
}
Дополнительные сведения см. в разделе "Безопасные конечные точки HTTP" в разделе "Защита Функции Azure".
Используйте следующую команду, чтобы опубликовать приложение в экземпляре, созданном на предыдущем шаге:
func azure functionapp publish <function-app-name>
Выходные данные команды публикации должны содержать URL-адрес созданной функции, как показано в следующих выходных данных:
Deployment completed successfully.
Syncing triggers...
Functions in <your-functionapp-name>:
HttpTrigger - [httpTrigger]
Invoke url: https://<function-app-name>.azurewebsites.net/api/httptrigger
Создание экземпляра и приложения службы Azure Spring Apps
Используйте следующие команды, чтобы добавить расширение spring и создать новый экземпляр Azure Spring Apps:
az extension add --upgrade --name spring
az spring create \
--resource-group <resource-group-name> \
--name <Azure-Spring-Apps-instance-name> \
--location <location>
Используйте следующую команду, чтобы создать приложение с именем msiapp
с управляемым удостоверением, назначаемым системой, в соответствии с запросом --assign-identity
параметра:
az spring app create \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name "msiapp" \
--assign-endpoint true \
--assign-identity
Создание примера приложения Spring Boot для вызова функции
Этот пример вызывает функцию, активированную HTTP, сначала запрашивая маркер доступа из конечной точки MSI и используя этот маркер для проверки подлинности HTTP-запроса функции. Дополнительные сведения см. в разделе "Получение маркера с помощью HTTP " раздела "Использование управляемых удостоверений для ресурсов Azure на виртуальной машине Azure" для получения маркера доступа.
Используйте следующую команду клонировать пример проекта:
git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
Используйте следующую команду, чтобы указать универсальный код ресурса (URI) функции и имя триггера в свойствах приложения:
cd azure-spring-apps-samples/managed-identity-function vim src/main/resources/application.properties
Чтобы использовать управляемое удостоверение для приложений Azure Spring Apps, добавьте следующие свойства со следующими значениями в src/main/resources/application.properties.
azure.function.uri=https://<function-app-name>.azurewebsites.net azure.function.triggerPath=httptrigger azure.function.application-id.uri=<function-app-application-ID-uri>
Чтобы упаковать пример приложения, используйте следующую команду:
mvn clean package
Используйте следующую команду, чтобы развернуть приложение в Azure Spring Apps:
az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name "msiapp" \ --artifact-path target/asc-managed-identity-function-sample-0.1.0.jar
Чтобы протестировать приложение, используйте следующую команду, чтобы получить доступ к общедоступной конечной точке или тестовой конечной точке:
curl https://<Azure-Spring-Apps-instance-name>-msiapp.azuremicroservices.io/func/springcloud
Следующее сообщение возвращается в тексте ответа.
Function Response: Hello, springcloud. This HTTP triggered function executed successfully.