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

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

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

Типы управляемых удостоверений

Существует два типа управляемых удостоверений:

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

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

1. Включение управляемого удостоверения в ресурсе Azure, в котором размещено приложение

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

Вы можете включить управляемое удостоверение для ресурса Azure с помощью портал Azure или Azure CLI.

Instructions Снимок экрана
Перейдите к ресурсу, в котором размещен код приложения в портал Azure.

Например, можно ввести имя ресурса в поле поиска в верхней части страницы и перейти к нему, выбрав его в диалоговом окне.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource in Azure.
На странице ресурса выберите пункт меню "Удостоверение " в меню слева.

Все ресурсы Azure, способные поддерживать управляемое удостоверение, будут иметь элемент меню "Удостоверение ", даже если макет меню может немного отличаться.
A screenshot showing the location of the Identity menu item in the left-hand menu for an Azure resource.
На странице удостоверений:
  1. Измените ползунок состояния на "Вкл.".
  2. Нажмите кнопку Сохранить.
Диалоговое окно подтверждения подтвердит, что вы хотите включить управляемое удостоверение для службы. Ответ " Да " и управляемое удостоверение будет включено для ресурса Azure.
A screenshot showing how to enable managed identity for an Azure resource on the resource's Identity page.

2. Назначение ролей управляемому удостоверению

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

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

Перейдите к группе ресурсов, выбрав имя группы ресурсов в заголовке "Группы ресурсов" в диалоговом окне.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource group in Azure. This is the resource group that you'll assign roles (permissions) to.
На странице группы ресурсов выберите элемент управления доступом (IAM) в меню слева. A screenshot showing the location of the Access control (IAM) menu item in the left-hand menu of an Azure resource group.
На странице управления доступом (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 how to select managed identity as the type of user you want to assign the role (permission) on the add role assignments page.
В диалоговом окне выбора управляемых удостоверений:
  1. Раскрывающийся список управляемых удостоверений и выбор текстового поля можно использовать для фильтрации списка управляемых удостоверений в подписке. В этом примере, выбрав Служба приложений, отображаются только управляемые удостоверения, связанные с Служба приложений.
  2. Выберите управляемое удостоверение для ресурса Azure, на котором размещено приложение.
Выберите в нижней части диалогового окна, чтобы продолжить.
A screenshot showing how to use the select managed identities dialog to filter and select the managed identity to assign the role to.
Теперь управляемое удостоверение будет отображаться как выбранное на экране добавления назначения ролей.

Выберите "Рецензирование" и " Назначить" , чтобы перейти на окончательную страницу, а затем проверить и назначить еще раз, чтобы завершить процесс.
A screenshot of the final add role assignment screen where a user needs to select the Review + Assign button to finalize the role assignment.

3. Реализация 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 может получать параметры среды и конфигурации управляемых удостоверений для автоматической проверки подлинности в других службах.