Поделиться через


Руководство. Использование управляемого удостоверения для вызова Функций 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 и управление ими. Используйте следующую команду, чтобы создать группу ресурсов для хранения приложения-функции:

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 для доступа к приложению-функции.

  1. В портал Azure перейдите к группе ресурсов и откройте созданное приложение-функцию.
  2. В области навигации выберите "Проверка подлинности" , а затем выберите " Добавить поставщика удостоверений" на главной панели.
  3. На странице "Добавление поставщика удостоверений" выберите Майкрософт в раскрывающемся меню поставщика удостоверений.
  4. Выберите Добавить.
  5. Для параметров "Основы" на странице "Добавление поставщика удостоверений" задайте поддерживаемые типы учетных записей в любой каталог Microsoft Entra — multi-tenant.
  6. Задайте для неавторизованных запросов http 401 Неавторизованные запросы: рекомендуется для API. Этот параметр гарантирует, что все запросы, не прошедшие проверку подлинности, запрещены (ответ 401).
  7. Выберите Добавить.

После добавления параметров приложение-функция перезапускается, а все последующие запросы запрашиваются для входа с помощью идентификатора Microsoft Entra. Вы можете проверить, что запросы, не прошедшие проверку подлинности, в настоящее время отклоняются с помощью корневого URL-адреса приложения-функции (возвращается в hostNames выходных az functionapp create данных команды). Затем вы должны быть перенаправлены на экран входа в Microsoft Entra вашей организации.

Для последующего использования вам потребуется идентификатор приложения и URI идентификатора приложения. В портал Azure перейдите к созданному приложению-функции.

Чтобы получить идентификатор приложения, выберите проверку подлинности в области навигации и скопируйте значение идентификатора приложения (клиента) для поставщика удостоверений, включающего имя приложения-функции.

Снимок экрана: портал Azure с страницей проверки подлинности для приложения-функции с именем приложения-функции, выделенным в поставщике удостоверений.

Чтобы получить URI идентификатора приложения, выберите " Предоставить API " в области навигации и скопируйте значение URI идентификатора приложения.

Снимок экрана: портал Azure с выделенной страницей предоставления 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" для получения маркера доступа.

  1. Используйте следующую команду клонировать пример проекта:

    git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
    
  2. Используйте следующую команду, чтобы указать универсальный код ресурса (URI) функции и имя триггера в свойствах приложения:

    cd azure-spring-apps-samples/managed-identity-function
    vim src/main/resources/application.properties
    
  3. Чтобы использовать управляемое удостоверение для приложений 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>
    
  4. Чтобы упаковать пример приложения, используйте следующую команду:

    mvn clean package
    
  5. Используйте следующую команду, чтобы развернуть приложение в 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
    
  6. Чтобы протестировать приложение, используйте следующую команду, чтобы получить доступ к общедоступной конечной точке или тестовой конечной точке:

    curl https://<Azure-Spring-Apps-instance-name>-msiapp.azuremicroservices.io/func/springcloud
    

    Следующее сообщение возвращается в тексте ответа.

    Function Response: Hello, springcloud. This HTTP triggered function executed successfully.
    

Следующие шаги