Поделиться через


Проверка подлинности и авторизация служб искусственного интеллекта 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 в приложении обычно включает в себя следующее:

  • Локальная разработка:

    1. Войдите в Azure с помощью локального средства разработки, например Azure CLI или Visual Studio.
    2. Настройте код для использования клиентской библиотеки Azure.Identity и DefaultAzureCredential класса.
    3. Назначьте роли Azure учетной записи, вошедшего в систему, чтобы включить доступ к службе искусственного интеллекта.
  • Размещенное в Azure приложение:

    1. Разверните приложение в Azure после настройки его для проверки подлинности с помощью клиентской библиотеки Azure.Identity .
    2. Назначьте управляемое удостоверение размещенной в Azure приложению.
    3. Назначьте роли 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. Узнайте больше о работе с управляемыми удостоверениями с помощью следующих ресурсов: