Ventajas del uso de una identidad administrada para Azure OpenAI
Al emplear una identidad administrada, debe especificar el identificador de cliente de la identidad administrada por el usuario al crear una instancia de la clase DefaultAzureCredential o ManagedIdentityCredential en la aplicación JavaScript. El valor de id. de cliente se establece como una variable de entorno $AZURE_CLIENT_ID cuando se configura la identidad administrada.
A primera vista, puede parecer que se trata de la única información vital necesaria para la conexión, aparte de la dirección URL del punto de conexión.
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 a evaluar el impacto de un identificador de cliente filtrado frente a una clave de API filtrada.
Una clave de API funciona de forma similar a una contraseña normal. Si está en peligro, cualquier persona con la clave puede acceder al recurso. Para Azure OpenAI, esto significa un uso sin restricciones de modelos de INTELIGENCIA ARTIFICIAL como GPT-4. Si la red es accesible públicamente, el impacto en la seguridad podría ser aún mayor.
Por el contrario, si se filtra el identificador de cliente, los riesgos son mínimos. Esto se debe a que el identificador de cliente por sí solo no puede establecer una conexión a Azure OpenAI. Para usar una identidad administrada, el servicio debe funcionar en Azure e incluso si Azure OpenAI es público, no se puede conectar desde un entorno local ni a través de una red mediante una aplicación.
Además, la siguiente asignación de roles está configurada para la identidad administrada:
az role assignment create --assignee $USER_MANAGED_ID_PRINCIPAL_ID \
--scope $OPEN_AI_RESOURCE_ID \
--role "Cognitive Services OpenAI User"
Esto configura las acciones que se pueden realizar con este identificador de usuario (más adelante en el módulo). En este caso, el rol de Usuario OpenAI de Cognitive Services se asigna a los servicios de Azure OpenAI, lo que limita los permisos exclusivamente a las operaciones dentro de Azure OpenAI.
En resumen, en comparación con las ramificaciones de una clave de API filtrada, aprovechar un identificador de cliente filtrado implica varios pasos, lo que dificulta la explotación de actores malintencionados. Por estos motivos, las identidades administradas ofrecen un método más seguro para administrar las operaciones en comparación con las claves de API. Se recomienda en los términos más seguros posibles que use identidad administrada a través de claves de API al autenticarse en Azure OpenAI o en cualquier otro servicio de Azure que admita identidad administrada.