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


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

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

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

A diagram showing an app running in local development using a developer tool identity to connect to Azure resources.Схема, демонстрирующая приложение, запускаемое в локальной среде разработки, с использованием удостоверения средства разработчика для подключения к ресурсам Azure.

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

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

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

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

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

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

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

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

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

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

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

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

  5. Чтобы добавить участников в группу, выберите ссылку «Нет выбранных участников» под разделом «Участники».

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

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

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

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

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

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

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

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

  5. На вкладке членов:

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

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

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

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

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

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

Разработчики, использующие Visual Studio 2017 или более поздней версии, могут пройти проверку подлинности с помощью учетной записи разработчика через интегрированную среду разработки. Приложения, использующие DefaultAzureCredential или VisualStudioCredential, могут обнаруживать и использовать эту учетную запись для проверки подлинности запросов приложений при локальном запуске. Эта учетная запись также используется при публикации приложений непосредственно из Visual Studio в Azure.

Это важно

Вам потребуется установить рабочую нагрузку разработки Azure, чтобы включить средства Visual Studio для проверки подлинности, разработки и развертывания Azure.

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

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

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

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

  5. В открывавшемся окне введите учетные данные для нужной учетной записи Azure и подтвердите входные данные.

    Снимок экрана, показывающий, как войти в Azure с помощью Visual Studio.

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

Авторизация в службах Azure из вашего приложения

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

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

DefaultAzureCredential — это упорядоченная последовательность предпочитаемых механизмов для аутентификации в службе Microsoft Entra ID. Каждый механизм проверки подлинности является классом, производным от класса TokenCredential, и называется учетные данные. Во время выполнения 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.
builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));

    clientBuilder.UseCredential(new DefaultAzureCredential());
});

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

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