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


Аутентификация 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.

Инструкции Снимок экрана
Перейдите к ресурсу в портале Azure, где расположен код вашего приложения.

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

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

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

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

Инструкции Снимок экрана
Найдите группу ресурсов для своего приложения, введя имя этой группы в поле поиска в верхней части портала 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()
);