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

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

A diagram showing how an app running in local developer will obtain the application service principal from a .env file and then use that identity to connect to Azure resources.

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

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

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

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

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

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

Instructions Снимок экрана
Перейдите на страницу Azure Active Directory в портал Azure, введя Azure Active Directory в поле поиска в верхней части страницы, а затем выберите Azure Active Directory из списка служб. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
На странице Azure Active Directory выберите группы в меню слева. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
На странице "Все группы" выберите "Создать группу". A screenshot showing the location of the New Group button in the All groups page.
На странице "Новая группа":
  1. Тип группы → Security
  2. Имя группы → Имя группы безопасности, которое обычно создается из имени приложения. Также полезно включить строку, например local-dev в имя группы, чтобы указать назначение группы.
  3. Описание группы → Описание цели группы.
  4. Выберите ссылку "Нет участников", выбранную в разделе "Участники", чтобы добавить участников в группу.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group
В диалоговом окне "Добавление элементов":
  1. Используйте поле поиска для фильтрации списка имен пользователей в списке.
  2. Выберите пользователей для локальной разработки для этого приложения. При выборе объектов они переместятся в список выбранных элементов в нижней части диалогового окна.
  3. По завершении нажмите кнопку "Выбрать ".
A screenshot of the Add members dialog box showing how to select developer accounts to be included in the group.
Вернитесь на страницу "Создать группу ", выберите "Создать ", чтобы создать группу.

Группа будет создана, и вы вернеесь на страницу "Все группы ". Для отображения группы может потребоваться до 30 секунд, и может потребоваться обновить страницу из-за кэширования в портал Azure.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

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

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

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

Перейдите к группе ресурсов, выбрав имя группы ресурсов в заголовке "Группы ресурсов" в диалоговом окне.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
На странице группы ресурсов выберите элемент управления доступом (IAM) в меню слева. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
На странице управления доступом (IAM):
  1. Выберите вкладку Назначения ролей.
  2. Выберите + Добавить в верхнем меню, а затем выберите Добавить назначение роли в появившемся раскрывающемся меню.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
На странице "Добавление назначения ролей" перечислены все роли, которые можно назначить для группы ресурсов.
  1. Используйте поле поиска, чтобы отфильтровать список до более управляемого размера. В этом примере показано, как фильтровать служба хранилища ролях BLOB-объектов.
  2. Выберите роль, которую вы хотите назначить.
Нажмите кнопку "Далее ", чтобы перейти к следующему экрану.
A screenshot showing how to filter and select role assignments to be added to the resource group.
На следующей странице "Добавление назначения ролей" можно указать, какой пользователь назначит роль.
  1. Выберите "Пользователь", "Группа" или "Субъект-служба" в разделе "Назначение доступа".
  2. Выбор и выбор элементов в разделе "Элементы"
Диалоговое окно откроется справа от портал Azure.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
В диалоговом окне выбора элементов:
  1. Текстовое поле Select можно использовать для фильтрации списка пользователей и групп в подписке. При необходимости введите первые несколько символов локальной группы разработки Azure AD, созданной для приложения.
  2. Выберите локальную группу разработки Azure AD, связанную с приложением.
Выберите в нижней части диалогового окна, чтобы продолжить.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
Теперь группа Azure AD будет отображаться как выбранная на экране добавления назначения ролей.

Выберите "Рецензирование" и " Назначить" , чтобы перейти на окончательную страницу, а затем проверить и назначить еще раз, чтобы завершить процесс.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3. Вход в Azure с помощью средств .NET

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

В верхнем меню Visual Studio перейдите к меню "Параметры инструментов>", чтобы открыть диалоговое окно параметров. В строке поиска в левом верхнем углу введите Azure , чтобы отфильтровать параметры. В разделе "Проверка подлинности службы Azure" выберите пункт "Выбор учетной записи".

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

A screenshot showing how to sign in to Azure using Visual Studio.

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

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

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

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

Откройте среду терминала в каталоге проекта приложения и введите следующую команду.

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

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

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

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

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

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

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

using Azure.Identity;

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

При запуске приведенного выше кода на локальной рабочей станции во время локальной разработки он будет выглядеть в переменных среды для субъекта-службы приложений или в Visual Studio, VS Code, Azure CLI или Azure PowerShell для набора учетных данных разработчика, который можно использовать для проверки подлинности приложения в ресурсах Azure во время локальной разработки.

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