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

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

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

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

  • Visual Studio
  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell

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

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

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

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

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

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

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

Примечание.

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

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 с помощью средств разработчика

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

  1. Перейдите к параметрам инструментов>, чтобы открыть диалоговое окно параметров.

  2. В поле "Параметры поиска" в верхней части введите Azure, чтобы отфильтровать доступные параметры.

  3. В разделе "Проверка подлинности службы Azure" выберите пункт "Выбор учетной записи".

  4. Выберите раскрывающееся меню в разделе "Выбор учетной записи" и выберите команду "Добавить учетную запись Майкрософт". Откроется окно с запросом на выбор учетной записи. Введите учетные данные для требуемой учетной записи Azure и выберите подтверждение.

    Снимок экрана: вход в Azure с помощью Visual Studio.

  5. Нажмите кнопку "ОК", чтобы закрыть диалоговое окно параметров.

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

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

Порядок и расположения, в которых DefaultAzureCredential поиск учетных данных найден в DefaultAzureCredential.

Чтобы использовать DefaultAzureCredential, добавьте Azure.Identity и при необходимости пакеты Microsoft.Extensions.Azure в приложение:

В выбранном терминале перейдите к каталогу проекта приложения и выполните следующие команды:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

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

  1. Azure.Identity Включите пространства имен и Microsoft.Extensions.Azure пространства имен с помощью using директив.
  2. Зарегистрируйте клиент службы Azure с помощью соответствующего Addметода расширения с префиксом.
  3. Передайте экземпляр DefaultAzureCredential UseCredential метода.

Например:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

UseCredential Альтернативой является создание экземпляра DefaultAzureCredential напрямую:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

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

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