Avantages de l’utilisation d’une identité managée pour Azure OpenAI
Lorsque vous utilisez une identité managée, vous devez spécifier l’ID client de l’identité managée par l’utilisateur lors de la création d’une instance de la classe DefaultAzureCredential ou ManagedIdentityCredential dans votre application JavaScript. La valeur de l’ID client est établie en tant que variable d’environnement $AZURE_CLIENT_ID lorsque l’identité managée est configurée.
À première vue, il peut sembler qu’il s’agit de la seule information vitale requise pour la connexion, en dehors de l’URL du point de terminaison.
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);
Nous allons évaluer l’impact d’un ID client fuite par rapport à une clé API divulguée.
Une clé API fonctionne de la même façon qu’un mot de passe normal. S’il est compromis, toute personne disposant de la clé peut accéder à la ressource. Pour Azure OpenAI, cela signifie une utilisation illimitée des modèles IA comme GPT-4. Si le réseau est accessible publiquement, l’impact de la sécurité peut être encore plus grand.
À l’inverse, si l’ID client est divulguée, les risques sont minimes. Cela est dû au fait que l’ID client seul ne peut pas établir de connexion à Azure OpenAI. Pour utiliser une identité managée, le service doit fonctionner sur Azure et même si Azure OpenAI est public, vous ne pouvez pas vous connecter à partir d’un environnement local ou sur un réseau à l’aide d’une application.
En outre, l’attribution de rôle suivante est configurée pour l’identité managée :
az role assignment create --assignee $USER_MANAGED_ID_PRINCIPAL_ID \
--scope $OPEN_AI_RESOURCE_ID \
--role "Cognitive Services OpenAI User"
Cela configure les actions pouvant être effectuées à l’aide de cet ID utilisateur (plus loin dans le module). Ici, le rôle d’utilisateur OpenAI de Cognitive Services est attribué pour les services Azure OpenAI, limitant les autorisations aux opérations dans Azure OpenAI.
En résumé, par rapport aux ramifications d’une clé API divulguée, l’exploitation d’un ID client fuite implique plusieurs étapes, ce qui rend plus difficile pour les acteurs malveillants d’exploiter. Pour ces raisons, les identités managées offrent une méthode plus sûre pour gérer les opérations par rapport aux clés API. Il est recommandé dans les termes les plus forts possibles d’utiliser l’identité managée sur les clés API lors de l’authentification auprès d’Azure OpenAI ou d’un autre service Azure qui prend en charge Managed Identity.