Freigeben über


Azure KI Services-Authentifizierung und -Autorisierung mit .NET

Anwendungsanforderungen an Azure KI Services müssen authentifiziert werden. In diesem Artikel erfahren Sie, welche Optionen für die Authentifizierung bei Azure OpenAI und anderen .NET verwendenden KI-Diensten zur Verfügung stehen. Diese Konzepte gelten für das Semantic Kernel-SDK sowie SDKs aus bestimmten Diensten wie Azure OpenAI. Die meisten KI-Dienste bieten zwei Hauptmethoden zum Authentifizieren von Apps und Benutzern:

  • Die schlüsselbasierte Authentifizierung ermöglicht den Zugriff auf einen Azure-Dienst mithilfe geheimer Schlüsselwerte. Diese geheimen Werte werden je nach Dienst manchmal als API-Schlüssel oder Zugriffsschlüssel bezeichnet.
  • Microsoft Entra ID bietet eine umfassende Lösung für die Identitäts- und Zugriffsverwaltung, um sicherzustellen, dass die richtigen Identitäten über die richtige Zugriffsebene auf verschiedene Azure-Ressourcen verfügen.

Die folgenden Abschnitte bieten einen konzeptionellen Überblick über diese Ansätze, keine detaillierten Implementierungsschritte. Ausführlichere Informationen zum Herstellen einer Verbindung zu Azure-Diensten finden Sie in den folgenden Ressourcen:

Hinweis

Die Beispiele in diesem Artikel konzentrieren sich hauptsächlich auf Verbindungen mit Azure OpenAI. Die gleichen Konzepte und Implementierungsschritte können jedoch ohne Weiteres auf viele andere Azure KI-Dienste übertragen werden.

Authentifizierung mit Schlüsseln

Zugriffsschlüssel ermöglichen es Apps und Tools, sich bei Azure KI-Diensten wie Azure OpenAI mithilfe eines geheimen Schlüssels zu authentifizieren, der vom Dienst bereitgestellt wird. Der geheime Schlüssel wird mithilfe von Tools wie dem Azure-Portal oder der Azure CLI abgerufen, und Sie können damit Ihren App-Code für die Verbindungsherstellung mit dem KI-Dienst konfigurieren:

builder.Services.AddAzureOpenAIChatCompletion(
    "deployment-model",
    "service-endpoint",
    "service-key"); // Secret key
var kernel = builder.Build();

Die Verwendung von Schlüsseln ist unkompliziert. Dennoch sollte dieser Ansatz mit Vorsicht verwendet werden. Schlüssel sind nicht die empfohlene Authentifizierungsoption, weil sie:

  • nicht das Prinzip der geringsten Berechtigungen befolgen. Sie stellen erhöhte Berechtigungen bereit, unabhängig vom Anwender oder Anwendungszweck
  • versehentlich in die Quellcodeverwaltung eingecheckt oder an unsicheren Orten gespeichert werden können
  • ohne Weiteres an Parteien weitergegeben oder gesendet werden können, die keinen Zugang darauf haben sollten
  • oft manuelle Verwaltung und Rotation erfordern

Stattdessen sollten Sie Microsoft Entra ID für die Authentifizierung in Betracht ziehen, denn dies ist die empfohlene Lösung für die meisten Szenarios.

Authentifizierung mit Microsoft Entra ID

Microsoft Entra ID ist ein cloudbasierter Identitäts- und Zugriffsverwaltungsdienst, der zahlreiche Features für verschiedene Geschäfts- und App-Szenarios bereitstellt. Microsoft Entra ID ist die empfohlene Lösung für die Verbindungsherstellung mit Azure OpenAI und anderen KI-Diensten und bietet die folgenden Vorteile:

  • Schlüssellose Authentifizierung mithilfe von Identitäten
  • Rollenbasierte Zugriffssteuerung, um Identitäten die geringsten erforderlichen Berechtigungen zuzuweisen
  • Kann unterschiedliche Anmeldeinformationen umgebungsübergreifend mithilfe der Clientbibliothek Azure.Identity erkennen, ohne dass Codeänderungen erforderlich sind
  • Führt administrative Wartungstasks automatisch durch, z. B. das Rotieren zugrunde liegender Schlüssel

Die Implementierung der Microsoft Entra-Authentifizierung in Ihrer App umfasst im Allgemeinen folgende Schritte:

  • Lokale Entwicklung:

    1. Melden Sie sich mithilfe eines lokalen Entwicklungstools wie der Azure CLI oder Visual Studio bei Azure an.
    2. Konfigurieren Sie Ihren Code für die Verwendung der Azure.Identity-Clientbibliothek und der DefaultAzureCredential-Klasse.
    3. Weisen Sie dem Konto, mit dem Sie angemeldet sind, Azure-Rollen zu, um den Zugriff auf den KI-Dienst zu erteilen.
  • In Azure gehostete App:

    1. Nachdem Sie die App für die Authentifizierung mithilfe der Azure.Identity-Clientbibliothek konfiguriert haben, stellen Sie die App in Azure bereit.
    2. Weisen Sie der in Azure gehosteten App eine verwaltete Identität zu.
    3. Weisen Sie der verwalteten Identität Azure-Rollen zu, um ihr Zugriff auf den KI-Dienst zu erteilen.

Die wichtigsten Konzepte dieses Workflows werden in den folgenden Abschnitten näher erläutert.

Lokales Authentifizieren bei Azure

Bei der lokalen Entwicklung von Apps, die eine Verbindung mit Azure KI Services herstellen, authentifizieren Sie sich mit einem Tool wie Visual Studio oder der Azure CLI bei Azure. Ihre lokalen Anmeldeinformationen können von der Azure.Identity-Clientbibliothek ermittelt und, wie im Abschnitt Konfigurieren des App-Codes beschrieben, dazu verwendet werden, Ihre App bei Azure-Diensten zu authentifizieren.

Um sich beispielsweise lokal mit der Azure CLI bei Azure zu authentifizieren, führen Sie den folgenden Befehl aus:

az login

Konfigurieren des App-Codes

Verwenden Sie die Azure.Identity-Clientbibliothek aus dem Azure SDK, um die Microsoft Entra-Authentifizierung in Ihrem Code zu implementieren. Die Azure.Identity-Bibliotheken enthalten die DefaultAzureCredential-Klasse, die basierend auf der aktuellen Umgebung und den verfügbaren Tools automatisch verfügbare Azure-Anmeldeinformationen ermittelt. In der Dokumentation zum Azure SDK für .NET finden Sie alle unterstützten Umgebungsanmeldeinformationen sowie die Reihenfolge, in der sie durchsucht werden.

Mit dem folgenden Code konfigurieren Sie Semantic Kernel z. B. für die Authentifizierung mithilfe von DefaultAzureCredential:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddAzureOpenAITextGeneration(
        "your-model",
        "your-endpoint",
        new DefaultAzureCredential())
    .Build();

Mit DefaultAzureCredential können Apps ohne Codeänderungen von der lokalen Entwicklung in die Produktion verschoben werden. Während der Entwicklung verwendet DefaultAzureCredential beispielsweise Ihre lokalen Benutzeranmeldeinformationen aus Visual Studio oder der Azure CLI, um sich beim KI-Dienst zu authentifizieren. Wenn die App in Azure bereitgestellt wird, verwendet DefaultAzureCredential die verwaltete Identität, die Ihrer App zugewiesen ist.

Zuweisen von Rollen zu Ihrer Identität

Die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC) ermöglicht eine differenzierte Zugriffsverwaltung von Azure-Ressourcen. Weisen Sie dem von DefaultAzureCredential verwendeten Sicherheitsprinzipal eine Rolle zu, um eine Verbindung mit einem Azure KI-Dienst herzustellen, unabhängig davon, ob es sich um einen einzelnen Benutzer, eine Gruppe, einen Dienstprinzipal oder eine verwaltete Identität handelt. Azure-Rollen sind eine Sammlung von Berechtigungen, die es der Identität ermöglichen, verschiedene Tasks wie das Generieren von Vervollständigungen oder das Erstellen und Löschen von Ressourcen auszuführen.

Weisen Sie der relevanten Identität mithilfe von Tools wie der Azure CLI, Bicep oder dem Azure-Portal Rollen wie Cognitive Services OpenAI-Benutzer (Rollen-ID: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) zu. Verwenden Sie beispielsweise den az role assignment create-Befehl, um eine Rolle über die Azure CLI zuzuweisen:

az role assignment create \
        --role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
        --assignee-object-id "$PRINCIPAL_ID" \
        --scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
        --assignee-principal-type User

In den folgenden Ressourcen erfahren Sie mehr über die Azure RBAC:

Zuweisen einer verwalteten Identität zu Ihrer App

In den meisten Szenarios sollten in Azure gehostete Apps eine verwaltete Identität verwenden, um eine Verbindung mit anderen Diensten wie Azure OpenAI herzustellen. Verwaltete Identitäten stellen eine vollständig verwaltete Identität in Microsoft Entra ID für Apps bereit, die beim Herstellen einer Verbindung mit Ressourcen verwendet werden sollte, die die Microsoft Entra-Authentifizierung unterstützen. DefaultAzureCredential ermittelt die Identität, die Ihrer App zugeordnet ist, und authentifiziert sich damit bei anderen Azure-Diensten.

Es gibt zwei Arten von verwalteten Identitäten, die Sie Ihrer App zuweisen können:

  • Eine systemseitig zugewiesene Identität ist an Ihre Anwendung gebunden und wird gelöscht, wenn Ihre App gelöscht wird. Eine App kann nur über eine systemseitig zugewiesene Identität verfügen.
  • Eine benutzerseitig zugewiesene Identität ist eine eigenständige Azure-Ressource, die Ihrer App zugewiesen werden kann. Eine App kann über mehrere benutzerseitig zugewiesene Identitäten verfügen.

Die Rollenzuweisung funktioniert bei verwalteten Identitäten genau so wie bei einzelnen Benutzerkonten, z. B. bei der Rolle Cognitive Services OpenAI-Benutzer. Weitere Informationen über das Arbeiten mit verwalteten Identitäten finden Sie in den folgenden Ressourcen: