Benefícios de usar uma identidade gerenciada para o Azure OpenAI
Ao empregar uma Identidade Gerenciada, você precisa especificar a ID do cliente da identidade gerenciada pelo usuário ao criar uma instância da classe DefaultAzureCredential ou ManagedIdentityCredential em seu aplicativo JavaScript. O valor da ID do cliente é estabelecido como uma variável de ambiente $AZURE_CLIENT_ID quando a Identidade Gerenciada é configurada.
À primeira vista, pode parecer que essa é a única informação vital necessária para a conexão, além da URL do ponto de extremidade.
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);
Vamos avaliar o impacto de uma ID do cliente vazada em comparação com uma chave de API vazada.
Uma chave de API funciona de forma semelhante a uma senha regular. Se estiver comprometido, qualquer pessoa com a chave poderá acessar o recurso. Para o Azure OpenAI, isso significa o uso irrestrito de modelos de IA, como GPT-4. Se a rede estiver acessível publicamente, o impacto na segurança poderá ser ainda maior.
Por outro lado, se a ID do cliente for vazada, os riscos serão mínimos. Isso ocorre porque a ID do cliente sozinha não pode estabelecer uma conexão com o Azure OpenAI. Para utilizar uma Identidade Gerenciada, o serviço deve estar operando no Azure e, mesmo que o Azure OpenAI seja público, você não pode se conectar de um ambiente local ou de uma rede usando um aplicativo.
Além disso, a seguinte atribuição de função é configurada para a Identidade Gerenciada:
az role assignment create --assignee $USER_MANAGED_ID_PRINCIPAL_ID \
--scope $OPEN_AI_RESOURCE_ID \
--role "Cognitive Services OpenAI User"
Isso configura que as ações podem ser executadas usando essa ID de usuário (mais sobre isso posteriormente no módulo). Aqui, a função de Usuário dos Serviços Cognitivos OpenAI é atribuída especificamente aos serviços do Azure OpenAI, limitando as permissões às operações no Azure OpenAI.
Em resumo, em comparação com as ramificações de uma chave de API vazada, explorar uma ID de cliente vazada envolve várias etapas, tornando mais difícil para os atores mal-intencionados explorarem. Por esses motivos, as Identidades Gerenciadas oferecem um método mais seguro para gerenciar operações em comparação com as chaves de API. É recomendado com máxima ênfase que você use a Identidade Gerenciada em vez de chaves de API ao autenticar no Azure OpenAI, ou em qualquer outro serviço do Azure que dê suporte à Identidade Gerenciada.