Korzyści wynikające z używania tożsamości zarządzanej dla usługi Azure OpenAI
W przypadku korzystania z tożsamości zarządzanej należy określić identyfikator klienta tożsamości zarządzanej przez użytkownika podczas tworzenia wystąpienia klasy DefaultAzureCredential lub ManagedIdentityCredential w aplikacji JavaScript. Wartość identyfikatora klienta jest ustanawiana jako zmienna środowiskowa $AZURE_CLIENT_ID podczas konfigurowania tożsamości zarządzanej.
Na pierwszy rzut oka może się wydawać, że jest to jedyny ważny element informacji wymaganych do połączenia, oprócz adresu URL punktu końcowego.
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);
Oceńmy wpływ wycieku identyfikatora klienta w porównaniu z ujawnionym kluczem interfejsu API.
Klucz interfejsu API działa podobnie jak zwykłe hasło. W przypadku naruszenia zabezpieczeń każda osoba mająca klucz może uzyskać dostęp do zasobu. W przypadku usługi Azure OpenAI oznacza to nieograniczone użycie modeli sztucznej inteligencji, takich jak GPT-4. Jeśli sieć jest publicznie dostępna, wpływ na zabezpieczenia może być jeszcze większy.
Z drugiej strony, jeśli identyfikator klienta zostanie ujawniony, ryzyko jest minimalne. Dzieje się tak, ponieważ sam identyfikator klienta nie może nawiązać połączenia z usługą Azure OpenAI. Aby korzystać z tożsamości zarządzanej, usługa musi działać na platformie Azure, a nawet jeśli usługa Azure OpenAI jest publiczna, nie można nawiązać połączenia ze środowiska lokalnego ani z sieci przy użyciu aplikacji.
Ponadto dla tożsamości zarządzanej skonfigurowano następujące przypisanie roli:
az role assignment create --assignee $USER_MANAGED_ID_PRINCIPAL_ID \
--scope $OPEN_AI_RESOURCE_ID \
--role "Cognitive Services OpenAI User"
Spowoduje to skonfigurowanie akcji, które można wykonać przy użyciu tego identyfikatora użytkownika (więcej informacji na ten temat znajduje się w dalszej części modułu). W tym miejscu rola użytkownika OpenAI w usługach Cognitive Services jest przypisywana dla usług Azure OpenAI, ograniczając uprawnienia tylko do operacji w ramach Azure OpenAI.
Podsumowując, w porównaniu z konsekwencjami wycieku klucza interfejsu API, wykorzystanie ujawnionego identyfikatora klienta obejmuje kilka kroków, co utrudnia złośliwym podmiotom wykorzystanie. Z tych powodów tożsamości zarządzane oferują bezpieczniejszą metodę zarządzania operacjami w porównaniu z kluczami interfejsu API. Zalecamy w najsilniejszych możliwych słowach, aby używać Tożsamości Zarządzanej zamiast kluczy API podczas uwierzytelniania w Azure OpenAI lub jakiejkolwiek innej usłudze platformy Azure obsługującej Tożsamość Zarządzaną.