Преимущества использования управляемого удостоверения для Azure OpenAI

Завершено

Когда вы используете управляемое удостоверение, необходимо указать идентификатор клиента удостоверения, управляемого пользователем, при создании экземпляра класса DefaultAzureCredential или ManagedIdentityCredential в приложении JavaScript. Значение идентификатора клиента задается как переменная среды $AZURE_CLIENT_ID при настройке управляемого удостоверения.

На первый взгляд, это может показаться, что это единственный жизненно важный фрагмент информации, необходимый для подключения, помимо URL-адреса конечной точки.

import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { AzureOpenAI } from "openai";

// set environment variable AZURE_CLIENT_ID
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);

const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const deployment = "<your Azure OpenAI deployment name>";
const apiVersion = "2024-05-01-preview";
const options = { azureADTokenProvider, deployment, apiVersion, endpoint }

const client = new AzureOpenAI(options);

Давайте рассмотрим влияние утечки идентификатора клиента по сравнению с утечкой ключа API.

Ключ API работает аналогично обычному паролю. Если он скомпрометирован, любой пользователь с ключом может получить доступ к ресурсу. Для Azure OpenAI это означает неограниченное использование моделей искусственного интеллекта, таких как GPT-4. Если сеть общедоступна, влияние безопасности может быть еще больше.

И наоборот, если идентификатор клиента утёк, риски минимальны. Это связано с тем, что идентификатор клиента не может установить подключение к Azure OpenAI. Чтобы использовать управляемое удостоверение, служба должна работать в Azure и даже если Azure OpenAI является общедоступной, вы не можете подключиться из локальной среды или через сеть с помощью приложения.

Кроме того, для управляемого удостоверения настроено следующее назначение ролей:

az role assignment create --assignee $USER_MANAGED_ID_PRINCIPAL_ID \
--scope $OPEN_AI_RESOURCE_ID \
--role "Cognitive Services OpenAI User"

Это настраивает действия, которые можно выполнить с помощью этого идентификатора пользователя (подробнее об этом далее в модуле). Здесь роль пользователя Cognitive Services OpenAI назначается для служб Azure OpenAI, ограничивая разрешения операциями в Azure OpenAI.

В целом, по сравнению с последствиями утечки ключа API, эксплуатация утечки идентификатора клиента включает несколько шагов, что затрудняет действия злоумышленников. По этим причинам управляемые удостоверения предлагают более безопасный метод управления операциями по сравнению с ключами API. Настоятельно рекомендуется использовать Управляемое удостоверение вместо ключей API при аутентификации в Azure OpenAI или любой другой службе Azure, поддерживающей Управляемое удостоверение.