Benefícios de usar uma identidade gerenciada para o Azure OpenAI

Concluído

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 esta é a única informação vital necessária para a conexão, além da URL do ponto final.

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 um ID de cliente vazado versus uma chave de API vazada.

Uma chave de API funciona de forma semelhante a uma senha comum. Se estiver comprometido, qualquer pessoa com a chave pode acessar o recurso. Para o Azure OpenAI, isso significa o uso irrestrito de modelos de IA como GPT-4. Se a rede for acessível ao público, o impacto na segurança poderá ser ainda maior.

Por outro lado, se o ID do cliente for vazado, os riscos sã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 através de uma rede usando um aplicativo.

Além disso, a seguinte atribuição de função está 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 as ações que podem ser executadas usando esse ID de usuário (mais sobre isso mais adiante no módulo). Aqui, a função de Utilizador OpenAI dos Serviços Cognitivos é atribuída para os serviços 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 um ID de cliente vazado envolve várias etapas, tornando mais difícil para atores mal-intencionados explorarem. Por esses motivos, as identidades gerenciadas oferecem um método mais seguro para gerenciar operações em comparação com chaves de API. É recomendado, nos termos mais fortes possíveis, que você use a Identidade Gerenciada sobre chaves de API ao autenticar no Azure OpenAI ou em qualquer outro serviço do Azure que ofereça suporte à Identidade Gerenciada.