Аутентификация 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.
2. Назначение ролей управляемому удостоверению
Затем необходимо определить, какие роли (разрешения) требуется вашему приложению, и назначить управляемое удостоверение этим ролям в Azure. Управляемое удостоверение можно назначить роли в ресурсе, группе ресурсов или области подписки. В этом примере показано, как назначать роли в области группы ресурсов, так как большинство приложений группировать все ресурсы Azure в одну группу ресурсов.
3. Реализация DefaultAzureCredential в приложении
DefaultAzureCredential автоматически определяет использование управляемого удостоверения и использует его для аутентификации в других ресурсах Azure. Как описано в статье обзор библиотеки удостоверений Azure для проверки подлинности JavaScript,DefaultAzureCredential
поддерживает несколько методов проверки подлинности и определяет используемый метод во время выполнения. Таким образом, приложение может использовать различные методы проверки подлинности в разных средах без реализации кода для конкретной среды.
Сначала добавьте пакет @azure/identity в приложение.
npm install @azure/identity
Затем для любого кода JavaScript, создающего клиентский объект Azure SDK в приложении, необходимо выполнить следующие действия.
-
DefaultAzureCredential
Импортируйте класс из@azure/identity
модуля. - Создание объекта
DefaultAzureCredential
. - Передайте объект конструктору
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()
);