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

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

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

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

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

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

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

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

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

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

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

1 . Назначаемое системой: включение в размещенном приложении

Первым шагом является включение управляемого удостоверения в ресурсе Azure, на котором размещено приложение. Например, если вы размещаете приложение Django с помощью службы приложение 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 SDK для 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()
);

Если приведенный выше код выполняется на локальной рабочей станции во время локальной разработки, метод SDK, DefaultAzureCredential(), просмотрите переменные среды для субъекта-службы приложений или в VS Code, Azure CLI или Azure PowerShell для набора учетных данных разработчика, из которых можно использовать для проверки подлинности приложения в ресурсах Azure во время локальной разработки. Таким образом, этот же код можно использовать для проверки подлинности приложения в ресурсах Azure во время локальной разработки и при развертывании в Azure.