Быстрый старт: Настройка Устойчивые функции с помощью управляемой идентификации

Этот быстрый старт показывает, как настроить приложение Устойчивые функции для использования идентификационных соединений либо для бэкенда Durable Task Scheduler, либо для провайдера служба хранилища Azure. Платформа Azure управляет управляемой идентичностью из Microsoft Entra ID — вам не нужно создавать или ротировать секреты.

Этот путь предполагает, что ваше приложение уже настроено на использование бэкенда Durable Task Scheduler. Если ваше приложение всё ещё использует провайдера служба хранилища Azure, выберите путь служба хранилища Azure в этой статье.

Содержание этой статьи

  • Настройка локальной разработки — использование Azurite или учетных данных разработчика для локального тестирования
  • подключения на основе удостоверения для приложения, развернутого в Azure — активация управляемого удостоверения и настройка функции приложения

Note

Управляемое удостоверение поддерживается в расширении Устойчивые функции версии 2.7.0 и больше.

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Необходимые условия

Чтобы завершить это краткое начальное руководство, вам требуется:

  • Существующий проект Устойчивые функции, созданный на портале Azure или локальном проекте Устойчивые функции, развернутом для Azure.
  • Знакомство с приложением Устойчивые функции в Azure.

Если у вас нет существующего проекта Устойчивые функции, развернутого в Azure, рекомендуется начать с одного из следующих кратких руководств:

Настройка локальной разработки

У вас есть два варианта для локальной разработки. Используйте локальный эмулятор Durable Task Scheduler для быстрого тестирования без учетных данных Azure. Если вам нужно протестировать подключения на основе удостоверений к рабочему ресурсу планировщика, используйте вместо этого учетные данные разработчика.

Вариант 1: использовать локальный эмулятор планировщика задач Durable

При локальной разработке используйте эмулятор Durable Task Scheduler, чтобы тестировать приложение без учетных данных Azure. Настройте настройки приложения так, чтобы указывать на эмулятор и используйте стандартный Task Hub.

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "DTS_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None",
    "TASKHUB_NAME": "default"
  }
}

Вариант 2: Подключения на основе идентификаций для локальной разработки

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

Когда вы используете учетные данные разработчика, соединение пытается получить токен из следующих точек в следующем порядке:

  1. локальный кэш, совместно используемый приложениями Майкрософт;
  2. Текущий контекст пользователя в Visual Studio
  3. Текущий контекст пользователя в Visual Studio Code
  4. Текущий контекст пользователя в Azure CLI

Если ни один из этих параметров не выполнен успешно, вы получите сообщение об ошибке, указывающее, что приложение не может получить маркер проверки подлинности. Убедитесь, что вы вошли в один из перечисленных инструментов с учётной записью, имеющей доступ к ресурсу планировщика.

Настройка среды выполнения для использования локального удостоверения разработчика

  1. В локальных настройках настройте конечную точку планировщика и используйте Authentication=DefaultAzure так, чтобы приложение использовало ваши учетные данные разработчика.

    {
      "IsEncrypted": false,
      "Values": {
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "DTS_CONNECTION_STRING": "Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=DefaultAzure",
        "TASKHUB_NAME": "<your-task-hub>"
      }
    }
    
  2. Назначьте удостоверению разработчика роль Durable Task Data Contributor для ресурса планировщика или в области конкретного концентратора задач.

Подключения на основе идентификации для приложения, развернутого в Azure

Активировать ресурс управляемого удостоверения

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

Назначьте роли доступа управляемому удостоверению

Перейдите к ресурсу планировщика в портале Azure и назначьте Durable Task Data Contributor роль управляемому идентификатору. Для доступа по принципу наименьших привилегий назначайте роль на уровне task hub, а не на уровне всего планировщика. Если вы используете идентификатор, назначенный пользователем, выберите Управляемый идентификатор, а затем + Выбрать участников.

Добавьте конфигурацию управляемой идентичности в ваше приложение

Прежде чем использовать управляемое удостоверение вашего приложения, внесите определённые изменения в параметры приложения:

  1. На портале Azure в меню ресурсов приложения-функции в разделе Settings выберите переменные Environment.

  2. Добавьте или обновите DTS_CONNECTION_STRING настройки, чтобы приложение подключалось к вашему планировщику с помощью управляемой идентификации приложения.

    Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity
    

    Если вы используете управляемую идентификацию, назначаемую пользователем, включите идентификатор клиента в строку подключения:

    Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>
    
  3. Добавьте или обновите TASKHUB_NAME параметр на то же имя хаба задач.

  4. Если вашему хосту Function требуется служба хранилища Azure для операций на уровне хоста, настройте AzureWebJobsStorage его отдельно. Серверная часть планировщика использует строку подключения DTS, а не AzureWebJobsStorage, для состояния Durable.

Проверка конфигурации

Чтобы подтвердить работу конфигурации управляемого удостоверения, выполните приведенные действия.

  1. В портале Azure перейдите к своему функциональному приложению и запустите оркестрацию Устойчивые функции.
  2. Убедитесь, что оркестрация успешно завершается, запросив конечную точку состояния или проверив вкладку "Монитор".
  3. Если вы видите ошибки проверки подлинности, убедитесь, что:
    • Управляемая идентичность играет Durable Task Data Contributor роль в ресурсе планировщика или в области области задачного центра.
    • Настройки DTS_CONNECTION_STRING и TASKHUB_NAME верны.
    • Приложение использует ожидаемую идентичность при работе в Azure.

Настройка локальной разработки

У вас есть два варианта для локальной разработки. Используйте Azurite для быстрого локального тестирования без Azure учетных данных. Если вам нужно протестировать подключения на основе идентификации против настоящей учетной записи служба хранилища Azure, используйте учетные данные разработчика.

Вариант 1. Использование эмулятора служба хранилища Azure

При разработке локально рекомендуется использовать Azurite, который является локальным эмулятором служба хранилища Azure. Настройте приложение в эмуляторе, указав "AzureWebJobsStorage": "UseDevelopmentStorage=true" в local.settings.json.

Вариант 2: Подключения на основе идентификаций для локальной разработки

Строго говоря, управляемое удостоверение доступно приложениям только при выполнении в Azure. Однако вы по-прежнему можете настроить локально запущенное приложение для использования идентификационных подключений, используя учетные записи разработчика для проверки подлинности в ресурсах Azure. Затем, при развертывании в Azure, приложение вместо этого будет использовать конфигурацию управляемого удостоверения.

При использовании учетных данных разработчика подключение пытается получить токен из следующих расположений в следующем порядке:

  1. локальный кэш, совместно используемый приложениями Майкрософт;
  2. Текущий контекст пользователя в Visual Studio
  3. Текущий контекст пользователя в Visual Studio Code
  4. Текущий контекст пользователя в Azure CLI

Если ни один из этих параметров не выполнен успешно, вы получите сообщение об ошибке, указывающее, что приложение не может получить маркер проверки подлинности. Убедитесь, что вы вошли в один из перечисленных средств с учетной записью, которая имеет доступ к вашей учетной записи служба хранилища Azure.

Настройка среды выполнения для использования локального удостоверения разработчика

  1. Укажите имя учетной записи служба хранилища Azure в local.settings.json, например:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Перейдите к ресурсу учетной записи служба хранилища Azure на портале Azure.

  3. Перейдите на вкладку контроль доступа (IAM) и выберите Add role assignment.

  4. Назначьте себя на каждую из следующих ролей. Для каждой роли выберите "+ Выберите участников" и найдите электронную почту, используемую для входа в Visual Studio, Visual Studio Code или Azure CLI.

    • Специалист по данным очереди хранения
    • Вкладчик данных хранилища BLOB
    • Сотрудник по работе с данными в таблицах хранилища

    Note

    Эти же три роли требуются для управляемой идентификации при развертывании в Azure. См. раздел "Назначение ролей доступа управляемому удостоверению".


    <c1><c0><>Снимок экрана, показывающий назначение ролей сотрудника по данным хранилища пользователю на странице управления доступом портала Azure.</sb0></c0></c1>

Подключения на основе идентификации для приложения, развернутого в Azure

Активировать ресурс управляемого удостоверения

Для начала активируйте управляемое удостоверение для приложения. Ваше функциональное приложение должно иметь либо системно назначаемое управляемое удостоверение, либо управляемое удостоверение, назначаемое пользователем. Чтобы включить управляемое удостоверение для функционального приложения и узнать больше о различиях между двумя типами удостоверений, ознакомьтесь с обзором управляемого удостоверения.

Назначьте роли доступа управляемому удостоверению

Перейдите к ресурсу служба хранилища Azure вашего приложения на портале Azure и назначьте три роли управления доступом на основе ролей (RBAC) ресурсу управляемого удостоверения:

  • Специалист по данным очереди хранения
  • Вкладчик данных хранилища BLOB
  • Сотрудник по работе с данными в таблицах хранилища

Чтобы найти ресурс удостоверений, выберите "Назначить доступ к управляемому удостоверению ", а затем + "Выбрать участников"

Скриншот назначения ролей доступа к хранилищу для управляемого удостоверения в портале Azure.

Добавьте конфигурацию управляемой идентичности в ваше приложение

Прежде чем использовать управляемое удостоверение вашего приложения, внесите определённые изменения в параметры приложения:

  1. На портале Azure в меню ресурсов приложения-функции в разделе Settings выберите переменные Environment.

  2. В списке параметров найдите AzureWebJobsStorage и щелкните значок "Удалить ". Скриншот переменной окружения AzureWebJobsStorage в настройках приложения-функции портала Azure.

  3. Добавьте параметр для связывания учетной записи хранения Azure с приложением.

    Используйте один из следующих методов в зависимости от облака, в котором работает ваше приложение:

    • Azure cloud. Если приложение выполняется в global Azure добавьте параметр AzureWebJobsStorage__accountName, определяющий имя учетной записи хранения Azure. Пример значения: mystorageaccount123.

    • Non-Azure cloud. Если приложение работает в облаке за пределами Azure, необходимо добавить следующие три параметра, чтобы предоставить определенные URI службы (или endpoints) учетной записи хранения вместо имени учетной записи хранения.

      • Название настройки: AzureWebJobsStorage__blobServiceUri

        Пример значения: https://mystorageaccount123.blob.core.windows.net/.

      • Название настройки: AzureWebJobsStorage__queueServiceUri

        Пример значения: https://mystorageaccount123.queue.core.windows.net/.

      • Название настройки: AzureWebJobsStorage__tableServiceUri

        Пример значения: https://mystorageaccount123.table.core.windows.net/.

    Значения этих переменных URI можно получить в информации учетной записи хранилища на вкладке "Конечные точки".

    Снимок экрана вкладки с конечными точками учетной записи хранения, показывающий URI служб BLOB-объектов, очередей и таблиц.

    Note

    Если вы используете Azure для государственных организаций или любое другое облако, отдельное от глобального Azure, необходимо использовать параметр, предоставляющий определенные URI службы, а не только имя учетной записи хранения. Дополнительные сведения об использовании служба хранилища Azure с Azure для государственных организаций см. в разделе Разработка с использованием API хранилища в Azure для государственных организаций.

  4. Завершите настройку управляемого удостоверения (не забудьте нажать кнопку "Применить" после внесения изменений в параметр):

    • Если вы используете назначаемое системой удостоверение, не вносите никаких других изменений.

    • Если вы используете удостоверение, назначаемое пользователем, добавьте следующие параметры в конфигурацию приложения:

      • AzureWebJobsStorage__credential, введите managed identity

      • AzureWebJobsStorage__clientId, получите это значение GUID из вашего управляемого идентификатора

    Снимок экрана: ресурс управляемого удостоверения, назначаемый пользователем, показывающий значение идентификатора клиента.

    Note

    Устойчивые функции не поддерживает managedIdentityResourceId при использовании удостоверения, назначаемого пользователем. Вместо этого используйте clientId.

Проверка конфигурации

Чтобы подтвердить работу конфигурации управляемого удостоверения, выполните приведенные действия.

  1. На портале Azure перейдите к вашему функциональному приложению и запустите оркестрацию ваших Устойчивые функции (например, с помощью функции HTTP-триггера).
  2. Убедитесь, что оркестрация успешно завершена, запрашивая конечную точку состояния или проверяя вкладку "Монитор ".
  3. Если вы видите ошибки проверки подлинности, убедитесь, что:
    • Все три роли участника хранилища данных назначены соответствующим идентичностям.
    • Настройка строки подключения AzureWebJobsStorage удалена.
    • Настройки AzureWebJobsStorage__accountName (или URI службы) верны.

Дальнейшие действия