Проверка подлинности размещенных в 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.
2. Назначение ролей управляемому удостоверению
Затем необходимо определить, какие роли (разрешения) требуется вашему приложению, и назначить управляемое удостоверение этим ролям в Azure. Управляемое удостоверение можно назначить роли в ресурсе, группе ресурсов или области подписки. В этом примере показано, как назначать роли в области группы ресурсов, так как большинство приложений группировать все ресурсы Azure в одну группу ресурсов.
3. Реализация DefaultAzureCredential в приложении
Класс DefaultAzureCredential
автоматически обнаружит, что управляемое удостоверение используется и использует управляемое удостоверение для проверки подлинности в других ресурсах Azure. Как описано в статье о проверке подлинности Azure SDK для 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()
);
Если приведенный выше код выполняется на локальной рабочей станции во время локальной разработки, метод SDK, DefaultAzureCredential(), просмотрите переменные среды для субъекта-службы приложений или в VS Code, Azure CLI или Azure PowerShell для набора учетных данных разработчика, из которых можно использовать для проверки подлинности приложения в ресурсах Azure во время локальной разработки. Таким образом, этот же код можно использовать для проверки подлинности приложения в ресурсах Azure во время локальной разработки и при развертывании в Azure.