Fördelar med att använda en hanterad identitet för Azure OpenAI

Slutförd

När du använder en hanterad identitet måste du ange klient-ID för den användarhanterade identiteten när du skapar en instans av klassen DefaultAzureCredential eller ManagedIdentityCredential i JavaScript-programmet. Klient-ID-värdet upprättas som en miljövariabel $AZURE_CLIENT_ID när den hanterade identiteten har konfigurerats.

Vid första anblicken kan det verka som om detta är den enda viktiga information som krävs för anslutningen, förutom slutpunkts-URL:en.

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);

Nu ska vi utvärdera effekten av ett läckt klient-ID jämfört med en läckt API-nyckel.

En API-nyckel fungerar på samma sätt som ett vanligt lösenord. Om den komprometteras kan alla med nyckeln komma åt resursen. För Azure OpenAI innebär detta obegränsad användning av AI-modeller som GPT-4. Om nätverket är offentligt tillgängligt kan säkerhetspåverkan bli ännu större.

Om klient-ID:t däremot läcker ut är riskerna minimala. Det beror på att enbart klient-ID:t inte kan upprätta en anslutning till Azure OpenAI. Om du vill använda en hanterad identitet måste tjänsten fungera i Azure och även om Azure OpenAI är offentligt kan du inte ansluta från en lokal miljö eller över ett nätverk med hjälp av ett program.

Dessutom konfigureras följande rolltilldelning för den hanterade identiteten:

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

Detta konfigurerar att åtgärderna kan utföras med hjälp av det här användar-ID:t (mer om detta senare i modulen). Här tilldelas rollen Cognitive Services OpenAI-användare för Azure OpenAI-tjänster, vilket begränsar behörigheter till åtgärder i Azure OpenAI.

Sammanfattningsvis, jämfört med konsekvenserna av en läckt API-nyckel, innebär utnyttjandet av ett läckt klient-ID flera steg, vilket gör det svårare för skadliga aktörer att utnyttja. Därför erbjuder hanterade identiteter en säkrare metod för att hantera åtgärder jämfört med API-nycklar. Vi rekommenderar att du använder hanterad identitet över API-nycklar när du autentiserar till Azure OpenAI eller någon annan Azure-tjänst som stöder hanterad identitet.