Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Во время локальной разработки приложения должны пройти проверку подлинности в Azure для доступа к различным службам Azure. Два распространённых подхода к локальной проверке подлинности — использовать учётную запись разработчика или служебную учётную запись. В этой статье объясняется, как использовать учетную запись службы приложения. В следующих разделах вы узнаете:
- Регистрация приложения в Microsoft Entra для создания субъекта-службы
- Использование групп Microsoft Entra для эффективного управления разрешениями
- Назначение ролей для разрешений области действия.
- Аутентификация с помощью учетной записи службы из кода приложения
Использование выделенных субъектов-служб приложений позволяет придерживаться принципа наименьших привилегий при доступе к ресурсам Azure. Разрешения ограничены определенными требованиями приложения во время разработки, предотвращая случайный доступ к ресурсам Azure, предназначенным для других приложений или служб. Этот подход также помогает избежать проблем при перемещении приложения в рабочую среду, гарантируя, что оно не имеет избыточных привилегий в среде разработки.
Диаграмма, показывающая, как локальное приложение .NET использует учетные данные разработчика для подключения к Azure с помощью локально установленных средств разработки.
При регистрации приложения в Azure создается основной объект службы приложения. Для локальной разработки:
- Создайте отдельную регистрацию приложения для каждого разработчика, работающего над приложением, чтобы гарантировать, что у каждого разработчика есть собственный служебный объект приложения, и избежать необходимости делиться учетными данными.
- Создайте отдельную регистрацию приложения для каждого приложения, чтобы ограничить разрешения приложения только тем, что необходимо.
Во время локальной разработки переменные среды устанавливаются с использованием идентификатора сервисного принципала приложения. Библиотека удостоверений Azure считывает эти переменные среды для аутентификации приложения к необходимым ресурсам Azure.
Регистрация приложения в Azure
Объекты службы приложений создаются посредством регистрации приложений в Azure с использованием портала Azure или интерфейса командной строки Azure (Azure CLI).
- Портал Azure
- Azure CLI
На портале Azure перейдите на страницу регистрации приложений с помощью панели поиска.
На странице Регистрация приложений нажмите кнопку + Новая регистрация.
На странице Зарегистрировать приложение:
- В поле Имя введите описательное значение, включающее имя приложения и целевую среду.
- Для поддерживаемых типов учетных записейвыберите учетные записи только в этом каталоге организации (только клиент Майкрософт — один клиент)или любой вариант, который лучше всего соответствует вашим требованиям.
Выберите Регистрация, чтобы зарегистрировать приложение и создать служебный принципал.
На странице регистрации приложений скопируйте идентификатор приложения (клиента) и идентификатор каталога (клиента) и вставьте их во временное расположение для последующего использования в конфигурациях кода приложения.
Выберите Добавить сертификат или секрет, чтобы установить учетные данные для приложения.
На странице "Сертификаты и секреты" выберите "+ Новый секрет клиента".
На панели, открывающейся для добавления секрета клиента, выполните следующие действия:
- Для описаниявведите значение Current.
- Для значения «срок действия», оставьте рекомендуемое значение по умолчанию — 180 дней.
- Нажмите кнопку "Добавить ", чтобы добавить секрет.
На странице сертификатов & секретов скопируйте свойство значения секрета клиента для использования в следующем шаге.
Заметка
Значение секрета клиента отображается только один раз после создания регистрации приложения. Вы можете добавить дополнительные секреты клиента, не отменив этот секрет клиента, но невозможно снова отобразить это значение.
Создание группы Microsoft Entra для локальной разработки
Создайте группу Microsoft Entra, чтобы инкапсулировать роли (разрешения), необходимые приложению в локальной разработке, а не назначать роли отдельным объектам субъекта-службы. Этот подход обеспечивает следующие преимущества:
- Каждый разработчик имеет одинаковые роли, назначенные на уровне группы.
- Если приложению нужна новая роль, ее нужно добавить только в группу этого приложения.
- Если новый разработчик присоединяется к команде, для разработчика создается новая учетная запись службы приложений и добавляется в группу, гарантируя, что разработчик имеет необходимые разрешения на работу с приложением.
- Портал Azure
- Azure CLI
Перейдите на страницу обзора идентификатора Microsoft Entra на портале Azure.
Выберите Все группы в левом меню.
На странице Группы выберите Создать группу.
На странице Новая группа заполните следующие поля формы:
- Тип группы: Выберите безопасность .
- имя группы: введите имя группы, которая содержит ссылку на имя приложения или среды.
- описание группы: введите описание, объясняющее назначение группы.
Выберите ссылку "Нет участников" в разделе "Участники", чтобы добавить участников в группу.
На открывшейся всплывающей панели найдите созданную ранее основную служебную учетную запись и выберите её из результатов фильтрации. Нажмите кнопку Выбрать в нижней части панели, чтобы подтвердить выбор.
Выберите Создать в нижней части страницы Новая группа, чтобы создать группу и вернуться на страницу Все группы. Если вы не видите новую группу, подождите минуту и обновите страницу.
Назначьте роли группе
Затем определите, какие роли (разрешения) приложения требуются для ресурсов и назначьте эти роли созданной группе Microsoft Entra. Группы можно назначить роль в ресурсе, группе ресурсов или области подписки. В этом примере показано, как назначать роли в области группы ресурсов, поскольку большинство приложений группируют все свои ресурсы Azure в одну группу ресурсов.
- Портал Azure
- Azure CLI
На портале Azure перейдите на страницу Обзор группы ресурсов, содержащей ваше приложение.
Выберите управление доступом (IAM) в левой панели навигации.
На странице управления доступом (IAM) выберите + Добавить и затем выберите Добавить назначение роли в раскрывающемся меню. Страница добавления назначения ролей содержит несколько вкладок для настройки и назначения ролей.
На вкладке роль используйте поле поиска, чтобы найти роль, которую вы хотите назначить. Выберите роль, затем нажмите Далее.
На вкладке членов:
- Чтобы назначить доступ к значению, выберите пользователя, группу или главного объекта службы.
- Для значения участников выберите + Выберите участников, чтобы открыть панель Выберите участников.
- Найдите созданную ранее группу Microsoft Entra и выберите ее из отфильтрованных результатов. Выберите , чтобы выбрать группу и закрыть панель всплывающих элементов.
- Выберите Назначить и проверить в нижней части вкладки Участники.
На вкладке "Проверка и назначение" выберите "Проверка и назначение" в нижней части страницы.
Установите переменные среды приложения
Во время выполнения некоторые учетные данные из библиотеки удостоверений Azure, такие как DefaultAzureCredential
, EnvironmentCredential
и ClientSecretCredential
, ищут сведения о служебном принципале по соглашению в переменных среды. Существует несколько способов настройки переменных среды при работе с .NET в зависимости от инструментов и среды.
Независимо от выбранного подхода настройте следующие переменные среды для субъекта-службы:
-
AZURE_CLIENT_ID
. Используется для идентификации зарегистрированного приложения в Azure. -
AZURE_TENANT_ID
: идентификатор клиента Microsoft Entra. -
AZURE_CLIENT_SECRET
: секретные учетные данные, созданные для приложения.
- Visual Studio
- Visual Studio Code
- Windows
В Visual Studio переменные среды можно задать в файле launchsettings.json
в папке Properties
проекта. Эти значения автоматически извлекаются при запуске приложения. Однако эти конфигурации не перемещаются вместе с приложением во время развертывания, поэтому необходимо настроить переменные среды в целевой среде размещения.
"profiles": {
"SampleProject": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7177;http://localhost:5177",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
Авторизация в службах Azure из вашего приложения
Библиотека удостоверений Azure предоставляет различные учетные данные— реализации TokenCredential
адаптированы для поддержки различных сценариев и потоков проверки подлинности Microsoft Entra. В следующих шагах показано, как использовать ClientSecretCredential при работе со служебными учетными записями локально и в рабочей среде.
Реализация кода
Добавьте пакет Azure.Identity. В проекте ASP.NET Core установите также пакет Microsoft.Extensions.Azure.
- Командная строка
- Диспетчер пакетов NuGet
В выбранном терминале перейдите к каталогу проекта приложения и выполните следующие команды:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Для обращения к службам Azure используются специализированные клиентские классы из различных клиентских библиотек Azure SDK. Эти классы и собственные пользовательские службы должны быть зарегистрированы для внедрения зависимостей, чтобы их можно было использовать во всем приложении. В Program.cs
выполните следующие действия, чтобы настроить клиентский класс для инъекции зависимостей и токен-аутентификации:
- Включите пространства имен
Azure.Identity
иMicrosoft.Extensions.Azure
с помощью директивusing
. - Зарегистрируйте клиент службы Azure с помощью соответствующего
Add
-префиксного метода расширения. - Настройте
ClientSecretCredential
с помощьюtenantId
,clientId
иclientSecret
. - Передайте экземпляр
ClientSecretCredential
методуUseCredential
.
builder.Services.AddAzureClients(clientBuilder =>
{
var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new ClientSecretCredential(tenantId, clientId, clientSecret));
});
Альтернативой методу UseCredential
является предоставление учетных данных клиенту службы напрямую:
var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new ClientSecretCredential(tenantId, clientId, clientSecret)));