Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Рекомендуемый подход к проверке подлинности размещенного в Azure приложения в других ресурсах Azure — использовать управляемое удостоверение. Этот подход поддерживается для большинства служб Azure, включая приложения, размещенные в Службе приложений Azure, приложениях контейнеров Azure и виртуальных машинах Azure. Узнайте больше о различных методах проверки подлинности и подходах на странице обзора проверки подлинности . В следующих разделах вы узнаете:
- Основные понятия управляемого удостоверения
- Создание управляемого удостоверения, назначаемого системой для приложения
- Назначение ролей управляемому удостоверению, назначаемого системой
- Проверка подлинности с помощью управляемого удостоверения, назначаемого системой, из кода приложения
Основные понятия управляемого удостоверения
Управляемое удостоверение позволяет приложению безопасно подключаться к другим ресурсам Azure без использования секретных ключей или других секретов приложения. В azure отслеживается удостоверение и ресурсы, к которым он может подключаться. Azure использует эти сведения для автоматического получения маркеров Microsoft Entra для приложения, чтобы разрешить ему подключаться к другим ресурсам Azure.
Существует два типа управляемых удостоверений, которые следует учитывать при настройке размещенного приложения:
- Управляемые удостоверения, назначаемые системой, включены непосредственно в ресурсе Azure и привязаны к его жизненному циклу. При удалении ресурса Azure автоматически удаляет удостоверение. Назначаемые системой удостоверения обеспечивают минимальный подход к использованию управляемых удостоверений.
- Управляемые удостоверения, назначаемые пользователем, создаются как автономные ресурсы Azure и обеспечивают большую гибкость и возможности. Они идеально подходят для решений, связанных с несколькими ресурсами Azure, которые должны совместно использовать одинаковые удостоверения и разрешения. Например, если нескольким виртуальным машинам требуется доступ к одному набору ресурсов Azure, управляемое удостоверение, назначаемое пользователем, обеспечивает повторное использование и оптимизированное управление.
Подсказка
Дополнительные сведения о выборе управляемых удостоверений, назначаемых системой, и управлении ими, назначаемых системой, см. в статье рекомендаций по использованию управляемых удостоверений .
В следующих разделах описаны шаги по включению и использованию управляемого удостоверения, назначаемого системой, для приложения, размещенного в Azure. Если вам нужно использовать управляемое удостоверение, назначаемое пользователем, посетите статью управляемых удостоверений, назначаемых пользователем , дополнительные сведения.
Включение управляемого удостоверения, назначаемого системой, в ресурсе размещения Azure
Чтобы приступить к использованию управляемого удостоверения, назначаемого системой, с приложением включите удостоверение в ресурсе Azure, где размещено приложение, например Службу приложений Azure, приложение контейнера Azure или виртуальную машину Azure.
Вы можете включить управляемое удостоверение, назначаемое системой для ресурса Azure, с помощью портала Azure или Azure CLI.
На портале Azure перейдите к ресурсу, в котором размещен код приложения, например службе приложений Azure или экземпляру приложения контейнера Azure.
На странице обзора ресурса разверните узел "Параметры " и выберите "Удостоверение " в области навигации.
На странице "Удостоверение" переключите ползунок "Состояние " на "Вкл.".
Нажмите кнопку Сохранить, чтобы применить изменения.
Назначьте роли управляемому удостоверению
Затем определите, какие роли требуется приложению, и назначьте эти роли управляемому удостоверению. Роли можно назначить управляемому удостоверению в следующих областях:
- Ресурс: назначенные роли применяются только к конкретному ресурсу.
- Группа ресурсов: назначенные роли применяются ко всем ресурсам, содержащимся в группе ресурсов.
- Подписка: назначенные роли применяются ко всем ресурсам, содержащимся в подписке.
В следующем примере показано, как назначать роли в области группы ресурсов, так как многие приложения управляют всеми связанными ресурсами Azure с помощью одной группы ресурсов.
Перейдите на страницу обзора группы ресурсов, содержащей приложение с управляемым удостоверением, назначаемое системой.
Выберите элемент управления доступом (IAM) на левой панели навигации.
На странице управления доступом (IAM) выберите +Добавить в верхнем меню, а затем выберите "Добавить назначение роли ", чтобы перейти на страницу "Добавить назначение ролей ".
Страница "Добавление назначения ролей " представляет рабочий процесс с вкладками для назначения ролей удостоверениям. На вкладке начальной роли используйте поле поиска вверху, чтобы найти роль, которую вы хотите назначить удостоверению.
Выберите роль из результатов и нажмите кнопку "Далее ", чтобы перейти на вкладку "Члены ".
Для параметра "Назначить доступ к" выберите "Управляемое удостоверение".
Для параметра "Участники" нажмите кнопку "Выбрать участников ", чтобы открыть панель "Выбор управляемых удостоверений ".
На панели "Выбор управляемых удостоверений " используйте раскрывающийся список "Подписка " и "Управляемое удостоверение ", чтобы отфильтровать результаты поиска для удостоверений. Используйте поле поиска "Выбор ", чтобы найти системное удостоверение, которое вы включили для ресурса Azure, на котором размещено приложение.
Выберите удостоверение и нажмите кнопку "Выбрать " в нижней части панели, чтобы продолжить.
Выберите "Рецензирование" и "Назначить" в нижней части страницы.
На последней вкладке "Рецензирование и назначение" нажмите кнопку "Рецензирование" и "Назначить ", чтобы завершить рабочий процесс.
Проверка подлинности в службах Azure из приложения
Библиотека удостоверений Azure предоставляет различные учетные данные — реализации адаптированных TokenCredential для поддержки различных сценариев и потоков проверки подлинности Microsoft Entra. Так как управляемое удостоверение недоступно при локальном выполнении, действия, описанные выше, демонстрируют, какие учетные данные следует использовать в каком сценарии:
-
Локальная среда разработки: только во время локальной разработки используйте класс DefaultAzureCredential для предварительно настроенной цепочки учетных данных.
DefaultAzureCredentialобнаруживает учетные данные пользователя из локального инструмента или интегрированной среды разработки, например Azure CLI или Visual Studio Code. Она также обеспечивает гибкость и удобство повторных попыток, время ожидания ответов и поддержку нескольких вариантов проверки подлинности. Дополнительные сведения см. в статье о проверке подлинности в службах Azure во время локальной разработки . -
Приложения, размещенные в Azure: когда ваше приложение работает в Azure, используйте
ManagedIdentityCredentialбезопасное обнаружение управляемого удостоверения, настроенного для приложения. Указание этого точного типа учетных данных предотвращает неожиданное получение других доступных учетных данных.
Реализация кода
В проекте JavaScript добавьте пакет @azure/identity . В выбранном терминале перейдите к каталогу проекта приложения и выполните следующие команды:
npm install @azure/identity
К службам Azure обращаются специализированные клиентские классы из различных клиентских библиотек Azure SDK. Выполните index.jsследующие действия, чтобы настроить проверку подлинности на основе маркеров:
@azure/identityИмпортируйте пакет.Передайте клиенту соответствующий
TokenCredentialэкземпляр:- Используется
DefaultAzureCredentialпри локальном запуске приложения - Используется
ManagedIdentityCredentialпри запуске приложения в Azure.
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient() { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { return new BlobServiceClient(url, new ManagedIdentityCredential()); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main() { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME); const properties = await containerClient.getProperties(); console.log(properties); } catch (err) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err) => { console.error("Error running sample:", err.message); process.exit(1); });- Используется
Реализация кода
В проекте JavaScript добавьте пакет @azure/identity . В выбранном терминале перейдите к каталогу проекта приложения и выполните следующие команды:
npm install @azure/identity @types/node
К службам Azure обращаются специализированные клиентские классы из различных клиентских библиотек Azure SDK. Выполните index.jsследующие действия, чтобы настроить проверку подлинности на основе маркеров:
@azure/identityИмпортируйте пакет.Передайте клиенту соответствующий
TokenCredentialэкземпляр:- Используется
DefaultAzureCredentialпри локальном запуске приложения - Используется
ManagedIdentityCredentialпри запуске приложения в Azure.
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient(): BlobServiceClient { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { return new BlobServiceClient(url, new ManagedIdentityCredential()); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main(): Promise<void> { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME!); const properties = await containerClient.getProperties(); console.log(properties); } catch (err: any) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err: Error) => { console.error("Error running sample:", err.message); process.exit(1); });- Используется
Предыдущий код ведет себя по-разному в зависимости от среды, в которой она выполняется:
- На локальной рабочей станции
DefaultAzureCredentialразработки найдите переменные среды для субъекта-службы приложений или локально установленных средств разработчика, например Visual Studio Code, для набора учетных данных разработчика. - При развертывании в Azure обнаруживает конфигурации управляемых удостоверений для
ManagedIdentityCredentialавтоматической проверки подлинности в других службах.