Vorteile der Verwendung einer verwalteten Identität für Azure OpenAI
Wenn Sie eine verwaltete Identität verwenden, müssen Sie die Client-ID der vom Benutzer verwalteten Identität angeben, wenn Sie eine Instanz der DefaultAzureCredential
oder ManagedIdentityCredential
Klasse in Ihrer JavaScript-Anwendung erstellen. Der Client-ID-Wert wird als Umgebungsvariable $AZURE_CLIENT_ID
beim Einrichten der verwalteten Identität eingerichtet.
Auf den ersten Blick kann es vorkommen, dass dies die einzige wichtige Information ist, die für die Verbindung erforderlich ist, abgesehen von der Endpunkt-URL.
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);
Sehen wir uns die Auswirkungen einer geleckten Client-ID im Vergleich zu einem geleckten API-Schlüssel an.
Ein API-Schlüssel funktioniert ähnlich wie ein normales Kennwort. Wenn er kompromittiert ist, kann jeder mit dem Schlüssel auf die Ressource zugreifen. Für Azure OpenAI bedeutet dies die uneingeschränkte Verwendung von KI-Modellen wie GPT-4. Wenn das Netzwerk öffentlich zugänglich ist, könnte die Sicherheitswirkung noch größer sein.
Umgekehrt sind die Risiken minimal, wenn die Client-ID verloren geht. Dies liegt daran, dass die Client-ID allein keine Verbindung mit Azure OpenAI herstellen kann. Um eine verwaltete Identität zu nutzen, muss der Dienst auf Azure ausgeführt werden, und selbst wenn Azure OpenAI öffentlich ist, können Sie keine Verbindung aus einer lokalen Umgebung oder über ein Netzwerk mithilfe einer Anwendung herstellen.
Darüber hinaus wird die folgende Rollenzuweisung für die verwaltete Identität konfiguriert:
az role assignment create --assignee $USER_MANAGED_ID_PRINCIPAL_ID \
--scope $OPEN_AI_RESOURCE_ID \
--role "Cognitive Services OpenAI User"
Dadurch wird konfiguriert, welche Aktionen mithilfe dieser Benutzer-ID ausgeführt werden können (mehr dazu weiter unten im Modul). Hier wird die Rolle "Cognitive Services OpenAI User" für Azure OpenAI-Dienste zugewiesen, schränkt berechtigungen für Vorgänge innerhalb von Azure OpenAI ein.
Im Vergleich zu den Auswirkungen eines geleakten API-Schlüssels erfordert das Ausnutzen einer geleakten Client-ID mehrere Schritte, was es für böswillige Akteure schwieriger macht, sie auszunutzen. Aus diesen Gründen bieten verwaltete Identitäten eine sicherere Methode zum Verwalten von Vorgängen im Vergleich zu API-Schlüsseln. Es wird dringend empfohlen, beim Authentifizieren mit Azure OpenAI oder einem anderen Azure-Dienst, der Managed Identity unterstützt, eine Managed Identity anstelle von API-Schlüsseln zu verwenden.