Voordelen van het gebruik van een beheerde identiteit voor Azure OpenAI

Voltooid

Wanneer u een beheerde identiteit gebruikt, moet u de client-id van de door de gebruiker beheerde identiteit opgeven bij het maken van een exemplaar van de DefaultAzureCredential of ManagedIdentityCredential-klasse in uw JavaScript-toepassing. De waarde van de client-id wordt ingesteld als een omgevingsvariabele $AZURE_CLIENT_ID wanneer de beheerde identiteit is ingesteld.

Op het eerste gezicht lijkt het erop dat dit het enige essentiƫle stukje informatie is dat nodig is voor de verbinding, afgezien van de eindpunt-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);

Laten we de impact van een gelekte client-id en een gelekte API-sleutel evalueren.

Een API-sleutel werkt op dezelfde manier als een normaal wachtwoord. Als deze is aangetast, heeft iedereen met de sleutel toegang tot de resource. Voor Azure OpenAI betekent dit onbeperkt gebruik van AI-modellen zoals GPT-4. Als het netwerk openbaar toegankelijk is, kan de beveiligingsimpact nog groter zijn.

Als de client-id echter wordt gelekt, zijn de risico's minimaal. Dit komt doordat de client-id alleen geen verbinding kan maken met Azure OpenAI. Als u een beheerde identiteit wilt gebruiken, moet de service werken in Azure en zelfs als Azure OpenAI openbaar is, kunt u geen verbinding maken vanuit een lokale omgeving of via een netwerk met behulp van een toepassing.

Daarnaast is de volgende roltoewijzing geconfigureerd voor de beheerde identiteit:

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

Hiermee configureert u de acties die u kunt uitvoeren met behulp van deze gebruikers-id (meer informatie hierover verderop in de module). Hier wordt de gebruikersrol Cognitive Services OpenAI toegewezen voor Azure OpenAI-services, waardoor machtigingen worden beperkt tot bewerkingen in Azure OpenAI.

Samenvattend, vergeleken met de gevolgen van een gelekte API-sleutel, omvat het misbruiken van een gelekte client-id verschillende stappen, waardoor het moeilijker wordt voor kwaadwillende actoren om misbruik te maken. Om deze redenen bieden beheerde identiteiten een veiligere methode voor het beheren van bewerkingen in vergelijking met API-sleutels. Het is ten zeerste aan te raden om Beheerde Identiteit te gebruiken in plaats van API-sleutels wanneer u zich authenticeert bij Azure OpenAI of een andere Azure-dienst die Beheerde Identiteit ondersteunt.