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


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

Во время локальной разработки приложения должны пройти проверку подлинности в Azure для доступа к различным службам Azure. Два распространенных подхода к локальной проверке подлинности — использование служебного принципала или учетной записи разработчика. В этой статье объясняется, как использовать учетную запись разработчика. В следующих разделах вы узнаете:

  • Использование групп Microsoft Entra для эффективного управления разрешениями для нескольких учетных записей разработчиков
  • Как назначить роли учетным записям разработчиков для определения области разрешений
  • Как войти в поддерживаемые локальные средства разработки
  • Проверка подлинности с помощью учетной записи разработчика из кода приложения

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

  • Azure CLI (Интерфейс командной строки для Azure)
  • Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
  • Azure PowerShell

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

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

Создание группы Microsoft Entra для локальной разработки

Создайте группу Microsoft Entra, чтобы инкапсулировать роли (разрешения), необходимые приложению в локальной разработке, а не назначать роли отдельным объектам субъекта-службы. Этот подход обеспечивает следующие преимущества:

  • Каждый разработчик имеет одинаковые роли, назначенные на уровне группы.
  • Если для приложения требуется новая роль, её необходимо добавить только в группу приложения.
  • Если новый разработчик вступает в команду, для него создается новый служебный принципал приложения и добавляется в группу, гарантируя, что разработчик имеет необходимые разрешения на работу с приложением.
  1. Перейдите на страницу обзора идентификатора Microsoft Entra на портале Azure.

  2. Выберите все группы в меню слева.

  3. На странице "Группы" выберите "Создать группу".

  4. На странице "Создать группу" заполните следующие поля формы:

    • Тип группы: выберите Безопасность.
    • Имя группы: введите имя группы, которая содержит ссылку на имя приложения или среды.
    • Описание группы: введите описание, объясняющее назначение группы.

    Снимок экрана: создание группы на портале Azure.

  5. Выберите ссылку "Нет участников", выбранную в разделе "Участники", чтобы добавить участников в группу.

  6. На открывшейся всплывающей панели найдите созданную ранее учетную запись службы и выберите её из отфильтрованных результатов. Нажмите кнопку "Выбрать " в нижней части панели, чтобы подтвердить выбор.

  7. Нажмите кнопку "Создать " в нижней части страницы "Создать группу ", чтобы создать группу и вернуться на страницу "Все группы ". Если вы не видите новую группу, подождите минуту и обновите страницу.

Назначьте роли группе

Затем определите, какие роли (разрешения) приложения требуются для ресурсов и назначьте эти роли созданной группе Microsoft Entra. Группы можно назначить роль в ресурсе, группе ресурсов или области подписки. В этом примере показано, как назначать роли в области группы ресурсов, так как большинство приложений группируют все свои ресурсы Azure в одну группу ресурсов.

  1. На портале Azure перейдите на страницу обзора группы ресурсов, содержащей приложение.

  2. Выберите управление доступом (IAM) на панели навигации слева.

  3. На странице управления доступом (IAM) выберите +Добавить , а затем выберите "Добавить назначение ролей " в раскрывающемся меню. Страница "Добавление назначения ролей " предоставляет несколько вкладок для настройки и назначения ролей.

  4. На вкладке "Роль" используйте поле поиска, чтобы найти роль, которую вы хотите назначить. Выберите роль и нажмите кнопку "Далее".

  5. На вкладке "Члены" :

    • Чтобы назначить доступ к значению , выберите "Пользователь", "Группа" или "Субъект-служба ".
    • Для значения "Члены" нажмите кнопку "Выбрать участников ", чтобы открыть панель всплывающего меню "Выбор участников ".
    • Найдите созданную ранее группу Microsoft Entra и выберите ее из отфильтрованных результатов. Выберите команду "Выбрать ", чтобы выбрать группу и закрыть панель всплывающего меню.
    • Выберите Обзор + Назначение внизу вкладки Члены.

    Снимок экрана, показывающий, как назначить роль группе Microsoft Entra.

  6. На вкладке "Обзор и назначение" выберите "Обзор и назначение" в нижней части страницы.

Вход в Azure с помощью средств разработчика

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

Разработчики могут использовать Azure CLI для проверки подлинности в идентификаторе Microsoft Entra. Приложения, использующие DefaultAzureCredential или AzureCliCredential могут использовать эту учетную запись для проверки подлинности запросов приложений при локальном запуске.

Чтобы выполнить проверку подлинности с помощью Azure CLI, выполните az login команду. В системе с веб-браузером по умолчанию Azure CLI запускает браузер для проверки подлинности пользователя.

az login

Для систем без веб-браузера по умолчанию команда az login использует поток проверки подлинности кода устройства. Пользователь также может принудительно использовать поток кода устройства, а не запустить браузер, указав аргумент --use-device-code.

az login --use-device-code

Проверка подлинности в службах Azure из приложения

Библиотека идентификации Azure предоставляет различные учетные данные — реализации TokenCredential адаптированных для поддержки различных сценариев и потоков аутентификации Microsoft Entra. На шаге выше показано, как использовать DefaultAzureCredential при работе с учетными записями пользователей локально.

Реализация кода

DefaultAzureCredential — это упорядоченная последовательность механизмов проверки подлинности в идентификаторе Microsoft Entra. Каждый механизм проверки подлинности является классом, производным от класса TokenCredential , и называется учетными данными. Во время выполнения DefaultAzureCredential пытается пройти проверку подлинности с помощью первых учетных данных. Если эти учетные данные не удается получить маркер доступа, выполняется попытка следующего учетных данных в последовательности и т. д., пока маркер доступа не будет успешно получен. Таким образом, приложение может использовать разные учетные данные в разных средах без написания кода для конкретной среды.

Чтобы использовать DefaultAzureCredential, добавьте пакет @azure/identity в ваше приложение. В выбранном терминале перейдите к каталогу проекта приложения и выполните следующую команду:

npm install @azure/identity

К службам Azure обращаются специализированные клиентские классы из различных клиентских библиотек Azure SDK. Эти классы и собственные пользовательские службы должны быть зарегистрированы, чтобы они могли быть доступны во всем приложении. Выполните следующие программные действия, чтобы создать клиентский класс и DefaultAzureCredential:

  1. @azure/identity Импортируйте пакет.
  2. Создайте клиент службы Azure и передайте в него новый экземпляр DefaultAzureCredential.
import { DefaultAzureCredential } from "@azure/identity";
import { SomeAzureServiceClient } from "@azure/arm-some-service";

const client = new SomeAzureServiceClient(new DefaultAzureCredential());