Authentifizierung bei Azure OpenAI von einer in Azure gehosteten App aus mit Microsoft Entra ID.
Diese Artikel veranschaulicht die Verwendung von in Microsoft Entra ID verwalteten Identitäten und der Microsoft.Extensions.AI-Bibliothek zum Authentifizieren einer von Azure gehosteten App bei einer Azure OpenAI-Ressource.
Eine verwaltete Identität von Microsoft Entra ID ermöglicht Ihrer App den einfachen Zugriff auf andere von Microsoft Entra geschützte Ressourcen wie Azure OpenAI. Die Identität wird von der Azure-Plattform verwaltet und erfordert nicht, dass Sie Geheimnisse bereitstellen, verwalten oder aktualisieren.
Voraussetzungen
- Ein Azure-Konto, das über ein aktives Abonnement verfügt. Erstellen Sie ein kostenloses Konto.
- .NET-SDK
- Erstellen und Bereitstellen einer Azure OpenAI-Dienstressource
- Erstellen und Bereitstellen einer .NET-Anwendung in App Service-
Hinzufügen einer verwalteten Identität zu App Service
Verwaltete Identitäten stellen eine automatisch verwaltete Identität in Microsoft Entra-ID für Anwendungen bereit, die beim Herstellen einer Verbindung mit Ressourcen verwendet werden, die die Microsoft Entra-Authentifizierung unterstützen. Anwendungen können verwaltete Identitäten verwenden, um Microsoft Entra-Token abzurufen, ohne Anmeldeinformationen verwalten zu müssen. Ihre Anwendung kann zwei Arten von Identitäten zugewiesen werden:
- Eine systemseitig zugewiesene Identität ist an Ihre Anwendung gebunden und wird gelöscht, wenn Ihre App gelöscht wird. Eine App kann nur eine vom System zugewiesene Identität aufweisen.
- Eine vom Benutzer zugewiesene Identität ist eine eigenständige Azure-Ressource, die Ihrer App zugewiesen werden kann. Eine App kann über mehrere vom Benutzer zugewiesene Identitäten verfügen.
Navigieren Sie im Azure-Portalzur Seite Ihrer App, und scrollen Sie dann nach unten zur Gruppe Einstellungen.
Wählen Sie Identität aus.
Schalten Sie auf der Registerkarte Systemseitig zugewiesen den Status auf Ein um, und wählen Sie dann Speichern aus.
Anmerkung
Der vorherige Screenshot zeigt diesen Prozess in einem Azure App Service, die Schritte sind jedoch auf anderen Hosts wie Azure Container-Apps ähnlich.
Führen Sie den Befehl az webapp identity assign
aus, um eine vom System zugewiesene Identität zu erstellen:
az webapp identity assign --name <appName> --resource-group <groupName>
Hinzufügen einer Azure OpenAI-Benutzerrolle zur Identität
Navigieren Sie im Azure Portalzu dem Bereich, auf den Sie Azure OpenAI Zugriff gewähren möchten. Der Bereich kann eine -Managementgruppe, ein -Abonnement, eine -Ressourcengruppeoder eine bestimmte Azure OpenAI--Ressource sein.
Wählen Sie im linken Navigationsbereich Zugriffssteuerung (IAM) aus.
Wählen Sie Hinzufügen und dann Rollenzuweisung hinzufügen aus.
Wählen Sie auf der Registerkarte Rolle die Rolle Cognitive Services OpenAI User aus.
Wählen Sie auf der Registerkarte Mitglieder die verwaltete Identität aus.
Wählen Sie auf der Registerkarte "Überprüfen + Zuweisen" die Option "Überprüfen + Zuweisen" aus, um die Rolle zuzuweisen.
Sie können die Azure CLI verwenden, um Ihrer verwalteten Identität in unterschiedlichen Bereichen die OpenAI-Benutzerrolle "Cognitive Services OpenAI" zuzuweisen.
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"
Implementieren der Identitätsauthentifizierung in Ihrem App-Code
Fügen Sie Ihrer App die folgenden NuGet-Pakete hinzu:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.Azure dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI
Die vorherigen Pakete behandeln die folgenden Bedenken für dieses Szenario:
- Azure.Identity: Bietet Kernfunktionen für die Arbeit mit Microsoft Entra ID
- Azure.AI.OpenAI-: Ermöglicht Ihrer App die Schnittstelle mit dem Azure OpenAI-Dienst.
- Microsoft.Extensions.Azure: Stellt Hilfserweiterungen zum Registrieren von Diensten für die Abhängigkeitseinfügung bereit.
- Microsoft.Extensions.AI: Stellt KI-Abstraktionen für allgemeine KI-Aufgaben bereit
- Microsoft.Extensions.AI.OpenAI: Ermöglicht Ihnen die Verwendung von OpenAI-Diensttypen als von Microsoft.Extensions.AI bereitgestellte KI-Abstraktionen
Erstellen Sie in der
Program.cs
Datei Ihrer App einDefaultAzureCredential
Objekt, um verfügbare Anmeldeinformationen zu ermitteln und zu konfigurieren:// For example, will discover Visual Studio or Azure CLI credentials // in local environments and managed identity credentials in production deployments var credential = new DefaultAzureCredential( new DefaultAzureCredentialOptions { // If necessary, specify the tenant ID, // user-assigned identity client or resource ID, or other options } );
Erstellen Sie einen KI-Dienst, und registrieren Sie ihn bei der Dienstsammlung:
string endpoint = builder.Configuration["AZURE_OPENAI_ENDPOINT"]; string deployment = builder.Configuration["AZURE_OPENAI_GPT_NAME"]; builder.Services.AddChatClient( new AzureOpenAIClient(new Uri(endpoint), credential) .AsChatClient(deployment));
Einfügen des registrierten Diensts für die Verwendung in Ihren Endpunkten:
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.CompleteAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
Tipp
Weitere Informationen über die ASP.NET Core-Abhängigkeitsinjektion und das Registrieren anderer KI-Diensttypen finden Sie in der Dokumentation zur Abhängigkeitsinjektion im Azure SDK für .NET.