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

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

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

Чтобы приложение выполнило проверку подлинности в Azure во время локальной разработки с помощью учетных данных Azure разработчика, разработчик должен войти в Azure из расширения средств Azure Visual Studio Code, Azure CLI или Azure PowerShell. Пакет SDK Azure для JavaScript может обнаружить, что разработчик вошел из одного из этих средств, а затем получить необходимые учетные данные из кэша учетных данных для проверки подлинности приложения в Azure в качестве пользователя, вошедшего в систему.

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

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

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

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

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

Instructions Снимок экрана
Перейдите на страницу идентификатора Microsoft Entra в портал Azure, введя идентификатор Microsoft Entra в поле поиска в верхней части страницы, а затем выберите идентификатор Microsoft Entra из служб. Снимок экрана: использование верхней панели поиска в портал Azure для поиска и перехода на страницу идентификатора Microsoft Entra.
На странице идентификатора записи Майкрософт выберите группы в меню слева. Снимок экрана: расположение пункта меню
На странице "Все группы" выберите "Создать группу". Снимок экрана: расположение кнопки
На странице "Новая группа":
  1. Тип группы → Security.
  2. Имя группы → Имя группы безопасности, которое обычно создается из имени приложения. Также полезно включить строку, например local-dev в имя группы, чтобы указать назначение группы.
  3. Описание группы → Описание цели группы.
  4. Выберите ссылку "Нет участников", выбранную в разделе "Участники", чтобы добавить участников в группу.
Снимок экрана: создание новой группы Microsoft Entra. Выделено расположение ссылки для добавления участников в эту группу.
В диалоговом окне "Добавление элементов":
  1. Используйте поле поиска для фильтрации списка имен пользователей в списке.
  2. Выберите одного или нескольких пользователей для локальной разработки для этого приложения. При выборе объекта объект перемещается в список выбранных элементов в нижней части диалогового окна.
  3. По завершении нажмите кнопку "Выбрать ".
Снимок экрана: диалоговое окно
Вернитесь на страницу "Создать группу ", выберите "Создать ", чтобы создать группу.

Группа будет создана, и вы вернеесь на страницу "Все группы ". Для отображения группы может потребоваться до 30 секунд, и может потребоваться обновить страницу из-за кэширования в портал Azure.
Снимок экрана: страница

2. Назначение ролей группе Microsoft Entra

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

Instructions Снимок экрана
Найдите группу ресурсов для приложения, найдите имя группы ресурсов с помощью поля поиска в верхней части портал Azure.

Перейдите к группе ресурсов, выбрав имя группы ресурсов в заголовке "Группы ресурсов" в диалоговом окне.
Снимок экрана: использование верхнего поля поиска в портал Azure для поиска и перехода к группе ресурсов, которой требуется назначить роли (разрешения).
На странице группы ресурсов выберите элемент управления доступом (IAM) в меню слева. Снимок экрана: страница группы ресурсов с расположением элемента меню управления доступом (IAM).
На странице управления доступом (IAM):
  1. Выберите вкладку Назначения ролей.
  2. Выберите + Добавить в верхнем меню, а затем выберите Добавить назначение роли в появившемся раскрывающемся меню.
Снимок экрана: переход на вкладку назначений ролей и расположение кнопки, используемой для добавления назначений ролей в группу ресурсов.
На странице "Добавление назначения ролей" перечислены все роли, которые можно назначить для группы ресурсов.
  1. Используйте поле поиска, чтобы отфильтровать список до более управляемого размера. В этом примере показано, как фильтровать роли BLOB-объектов хранилища.
  2. Выберите роль, которую вы хотите назначить.
    Нажмите кнопку "Далее ", чтобы перейти к следующему экрану.
Снимок экрана: фильтрация и выбор назначений ролей для добавления в группу ресурсов.
На следующей странице "Добавление назначения ролей" можно указать, какой пользователь назначит роль.
  1. Выберите "Пользователь", "Группа" или "Субъект-служба" в разделе "Назначение доступа".
  2. Выбор и выбор элементов в разделе "Элементы"
Откроется диалоговое окно справа от портал Azure.
Снимок экрана: переключатель для назначения роли группе Microsoft Entra и ссылке, используемой для назначения роли.
В диалоговом окне выбора элементов:
  1. Текстовое поле Select можно использовать для фильтрации списка пользователей и групп в подписке. При необходимости введите первые несколько символов локальной группы Microsoft Entra, созданной для приложения.
  2. Выберите локальную группу Microsoft Entra, связанную с приложением.
Выберите в нижней части диалогового окна, чтобы продолжить.
Снимок экрана: фильтрация и выбор группы Microsoft Entra для приложения в диалоговом окне
Группа Microsoft Entra отображается на экране добавления назначения ролей.

Выберите "Рецензирование" и " Назначить" , чтобы перейти на окончательную страницу, а затем проверить и назначить еще раз, чтобы завершить процесс.
Снимок экрана, на котором показана завершенная страница

3. Вход в Azure с помощью VS Code, Azure CLI или Azure PowerShell

Откройте терминал на рабочей станции разработчика и войдите в Azure из Azure PowerShell.

Connect-AzAccount

4. Реализация DefaultAzureCredential в приложении

Для проверки подлинности клиентских объектов Пакета SDK Azure в Azure приложение должно использовать DefaultAzureCredential класс из @azure/identity пакета. В этом сценарии последовательно проверяет, DefaultAzureCredential выполнил ли разработчик вход в Azure с помощью расширения средств VS Code Azure, Azure CLI или Azure PowerShell. Если разработчик вошел в Azure с помощью любого из этих средств, учетные данные, используемые для входа в средство, будут использоваться приложением для проверки подлинности в Azure.

Начните с добавления пакета @azure/удостоверений в приложение.

npm install @azure/identity

Затем для любого кода JavaScript, создающего клиентский объект Пакета SDK Azure в приложении, вам потребуется:

  1. DefaultAzureCredential Импортируйте класс из @azure/identity модуля.
  2. Создание объекта DefaultAzureCredential.
  3. Передайте объект конструктору DefaultAzureCredential клиентского объекта пакета SDK Azure.

Пример этого показан в следующем сегменте кода.

import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';

// Acquire a credential object
const tokenCredential = DefaultAzureCredential();

const blobServiceClient = BlobServiceClient(
        `https://${accountName}.blob.core.windows.net`,
        tokenCredential
);

DefaultAzureCredential автоматически обнаруживает механизм проверки подлинности, настроенный для приложения, и получает необходимые маркеры для проверки подлинности приложения в Azure. Если приложение использует несколько клиентов ПАКЕТА SDK, то один и тот же объект учетных данных можно использовать с каждым клиентским объектом пакета SDK.