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


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

Когда приложение размещено в Azure (с использованием таких служб, как Azure App Service, Azure Functions или Azure Container Apps), вы можете использовать управляемую идентификацию для безопасной аутентификации вашего приложения для доступа к ресурсам Azure.

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

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

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

  • Назначаемые системой управляемые удостоверения — один ресурс Azure
  • Назначаемые пользователем управляемые удостоверения — несколько ресурсов Azure

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

Назначаемые системой управляемые удостоверения для одного ресурса

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

Назначаемые пользователем управляемые удостоверения для нескольких ресурсов

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

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

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

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

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

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

Все ресурсы Azure, способные поддерживать управляемое удостоверение, будут иметь элемент меню "Удостоверение ", даже если макет меню может немного отличаться.
Снимок экрана: расположение элемента меню
На странице удостоверений:
  1. Измените ползунок состояния на "Вкл.".
  2. Выберите Сохранить.
Диалоговое окно подтверждения проверяет, что вы хотите включить управляемое удостоверение для службы. Ответ " Да", чтобы включить управляемое удостоверение для ресурса Azure.
Снимок экрана: включение управляемого удостоверения для ресурса Azure на странице удостоверений ресурса.

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

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

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

Перейдите к группе ресурсов, выбрав имя группы ресурсов в заголовке "Группы ресурсов" в диалоговом окне.
Снимок экрана: использование верхней панели поиска в портал Azure для поиска и перехода к группе ресурсов в Azure.
На странице группы ресурсов выберите элемент управления доступом (IAM) в меню слева. Снимок экрана: расположение элемента меню управления доступом (I A M) в левом меню группы ресурсов Azure.
На странице управления доступом (IAM):
  1. Выберите вкладку Назначения ролей.
  2. Выберите + Добавить в верхнем меню, а затем выберите Добавить назначение роли в появившемся раскрывающемся меню.
Снимок экрана: переход на вкладку назначений ролей и расположение кнопки, используемой для добавления назначений ролей в группу ресурсов.
На странице "Добавление назначения ролей" перечислены все роли, которые можно назначить для группы ресурсов.
  1. Используйте поле поиска, чтобы отфильтровать список до более управляемого размера. В этом примере показано, как фильтровать роли BLOB-объектов хранилища.
  2. Выберите роль, которую вы хотите назначить.
    Нажмите кнопку "Далее ", чтобы перейти к следующему экрану.
Снимок экрана: фильтрация и выбор назначений ролей для добавления в группу ресурсов.
На следующей странице "Добавление назначения ролей" можно указать, какой пользователь назначит роль.
  1. Выберите Управляемое удостоверение в разделе Назначить доступ.
  2. Выбор и выбор элементов в разделе "Элементы"
Откроется диалоговое окно справа от портал Azure.
Снимок экрана: выбор управляемого удостоверения в качестве типа пользователя, который вы хотите назначить роль (разрешение) на странице добавления назначений ролей.
В диалоговом окне выбора управляемых удостоверений:
  1. Раскрывающийся список управляемых удостоверений и выбор текстового поля можно использовать для фильтрации списка управляемых удостоверений в подписке. В этом примере, выбрав Служба приложений, отображаются только управляемые удостоверения, связанные с Служба приложений.
  2. Выберите управляемое удостоверение для ресурса Azure, на котором размещено приложение.
Выберите в нижней части диалогового окна, чтобы продолжить.
Снимок экрана: использование диалогового окна выбора управляемых удостоверений для фильтрации и выбора управляемого удостоверения для назначения роли.
Управляемое удостоверение отображается на экране добавления назначения ролей.

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

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

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

Сначала добавьте пакет @azure/identity в приложение.

npm install @azure/identity

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

  1. DefaultAzureCredential Импортируйте класс из @azure/identity модуля.
  2. Создание объекта DefaultAzureCredential.
  3. Передайте объект конструктору DefaultAzureCredential клиентского объекта пакета SDK Azure.

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

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);