Проверка подлинности и авторизация служб искусственного интеллекта Azure с помощью .NET
Запросы приложений к службам ИИ Azure должны проходить проверку подлинности. В этой статье описаны варианты, доступные для проверки подлинности в Azure OpenAI и других службах ИИ с помощью .NET. Эти понятия применяются к пакету SDK для семантического ядра, а также к пакетам SDK из определенных служб, таких как Azure OpenAI. Большинство служб ИИ предлагают два основных способа проверки подлинности приложений и пользователей:
- Проверка подлинности на основе ключей предоставляет доступ к службе Azure с помощью значений секретного ключа. Эти значения секретов иногда называются ключами API или ключами доступа в зависимости от службы.
- Идентификатор Microsoft Entra предоставляет комплексное решение для управления удостоверениями и доступом, чтобы убедиться, что правильные удостоверения имеют правильный уровень доступа к разным ресурсам Azure.
В разделах, описанных выше, приведены общие сведения об этих двух подходах, а не подробные действия по реализации. Дополнительные сведения о подключении к службам Azure см. в следующих ресурсах:
Примечание.
В примерах этой статьи основное внимание уделяется подключениям к Azure OpenAI, но те же понятия и шаги реализации непосредственно применяются ко многим другим службам ИИ Azure.
Проверка подлинности с помощью ключей
Ключи доступа позволяют приложениям и средствам проходить проверку подлинности в службе искусственного интеллекта Azure, например Azure OpenAI, с помощью секретного ключа, предоставленного службой. Извлеките секретный ключ с помощью таких средств, как портал Azure или Azure CLI, и используйте его для настройки кода приложения для подключения к службе ИИ:
builder.Services.AddAzureOpenAIChatCompletion(
"deployment-model",
"service-endpoint",
"service-key"); // Secret key
var kernel = builder.Build();
Использование ключей является простым вариантом, но этот подход следует использовать с осторожностью. Ключи не являются рекомендуемыми вариантами проверки подлинности, так как они:
- Не следуйте принципу наименьших привилегий— они предоставляют повышенные разрешения независимо от того, кто использует их или для какой задачи.
- Может случайно быть проверен в системе управления версиями или храниться в небезопасных расположениях.
- Можно легко предоставить доступ или отправить сторонам, которым не нужно иметь доступ.
- Часто требуется ручное администрирование и смена.
Вместо этого рекомендуется использовать идентификатор Microsoft Entra для проверки подлинности, который является рекомендуемом решением для большинства сценариев.
Проверка подлинности с помощью идентификатора Microsoft Entra
Идентификатор Microsoft Entra — это облачная служба управления удостоверениями и доступом, которая предоставляет широкий набор функций для различных бизнес-сценариев и сценариев приложений. Идентификатор Microsoft Entra — это рекомендуемое решение для подключения к Azure OpenAI и другим службам ИИ и предоставляет следующие преимущества:
- Проверка подлинности без ключа с помощью удостоверений.
- Управление доступом на основе ролей (RBAC) для назначения удостоверений минимальным необходимым разрешениям.
- С помощью клиентской
Azure.Identity
библиотеки можно обнаруживать различные учетные данные в разных средах , не требуя изменений кода. - Автоматически обрабатывает задачи администрирования, такие как смена базовых ключей.
Рабочий процесс для реализации проверки подлинности Microsoft Entra в приложении обычно включает в себя следующее:
Локальная разработка:
- Войдите в Azure с помощью локального средства разработки, например Azure CLI или Visual Studio.
- Настройте код для использования клиентской библиотеки
Azure.Identity
иDefaultAzureCredential
класса. - Назначьте роли Azure учетной записи, вошедшего в систему, чтобы включить доступ к службе искусственного интеллекта.
Размещенное в Azure приложение:
- Разверните приложение в Azure после настройки его для проверки подлинности с помощью клиентской библиотеки
Azure.Identity
. - Назначьте управляемое удостоверение размещенной в Azure приложению.
- Назначьте роли Azure управляемому удостоверению, чтобы обеспечить доступ к службе искусственного интеллекта.
- Разверните приложение в Azure после настройки его для проверки подлинности с помощью клиентской библиотеки
Основные понятия этого рабочего процесса рассматриваются в следующих разделах.
Проверка подлинности в Azure локально
При разработке приложений локально, которые подключаются к службам ИИ Azure, проходят проверку подлинности в Azure с помощью такого средства, как Visual Studio или Azure CLI. Локальные учетные данные можно обнаружить клиентской Azure.Identity
библиотекой и использовать для проверки подлинности приложения в службах Azure, как описано в разделе "Настройка кода приложения".
Например, чтобы выполнить проверку подлинности в Azure локально с помощью Azure CLI, выполните следующую команду:
az login
Настройка кода приложения
Используйте клиентную библиотеку Azure.Identity
из пакета SDK Azure для реализации проверки подлинности Microsoft Entra в коде. Библиотеки Azure.Identity
включают DefaultAzureCredential
класс, который автоматически обнаруживает доступные учетные данные Azure на основе текущей среды и доступных инструментов. Ознакомьтесь с документацией по пакету SDK Azure для .NET , чтобы получить полный набор поддерживаемых учетных данных среды и порядок поиска.
Например, настройте семантический ядро для проверки подлинности с помощью DefaultAzureCredential
следующего кода:
Kernel kernel = Kernel
.CreateBuilder()
.AddAzureOpenAITextGeneration(
"your-model",
"your-endpoint",
new DefaultAzureCredential())
.Build();
DefaultAzureCredential
позволяет приложениям продвигаться из локальной разработки в рабочую среду без изменений кода. Например, во время разработки DefaultAzureCredential
используются учетные данные локального пользователя из Visual Studio или Azure CLI для проверки подлинности в службе ИИ. При развертывании приложения в Azure использует управляемое удостоверение, DefaultAzureCredential
назначенное приложению.
Назначение ролей удостоверению
Управление доступом на основе ролей Azure (Azure RBAC) — это система, которая обеспечивает точное управление доступом ресурсов Azure. Назначьте роль субъекту безопасности, используемому DefaultAzureCredential
для подключения к службе искусственного интеллекта Azure, будь то отдельный пользователь, группа, субъект-служба или управляемое удостоверение. Роли Azure — это коллекция разрешений, которые позволяют удостоверению выполнять различные задачи, например создавать завершения или создавать и удалять ресурсы.
Назначьте роли, такие как Пользователь OpenAI Cognitive Services (идентификатор роли: ) 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
соответствующему удостоверению с помощью таких средств, как Azure CLI, Bicep или портал Azure. Например, используйте az role assignment create
команду для назначения роли с помощью Azure CLI:
az role assignment create \
--role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
--assignee-object-id "$PRINCIPAL_ID" \
--scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
--assignee-principal-type User
Дополнительные сведения об Azure RBAC см. в следующих ресурсах:
Назначение управляемого удостоверения приложению
В большинстве случаев размещенные в Azure приложения должны использовать управляемое удостоверение для подключения к другим службам, таким как Azure OpenAI. Управляемые удостоверения предоставляют полностью управляемое удостоверение в идентификаторе Microsoft Entra для приложений, используемых при подключении к ресурсам, поддерживающим проверку подлинности Microsoft Entra. DefaultAzureCredential
обнаруживает удостоверение, связанное с приложением, и использует его для проверки подлинности в других службах Azure.
Существует два типа управляемых удостоверений, которые можно назначить приложению:
- Назначаемое системой удостоверение привязывается к приложению и удаляется при удалении приложения. Приложение может иметь только одно назначаемое системой удостоверение.
- Назначаемое пользователем удостоверение — это изолированный ресурс Azure, который можно назначить приложению. Приложение может иметь несколько назначаемых пользователем удостоверений.
Назначьте роли управляемому удостоверению так же, как и отдельную учетную запись пользователя, например роль пользователя OpenAI в Cognitive Services. Узнайте больше о работе с управляемыми удостоверениями с помощью следующих ресурсов: