Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Во время локальной разработки приложения должны пройти проверку подлинности в Azure для использования различных служб Azure. Проверка подлинности локально с помощью одного из следующих подходов:
- Используйте учетную запись разработчика с одним из инструментов для разработчиков, поддерживаемых библиотекой удостоверений Azure.
- Используйте субъект-службу.
В этой статье объясняется, как пройти проверку подлинности с помощью учетной записи разработчика с инструментами, поддерживаемыми библиотекой удостоверений Azure. В следующих разделах вы узнаете:
- Использование групп Microsoft Entra для эффективного управления разрешениями для нескольких учетных записей разработчиков.
- Назначение ролей учетным записям разработчиков для определения области действия разрешений.
- Как войти в поддерживаемые локальные средства разработки.
- Как пройти проверку подлинности с помощью учетной записи разработчика из кода приложения.
Поддерживаемые средства разработчика для проверки подлинности
Чтобы приложение проходило аутентификацию в Azure во время локальной разработки с использованием учетных данных разработчика в Azure, разработчик должен быть авторизован в Azure через Azure CLI.
Библиотека идентификации Azure может обнаружить, что разработчик вошел в систему через инструмент. Затем библиотека может получить токен доступа Microsoft Entra с помощью инструмента для аутентификации приложения в Azure от имени авторизованного пользователя.
Этот подход использует существующие учетные записи Azure разработчика для упрощения процесса проверки подлинности. Однако учетная запись разработчика, скорее всего, имеет больше разрешений, чем требуется для приложения, поэтому превышает разрешения, с которыми приложение работает в продакшене. В качестве альтернативы можно создать субъекты-службы приложений для использования во время локальной разработки, которые могут быть ограничены только доступом, необходимым для приложения.
Создание группы Microsoft Entra для локальной разработки
Создайте группу Microsoft Entra, чтобы объединять роли (разрешения), необходимые приложению при локальной разработке, а не назначать роли отдельным объектам службы-принципала. Этот подход обеспечивает следующие преимущества:
- Каждый разработчик имеет одинаковые роли, назначенные на уровне группы.
- Если для приложения требуется новая роль, ее необходимо только добавить в группу для приложения.
- Если новый разработчик присоединяется к команде, для разработчика создается новая учетная запись службы приложений и добавляется в группу, гарантируя, что разработчик имеет необходимые разрешения на работу с приложением.
Перейдите на страницу обзора идентификатора Microsoft Entra на портале Azure.
Выберите все группы в меню слева.
На странице Группы выберите Создать группу.
На странице "Создать группу" заполните следующие поля формы:
- Тип группы: Выберите безопасность .
- Имя группы: введите имя группы, которая содержит ссылку на имя приложения или среды.
- Описание группы: введите описание, объясняющее назначение группы.
Выберите ссылку "Нет участников" в разделе "Участники", чтобы добавить участников в группу.
На открывшейся всплывающей панели найдите созданную ранее основную служебную учетную запись и выберите её из результатов фильтрации. Нажмите кнопку "Выбрать " в нижней части панели, чтобы подтвердить выбор.
Нажмите кнопку "Создать " в нижней части страницы "Создать группу ", чтобы создать группу и вернуться на страницу "Все группы ". Если вы не видите новую группу, подождите минуту и обновите страницу.
Назначьте роли группе
Затем определите, какие роли (разрешения) приложения требуются для ресурсов и назначьте эти роли созданной группе Microsoft Entra. Группы можно назначить роль в ресурсе, группе ресурсов или области подписки. В этом примере показано, как назначать роли в области группы ресурсов, так как большинство приложений группируют все свои ресурсы Azure в одну группу ресурсов.
На портале Azure перейдите на страницу обзора группы ресурсов, содержащей приложение.
Выберите управление доступом (IAM) в левой панели навигации.
На странице управления доступом (IAM) выберите +Добавить , а затем выберите "Добавить назначение ролей " в раскрывающемся меню. Страница "Добавление назначения ролей " предоставляет несколько вкладок для настройки и назначения ролей.
На вкладке "Роль" используйте поле поиска, чтобы найти роль, которую вы хотите назначить. Выберите роль и нажмите кнопку "Далее".
На вкладке "Члены" :
- Чтобы назначить доступ к значению , выберите "Пользователь", "Группа" или "Субъект-служба ".
- Для значения "Члены" нажмите кнопку "Выбрать участников ", чтобы открыть панель всплывающего меню "Выбор участников ".
- Найдите созданную ранее группу Microsoft Entra и выберите ее из отфильтрованных результатов. Выберите команду "Выбрать ", чтобы выбрать группу и закрыть панель всплывающего меню.
- Выберите Обзор + Назначение внизу вкладки Члены.
На вкладке "Обзор и назначение" выберите "Обзор и назначение" в нижней части страницы.
Вход в Azure с помощью средств разработчика
Войдите в Azure с помощью одного из нескольких средств разработчика, которые можно использовать для проверки подлинности в среде разработки. Учетная запись, которую вы используете для аутентификации, также должна существовать в созданной и настроенной ранее группе Microsoft Entra.
Azure CLI (Интерфейс командной строки для Azure)
Разработчики могут использовать Azure CLI для проверки подлинности. Приложения , использующие DefaultAzureCredential или AzureCliCredential , могут использовать эту учетную запись для проверки подлинности запросов приложений.
Чтобы выполнить проверку подлинности с помощью Azure CLI, выполните az login команду. В системе с веб-браузером по умолчанию Azure CLI запускает браузер для проверки подлинности пользователя.
az login
Для систем без веб-браузера по умолчанию команда az login использует поток проверки подлинности кода устройства. Пользователь также может принудительно заставить Azure CLI использовать поток кода устройства вместо запуска браузера, указав аргумент --use-device-code.
az login --use-device-code
Авторизация в службах Azure из вашего приложения
Библиотека удостоверений Azure для C++ предоставляет различные учетные данные, адаптированные для поддержки различных сценариев и потоков проверки подлинности Microsoft Entra. На шаге выше показано, как использовать DefaultAzureCredential при работе с учетными записями пользователей локально.
Реализация кода
Класс DefaultAzureCredential — это упорядоченная последовательность механизмов проверки подлинности в идентификаторе Microsoft Entra. Каждый механизм проверки подлинности является классом, производным от TokenCredential класса и называется учетными данными. В этом сценарии последовательно проверяет, DefaultAzureCredential выполнил ли разработчик вход в Azure с помощью Azure CLI. Если разработчик вошел в Azure CLI, учетные данные, используемые для входа в средство, используются приложением для проверки подлинности в Azure. Дополнительные сведения о настройке цепочки учетных данных см. в разделе "Настройка DefaultAzureCredential".
Добавьте пакет azure-identity-cpp в приложение с помощью vcpkg.
vcpkg add port azure-identity-cppДобавьте следующие строки в файл CMake:
find_package(azure-identity-cpp CONFIG REQUIRED) target_link_libraries(<your project name> PRIVATE Azure::azure-identity)Для любого кода C++, создающего клиентский объект Пакета SDK Azure в приложении, необходимо:
azure/identity.hppВключите заголовок.Используйте
DefaultAzureCredentialилиAzureCliCredential, чтобы создать экземпляр учетных данных. Рассмотрим пример.Чтобы использовать
DefaultAzureCredential, задайте для переменнойAZURE_TOKEN_CREDENTIALSdevсреды значение, указывающее, что приложение работает в среде разработки. Дополнительные сведения см. в разделе "Настройка DefaultAzureCredential".// Environment variable AZURE_TOKEN_CREDENTIALS=dev auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true);Или всегда используется
AzureCliCredentialдля проверки подлинности пользователя, вошедшего в систему Azure CLI.auto credential = std::make_shared<Azure::Identity::AzureCliCredential>();
Передайте экземпляр
DefaultAzureCredentialилиAzureCliCredentialв конструктор клиента Azure SDK.
Пример этих шагов показан в следующем сегменте кода. В этом примере создается клиент BLOB-объектов службы хранилища Azure, используя
DefaultAzureCredentialдля проверки подлинности в Azure.#include <azure/identity.hpp> #include <azure/storage/blobs.hpp> #include <iostream> #include <memory> int main() { try { // DefaultAzureCredential supports dev, test, and prod environments. // See documentation for details on customizing the credential chain: // https://learn.microsoft.com/azure/developer/cpp/sdk/authentication/credential-chains#defaultazurecredential-overview // In production, it's better to use a specific credential type so authentication is more predictable and easier to debug. // Here DefaultAzureCredential is used for local development and environment variable AZURE_TOKEN_CREDENTIALS=dev auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true); // Or use AzureCliCredential to always use the Azure CLI signed-in user to authenticate // auto credential = std::make_shared<Azure::Identity::AzureCliCredential>(); // Create a client for the specified storage account std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"; Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential); // Get a reference to a container std::string containerName = "sample-container"; auto containerClient = blobServiceClient.GetBlobContainerClient(containerName); // TODO: perform some action with the blob client // auto blobClient = containerClient.GetBlobClient("sample-blob"); // auto downloadResult = blobClient.DownloadTo("path/to/local/file"); } catch (const std::exception& ex) { std::cout << "Exception: " << ex.what() << std::endl; return 1; } return 0; }