Freigeben über


Konfigurieren der schlüssellosen Authentifizierung mit Microsoft Entra ID

Wichtig

Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Modelle, die für die Azure KI-Modellinferenz in Azure KI Services eingesetzt werden, unterstützen die schlüssellose Autorisierung mit Microsoft Entra ID. Die schlüssellose Autorisierung stärkt die Sicherheit, vereinfacht die Benutzererfahrung, reduziert die Bedienungskomplexität und bietet eine solide Compliance-Unterstützung für die moderne Entwicklung. Daher ist sie eine gute Wahl für Organisationen, die sichere und skalierbare Lösungen für die Identitätsverwaltung einführen.

In diesem Artikel wird erklärt, wie Sie Microsoft Entra ID für die Inferenz in Azure KI-Modellinferenz konfigurieren.

Grundlegendes zu Rollen im Kontext der Ressource in Azure

Microsoft Entra ID verwendet die Idee der rollenbasierten Zugriffssteuerung (RBAC) für die Autorisierung. Rollen sind für die Verwaltung des Zugriffs auf Ihre Cloudressourcen von zentraler Bedeutung. Eine Rolle ist im Wesentlichen eine Sammlung von Berechtigungen, die festlegen, welche Aktionen für bestimmte Azure-Ressourcen ausgeführt werden können. Durch die Zuweisung von Rollen zu Benutzenden, Gruppen, Dienstprinzipalen oder verwalteten Identitäten – zusammenfassend als Sicherheitsprinzipale bezeichnet – steuern Sie deren Zugriff auf bestimmte Ressourcen innerhalb Ihrer Azure-Umgebung.

Bei der Zuweisung einer Rolle geben Sie den Sicherheitsprinzipal, die Rollendefinition und den Umfang an. Diese Kombination wird als Rollenzuweisung bezeichnet. Die Azure KI-Modellinferenz ist eine Funktion der Azure KI Services-Ressourcen, und daher steuern die dieser bestimmten Ressource zugewiesenen Rollen den Zugriff für die Inferenz.

Sie identifizieren zwei verschiedene Arten des Zugriffs auf die Ressourcen:

  • Verwaltungszugriff: Die Aktionen, die mit der Verwaltung der Ressource zusammenhängen. Sie ändern in der Regel den Status der Ressource und deren Konfiguration. In Azure sind diese Vorgänge Steuerungsebenenvorgänge und können über das Azure-Portal, die Azure CLI oder die Infrastruktur als Code ausgeführt werden. Beispiele hierfür sind das Erstellen neuer Modelleinsätze, das Ändern von Konfigurationen für die Inhaltsfilterung, das Ändern der Version des bereitgestellten Modells oder das Ändern der SKU eines Einsatzes.

  • Entwicklerzugriff: Die Aktionen, die mit dem Verbrauch der Ressourcen zusammenhängen. Zum Beispiel durch Aufrufen der API für Chatvervollständigung. Die benutzende Person kann jedoch weder den Status noch die Konfiguration der Ressource ändern.

In Azure werden Verwaltungsvorgänge immer mithilfe der Microsoft Entra ID ausgeführt. Rollen wie Mitwirkende Person von Cognitive Services ermöglichen Es Ihnen, diese Vorgänge auszuführen. Andererseits können die Tätigkeiten von Fachkräften in der Entwicklung entweder mit Zugriffsschlüsseln oder/und mit der Microsoft Entra ID durchgeführt werden. Rollen wie Benutzende Person von Cognitive Services ermöglichen es Ihnen, diese Vorgänge auszuführen.

Wichtig

Der administrative Zugriff auf eine Ressource bedeutet nicht zwangsläufig, dass auch Fachkräfte in der Entwicklung darauf zugreifen können. Der explizite Zugriff durch die Gewährung von Rollen ist weiterhin erforderlich. Es ist analog zur Funktionsweise von Datenbankservern. Zugriffsrechte als Fachkraft in der IT-Verwaltung auf den Datenbankserver bedeuten nicht, dass Sie die Daten in einer Datenbank lesen können.

Führen Sie die folgenden Schritte aus, um den Zugriff für Fachkräfte in der Entwicklung auf die Azure KI-Modellinferenz in der Ressource „Azure KI Services“ zu konfigurieren.

Voraussetzungen

Damit Sie die Anweisungen in diesem Artikel ausführen können, benötigen Sie Folgendes:

  • Ein Azure-Abonnement. Wenn Sie GitHub-Modelle verwenden, können Sie Ihre Umgebung upgraden und während des Prozesses ein Azure-Abonnement erstellen. Lesen Sie in diesem Fall den Artikel Upgrade von GitHub-Modellen auf die Azure KI-Modellinferenz.

  • Eine Azure KI Services-Ressource. Weitere Informationen finden Sie unter Erstellen einer Azure KI Services-Ressource.

  • Ein Konto mit den Berechtigungen Microsoft.Authorization/roleAssignments/write und Microsoft.Authorization/roleAssignments/delete, etwa Fachkraft in der IT-Verwaltung für die rollenbasierte Zugriffssteuerung.

  • Zum Zuweisen einer Rolle müssen Sie drei Elemente angeben:

    • Sicherheitsprinzipal: Z. B. Ihr Benutzerkonto.
    • Rollendefinition: Die Rolle Benutzende Person von Cognitive Services.
    • Bereich: Die Azure KI Services-Ressource.

Konfigurieren der Microsoft Entra ID für Rückschlüsse

Führen Sie die folgenden Schritte aus, um die Microsoft Entra ID für Rückschlüsse zu konfigurieren:

  1. Wechseln Sie zum Azure-Portal, und suchen Sie die Azure KI Services-Ressource, die Sie verwenden. Wenn Sie Azure AI Foundry mit Projekten oder Hubs verwenden, können Sie wie folgt dorthin navigieren:

    1. Besuchen Sie das Azure KI Foundry-Portal.

    2. Wählen Sie auf der Startseite Verwaltungszentrum öffnen aus.

    3. Wechseln Sie zum Abschnitt Verbundene Ressourcen, und wählen Sie die Verbindung mit der Azure KI Services-Ressource aus, die Sie konfigurieren möchten. Wenn sie nicht aufgeführt ist, wählen Sie Alle anzeigen aus, um die vollständige Liste anzuzeigen.

    4. Wählen Sie im Abschnitt Verbindungsdetails unter Ressource den Namen der Azure-Ressource aus. Eine neue Seite wird geöffnet.

    5. Sie befinden sich jetzt im Azure-Portal, in dem Sie alle Aspekte der Ressource selbst verwalten können.

  2. Wählen Sie auf der linken Navigationsleiste Zugriffssteuerung (IAM) aus.

    Tipp

    Verwenden Sie die Option Meinen Zugriff anzeigen, um zu überprüfen, welche Rollen Ihnen bereits zugewiesen sind.

  3. Wählen Sie Rollenzuweisungen und dann Hinzufügen>Rollenzuweisung hinzufügen aus.

  4. Geben Sie unter StellenfunktionsrollenBenutzende Person von Cognitive Services ein. Die Liste der Rollen wird herausgefiltert.

  5. Wählen Sie die Rolle und dann Weiter aus.

  6. Wählen Sie unter Mitglieder die benutzende Person oder die Gruppe aus, der Sie Zugriff gewähren möchten. Wir empfehlen, wann immer möglich, Sicherheitsgruppen zu verwenden, da diese einfacher zu verwalten und zu pflegen sind.

  7. Wählen Sie Weiter aus, und beenden Sie den Assistenten.

  8. Die ausgewählte benutzende Person kann nun die Microsoft Entra ID für Rückschlüsse verwenden.

    Tipp

    Denken Sie daran, dass die Weitergabe von Azure-Rollenzuweisungen bis zu fünf Minuten dauern kann. Bei der Arbeit mit Sicherheitsgruppen werden hinzugefügte oder entfernte Benutzende sofort übernommen.

Beachten Sie, dass der schlüsselbasierte Zugriff für Benutzende, die bereits über Schlüssel verfügen, weiterhin möglich ist. Wenn Sie die Schlüssel widerrufen möchten, wählen Sie im Azure-Portal auf der linken Navigationsleiste die Option Ressourcenverwaltung>Schlüssel und Endpunkte>Schlüssel1 erneut generieren und Schlüssel2 erneut generieren aus.

Verwenden der Microsoft Entra ID in Ihrem Code

Sobald Sie die Microsoft Entra ID in Ihrer Ressource konfiguriert haben, müssen Sie Ihre Codierung aktualisieren, um sie beim Verwenden des Endpunkts für Schlussfolgerungen zu verwenden. Das folgende Beispiel zeigt, wie Sie ein Chatvervollständigungsmodell verwenden:

Installieren Sie das Paket azure-ai-inference mit Ihrem Paket-Manager, z. B. pip:

pip install azure-ai-inference>=1.0.0b5

Warnung

Azure KI Services-Ressource erfordert die Version azure-ai-inference>=1.0.0b5 für Python.

Anschließend können Sie das Paket verwenden, um das Modell zu nutzen. Das folgende Beispiel zeigt, wie Sie einen Client erstellen, um Chatvervollständigungen mit Entra ID zu nutzen:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=DefaultAzureCredential(),
    credential_scopes=["https://cognitiveservices.azure.com/.default"],
    model="mistral-large-2407",
)

Optionen für Anmeldeinformationen bei Verwendung der Microsoft Entra ID

DefaultAzureCredential ist eine eigensinnige, geordnete Abfolge von Mechanismen für die Authentifizierung bei Microsoft Entra ID. Jeder Authentifizierungsmechanismus ist eine von der TokenCredential-Klasse abgeleitete Klasse und wird als Anmeldeinformation bezeichnet. Zur Laufzeit versucht DefaultAzureCredential, sich mit den ersten Anmeldeinformationen zu authentifizieren. Wenn diese Anmeldeinformationen kein Zugriffstoken abrufen, werden die nächsten Anmeldeinformationen in der Sequenz ausprobiert usw., bis erfolgreich ein Zugriffstoken abgerufen wurde. Auf diese Weise kann Ihre App unterschiedliche Anmeldeinformationen in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu schreiben.

Wenn der vorherige Code auf Ihrer lokalen Entwicklungsarbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in lokal installierten Entwicklertools (etwa Visual Studio) nach einem Satz von Entwickleranmeldeinformationen. Beide Ansätze können verwendet werden, um die App während der lokalen Entwicklung bei Azure-Ressourcen zu authentifizieren.

Bei der Bereitstellung in Azure kann dieser Code Ihre App auch bei anderen Azure-Ressourcen authentifizieren. DefaultAzureCredential kann Umgebungseinstellungen und Konfigurationen für verwaltete Identitäten abrufen, um sich automatisch bei anderen Diensten zu authentifizieren.

Bewährte Methoden

  • Verwenden Sie deterministische Anmeldeinformationen in Produktionsumgebungen: Ziehen Sie in Produktionsumgebungen unbedingt den Wechsel von DefaultAzureCredential zu einer der folgenden deterministischen Lösungen in Betracht:

    • Eine bestimmte TokenCredential Implementierung, wie ManagedIdentityCredential. Weitere Optionen finden Sie in der Abgeleitete Liste.
    • Eine analysierte ChainedTokenCredential-Implementierung, die für die Azure-Umgebung optimiert ist, in der Ihre App ausgeführt wird. ChainedTokenCredential erstellt im Wesentlichen eine spezifische Liste zulässiger Anmeldeinformationen, wie z. B. ManagedIdentity für die Produktion und VisualStudioCredential für die Entwicklung.
  • Konfigurieren Sie systemseitig zugewiesene oder von Benutzenden zugewiesene verwaltete Identitäten für die Azure-Ressourcen, in denen Ihr Code ausgeführt wird, wenn möglich. Konfigurieren Sie den Zugriff auf Microsoft Entra ID für diese spezifischen Identitäten.

Verwenden der Microsoft Entra ID in Ihrem Projekt

Selbst wenn Ihre Ressource mit einer Microsoft Entra ID konfiguriert ist, verwenden Ihre Projekte möglicherweise weiterhin Schlüssel, um Vorhersagen von der Ressource zu nutzen. Bei der Verwendung des Azure AI Foundry-Playground werden die mit der Verbindung Ihres Projekts verknüpften Anmeldeinformationen verwendet.

Um dieses Verhalten zu ändern, müssen Sie die Verbindungen aus Ihren Projekten aktualisieren, um die Microsoft Entra ID zu verwenden. Führen Sie folgende Schritte aus:

  1. Besuchen Sie das Azure KI Foundry-Portal.

  2. Navigieren Sie zu den Projekten oder Hubs, die die Azure KI Services-Ressource über eine Verbindung verwenden.

  3. Wählen Sie das Verwaltungscenter aus.

  4. Wechseln Sie zum Abschnitt Verbundene Ressourcen, und wählen Sie die Verbindung mit der Azure KI Services-Ressource aus, die Sie konfigurieren möchten. Wenn sie nicht aufgeführt ist, wählen Sie Alle anzeigen aus, um die vollständige Liste anzuzeigen.

  5. Wählen Sie im Abschnitt Verbindungsdetails neben Details zum Zugriff das Bearbeitungssymbol aus.

  6. Ändern Sie unter Authentifizierung den Wert in Microsoft Entra ID.

  7. Wählen Sie Aktualisieren.

  8. Ihre Verbindung ist jetzt für die Arbeit mit Microsoft Entra ID konfiguriert.

Deaktivieren der schlüsselbasierten Authentifizierung in der Ressource

Die Deaktivierung der schlüsselbasierten Authentifizierung ist ratsam, wenn Sie Microsoft Entra ID implementiert und Kompatibilitäts- oder Fallbackprobleme in allen Anwendungen, die den Dienst nutzen, vollständig behoben haben.

Wichtig

Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Modelle, die für die Azure KI-Modellinferenz in Azure KI Services eingesetzt werden, unterstützen die schlüssellose Autorisierung mit Microsoft Entra ID. Die schlüssellose Autorisierung stärkt die Sicherheit, vereinfacht die Benutzererfahrung, reduziert die Bedienungskomplexität und bietet eine solide Compliance-Unterstützung für die moderne Entwicklung. Daher ist sie eine gute Wahl für Organisationen, die sichere und skalierbare Lösungen für die Identitätsverwaltung einführen.

In diesem Artikel wird erklärt, wie Sie Microsoft Entra ID für die Inferenz in Azure KI-Modellinferenz konfigurieren.

Grundlegendes zu Rollen im Kontext der Ressource in Azure

Microsoft Entra ID verwendet die Idee der rollenbasierten Zugriffssteuerung (RBAC) für die Autorisierung. Rollen sind für die Verwaltung des Zugriffs auf Ihre Cloudressourcen von zentraler Bedeutung. Eine Rolle ist im Wesentlichen eine Sammlung von Berechtigungen, die festlegen, welche Aktionen für bestimmte Azure-Ressourcen ausgeführt werden können. Durch die Zuweisung von Rollen zu Benutzenden, Gruppen, Dienstprinzipalen oder verwalteten Identitäten – zusammenfassend als Sicherheitsprinzipale bezeichnet – steuern Sie deren Zugriff auf bestimmte Ressourcen innerhalb Ihrer Azure-Umgebung.

Bei der Zuweisung einer Rolle geben Sie den Sicherheitsprinzipal, die Rollendefinition und den Umfang an. Diese Kombination wird als Rollenzuweisung bezeichnet. Die Azure KI-Modellinferenz ist eine Funktion der Azure KI Services-Ressourcen, und daher steuern die dieser bestimmten Ressource zugewiesenen Rollen den Zugriff für die Inferenz.

Sie identifizieren zwei verschiedene Arten des Zugriffs auf die Ressourcen:

  • Verwaltungszugriff: Die Aktionen, die mit der Verwaltung der Ressource zusammenhängen. Sie ändern in der Regel den Status der Ressource und deren Konfiguration. In Azure sind diese Vorgänge Steuerungsebenenvorgänge und können über das Azure-Portal, die Azure CLI oder die Infrastruktur als Code ausgeführt werden. Beispiele hierfür sind das Erstellen neuer Modelleinsätze, das Ändern von Konfigurationen für die Inhaltsfilterung, das Ändern der Version des bereitgestellten Modells oder das Ändern der SKU eines Einsatzes.

  • Entwicklerzugriff: Die Aktionen, die mit dem Verbrauch der Ressourcen zusammenhängen. Zum Beispiel durch Aufrufen der API für Chatvervollständigung. Die benutzende Person kann jedoch weder den Status noch die Konfiguration der Ressource ändern.

In Azure werden Verwaltungsvorgänge immer mithilfe der Microsoft Entra ID ausgeführt. Rollen wie Mitwirkende Person von Cognitive Services ermöglichen Es Ihnen, diese Vorgänge auszuführen. Andererseits können die Tätigkeiten von Fachkräften in der Entwicklung entweder mit Zugriffsschlüsseln oder/und mit der Microsoft Entra ID durchgeführt werden. Rollen wie Benutzende Person von Cognitive Services ermöglichen es Ihnen, diese Vorgänge auszuführen.

Wichtig

Der administrative Zugriff auf eine Ressource bedeutet nicht zwangsläufig, dass auch Fachkräfte in der Entwicklung darauf zugreifen können. Der explizite Zugriff durch die Gewährung von Rollen ist weiterhin erforderlich. Es ist analog zur Funktionsweise von Datenbankservern. Zugriffsrechte als Fachkraft in der IT-Verwaltung auf den Datenbankserver bedeuten nicht, dass Sie die Daten in einer Datenbank lesen können.

Führen Sie die folgenden Schritte aus, um den Zugriff für Fachkräfte in der Entwicklung auf die Azure KI-Modellinferenz in der Ressource „Azure KI Services“ zu konfigurieren.

Voraussetzungen

Damit Sie die Anweisungen in diesem Artikel ausführen können, benötigen Sie Folgendes:

  • Ein Azure-Abonnement. Wenn Sie GitHub-Modelle verwenden, können Sie Ihre Umgebung upgraden und während des Prozesses ein Azure-Abonnement erstellen. Lesen Sie in diesem Fall den Artikel Upgrade von GitHub-Modellen auf die Azure KI-Modellinferenz.

  • Eine Azure KI Services-Ressource. Weitere Informationen finden Sie unter Erstellen einer Azure KI Services-Ressource.

  • Ein Konto mit den Berechtigungen Microsoft.Authorization/roleAssignments/write und Microsoft.Authorization/roleAssignments/delete, etwa Fachkraft in der IT-Verwaltung für die rollenbasierte Zugriffssteuerung.

  • Zum Zuweisen einer Rolle müssen Sie drei Elemente angeben:

    • Sicherheitsprinzipal: Z. B. Ihr Benutzerkonto.
    • Rollendefinition: Die Rolle Benutzende Person von Cognitive Services.
    • Bereich: Die Azure KI Services-Ressource.
  • Installieren Sie die Azure CLI.

  • Ermitteln Sie die folgenden Informationen:

    • die Azure-Abonnement-ID

    • Name Ihrer Azure KI Services-Ressource

    • Ressourcengruppe, in der die Azure KI Services-Ressource bereitgestellt wurde

Konfigurieren der Microsoft Entra ID für Rückschlüsse

Führen Sie die folgenden Schritte aus, um die Microsoft Entra ID für Rückschlüsse in Ihrer Azure KI Services-Ressource zu konfigurieren:

  1. Melden Sie sich bei Ihrem Azure-Abonnement an:

    az login
    
  2. Wenn Sie über mehrere Abonnements verfügen, wählen Sie das Abonnement aus, in dem sich Ihre Ressource befindet:

    az account set --subscription "<subscription-id>"
    
  3. Legen Sie die folgenden Umgebungsvariablen anhand des Namens der Azure KI Services-Ressource, die Sie verwenden möchten, und der entsprechenden Ressourcengruppe fest.

    ACCOUNT_NAME="<ai-services-resource-name>"
    RESOURCE_GROUP="<resource-group>"
    
  4. Rufen Sie den vollständigen Namen Ihrer Ressource ab:

    RESOURCE_ID=$(az resource show -g $RESOURCE_GROUP -n $ACCOUNT_NAME --resource-type "Microsoft.CognitiveServices/accounts")
    
  5. Rufen Sie die Objekt-ID des Sicherheitsprinzipals ab, dem Sie Berechtigungen zuweisen möchten. Das folgende Beispiel zeigt, wie die Objekt-ID zugeordnet wird, die mit den folgenden Elementen verknüpft ist:

    Ihr eigenes Konto, mit dem Sie sich angemeldet haben:

    OBJECT_ID=$(az ad signed-in-user show --query id --output tsv)
    

    Eine Sicherheitsgruppe:

    OBJECT_ID=$(az ad group show --group "<group-name>" --query id --output tsv)
    

    Ein Dienstprinzipal:

    OBJECT_ID=$(az ad sp show --id "<service-principal-guid>" --query id --output tsv)
    
  6. Weisen Sie dem Dienstprinzipal (im Bereich der Ressource) die Rolle Benutzende Person von Cognitive Services zu. Durch Zuweisen einer Rolle gewähren Sie dem Dienstprinzipal Zugriff auf diese Ressource.

    az role assignment create --assignee-object-id $OBJECT_ID --role "Cognitive Services User" --scope $RESOURCE_ID
    
  7. Die ausgewählte benutzende Person kann nun die Microsoft Entra ID für Rückschlüsse verwenden.

    Tipp

    Denken Sie daran, dass die Weitergabe von Azure-Rollenzuweisungen bis zu fünf Minuten dauern kann. Das Hinzufügen oder Entfernen von Benutzenden aus einer Sicherheitsgruppe wird sofort weitergegeben.

Verwenden der Microsoft Entra ID in Ihrem Code

Sobald Microsoft Entra ID in Ihrer Ressource konfiguriert ist, müssen Sie Ihre Codierung aktualisieren, um sie beim Verwenden des Endpunkts für Schlussfolgerungen zu verwenden. Das folgende Beispiel zeigt, wie Sie ein Chatvervollständigungsmodell verwenden:

Installieren Sie das Paket azure-ai-inference mit Ihrem Paket-Manager, z. B. pip:

pip install azure-ai-inference>=1.0.0b5

Warnung

Azure KI Services-Ressource erfordert die Version azure-ai-inference>=1.0.0b5 für Python.

Anschließend können Sie das Paket verwenden, um das Modell zu nutzen. Das folgende Beispiel zeigt, wie Sie einen Client erstellen, um Chatvervollständigungen mit Entra ID zu nutzen:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=DefaultAzureCredential(),
    credential_scopes=["https://cognitiveservices.azure.com/.default"],
    model="mistral-large-2407",
)

Optionen für Anmeldeinformationen bei Verwendung der Microsoft Entra ID

DefaultAzureCredential ist eine eigensinnige, geordnete Abfolge von Mechanismen für die Authentifizierung bei Microsoft Entra ID. Jeder Authentifizierungsmechanismus ist eine von der TokenCredential-Klasse abgeleitete Klasse und wird als Anmeldeinformation bezeichnet. Zur Laufzeit versucht DefaultAzureCredential, sich mit den ersten Anmeldeinformationen zu authentifizieren. Wenn diese Anmeldeinformationen kein Zugriffstoken abrufen, werden die nächsten Anmeldeinformationen in der Sequenz ausprobiert usw., bis erfolgreich ein Zugriffstoken abgerufen wurde. Auf diese Weise kann Ihre App unterschiedliche Anmeldeinformationen in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu schreiben.

Wenn der vorherige Code auf Ihrer lokalen Entwicklungsarbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in lokal installierten Entwicklertools (etwa Visual Studio) nach einem Satz von Entwickleranmeldeinformationen. Beide Ansätze können verwendet werden, um die App während der lokalen Entwicklung bei Azure-Ressourcen zu authentifizieren.

Bei der Bereitstellung in Azure kann dieser Code Ihre App auch bei anderen Azure-Ressourcen authentifizieren. DefaultAzureCredential kann Umgebungseinstellungen und Konfigurationen für verwaltete Identitäten abrufen, um sich automatisch bei anderen Diensten zu authentifizieren.

Bewährte Methoden

  • Verwenden Sie deterministische Anmeldeinformationen in Produktionsumgebungen: Ziehen Sie in Produktionsumgebungen unbedingt den Wechsel von DefaultAzureCredential zu einer der folgenden deterministischen Lösungen in Betracht:

    • Eine bestimmte TokenCredential Implementierung, wie ManagedIdentityCredential. Weitere Optionen finden Sie in der Abgeleitete Liste.
    • Eine analysierte ChainedTokenCredential-Implementierung, die für die Azure-Umgebung optimiert ist, in der Ihre App ausgeführt wird. ChainedTokenCredential erstellt im Wesentlichen eine spezifische Liste zulässiger Anmeldeinformationen, wie z. B. ManagedIdentity für die Produktion und VisualStudioCredential für die Entwicklung.
  • Konfigurieren Sie systemseitig zugewiesene oder von Benutzenden zugewiesene verwaltete Identitäten für die Azure-Ressourcen, in denen Ihr Code ausgeführt wird, wenn möglich. Konfigurieren Sie den Zugriff auf Microsoft Entra ID für diese spezifischen Identitäten.

Wichtig

Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Modelle, die für die Azure KI-Modellinferenz in Azure KI Services eingesetzt werden, unterstützen die schlüssellose Autorisierung mit Microsoft Entra ID. Die schlüssellose Autorisierung stärkt die Sicherheit, vereinfacht die Benutzererfahrung, reduziert die Bedienungskomplexität und bietet eine solide Compliance-Unterstützung für die moderne Entwicklung. Daher ist sie eine gute Wahl für Organisationen, die sichere und skalierbare Lösungen für die Identitätsverwaltung einführen.

In diesem Artikel wird erklärt, wie Sie Microsoft Entra ID für die Inferenz in Azure KI-Modellinferenz konfigurieren.

Grundlegendes zu Rollen im Kontext der Ressource in Azure

Microsoft Entra ID verwendet die Idee der rollenbasierten Zugriffssteuerung (RBAC) für die Autorisierung. Rollen sind für die Verwaltung des Zugriffs auf Ihre Cloudressourcen von zentraler Bedeutung. Eine Rolle ist im Wesentlichen eine Sammlung von Berechtigungen, die festlegen, welche Aktionen für bestimmte Azure-Ressourcen ausgeführt werden können. Durch die Zuweisung von Rollen zu Benutzenden, Gruppen, Dienstprinzipalen oder verwalteten Identitäten – zusammenfassend als Sicherheitsprinzipale bezeichnet – steuern Sie deren Zugriff auf bestimmte Ressourcen innerhalb Ihrer Azure-Umgebung.

Bei der Zuweisung einer Rolle geben Sie den Sicherheitsprinzipal, die Rollendefinition und den Umfang an. Diese Kombination wird als Rollenzuweisung bezeichnet. Die Azure KI-Modellinferenz ist eine Funktion der Azure KI Services-Ressourcen, und daher steuern die dieser bestimmten Ressource zugewiesenen Rollen den Zugriff für die Inferenz.

Sie identifizieren zwei verschiedene Arten des Zugriffs auf die Ressourcen:

  • Verwaltungszugriff: Die Aktionen, die mit der Verwaltung der Ressource zusammenhängen. Sie ändern in der Regel den Status der Ressource und deren Konfiguration. In Azure sind diese Vorgänge Steuerungsebenenvorgänge und können über das Azure-Portal, die Azure CLI oder die Infrastruktur als Code ausgeführt werden. Beispiele hierfür sind das Erstellen neuer Modelleinsätze, das Ändern von Konfigurationen für die Inhaltsfilterung, das Ändern der Version des bereitgestellten Modells oder das Ändern der SKU eines Einsatzes.

  • Entwicklerzugriff: Die Aktionen, die mit dem Verbrauch der Ressourcen zusammenhängen. Zum Beispiel durch Aufrufen der API für Chatvervollständigung. Die benutzende Person kann jedoch weder den Status noch die Konfiguration der Ressource ändern.

In Azure werden Verwaltungsvorgänge immer mithilfe der Microsoft Entra ID ausgeführt. Rollen wie Mitwirkende Person von Cognitive Services ermöglichen Es Ihnen, diese Vorgänge auszuführen. Andererseits können die Tätigkeiten von Fachkräften in der Entwicklung entweder mit Zugriffsschlüsseln oder/und mit der Microsoft Entra ID durchgeführt werden. Rollen wie Benutzende Person von Cognitive Services ermöglichen es Ihnen, diese Vorgänge auszuführen.

Wichtig

Der administrative Zugriff auf eine Ressource bedeutet nicht zwangsläufig, dass auch Fachkräfte in der Entwicklung darauf zugreifen können. Der explizite Zugriff durch die Gewährung von Rollen ist weiterhin erforderlich. Es ist analog zur Funktionsweise von Datenbankservern. Zugriffsrechte als Fachkraft in der IT-Verwaltung auf den Datenbankserver bedeuten nicht, dass Sie die Daten in einer Datenbank lesen können.

Führen Sie die folgenden Schritte aus, um den Zugriff für Fachkräfte in der Entwicklung auf die Azure KI-Modellinferenz in der Ressource „Azure KI Services“ zu konfigurieren.

Voraussetzungen

Damit Sie die Anweisungen in diesem Artikel ausführen können, benötigen Sie Folgendes:

  • Ein Azure-Abonnement. Wenn Sie GitHub-Modelle verwenden, können Sie Ihre Umgebung upgraden und während des Prozesses ein Azure-Abonnement erstellen. Lesen Sie in diesem Fall den Artikel Upgrade von GitHub-Modellen auf die Azure KI-Modellinferenz.

  • Eine Azure KI Services-Ressource. Weitere Informationen finden Sie unter Erstellen einer Azure KI Services-Ressource.

  • Ein Konto mit den Berechtigungen Microsoft.Authorization/roleAssignments/write und Microsoft.Authorization/roleAssignments/delete, etwa Fachkraft in der IT-Verwaltung für die rollenbasierte Zugriffssteuerung.

  • Zum Zuweisen einer Rolle müssen Sie drei Elemente angeben:

    • Sicherheitsprinzipal: Z. B. Ihr Benutzerkonto.
    • Rollendefinition: Die Rolle Benutzende Person von Cognitive Services.
    • Bereich: Die Azure KI Services-Ressource.
  • Installieren Sie die Azure CLI.

  • Ermitteln Sie die folgenden Informationen:

    • die Azure-Abonnement-ID

Informationen zu diesem Tutorial

Das Beispiel in diesem Artikel basiert auf Codebeispielen, die im Repository Azure-Samples/azureai-model-inference-bicep enthalten sind. Wenn Sie die Befehle lokal ausführen möchten, ohne Dateiinhalte kopieren oder einfügen zu müssen, verwenden Sie die folgenden Befehle, um das Repository zu klonen und zum Ordner für Ihre Programmiersprache zu wechseln:

git clone https://github.com/Azure-Samples/azureai-model-inference-bicep

Die Dateien für dieses Beispiel befinden sich in:

cd azureai-model-inference-bicep/infra

Grundlegendes zu den Ressourcen

Dieses Tutorial unterstütz Sie beim Erstellen der folgenden Elemente:

  • Eine Azure KI Services-Ressource mit deaktiviertem Schlüsselzugriff. Der Einfachheit halber werden in dieser Vorlage keine Modelle bereitgestellt.
  • Eine Rollenzuweisung für einen bestimmten Sicherheitsprinzipal mit der Rolle Benutzende Person von Cognitive Services.

Zum Erstellen dieser Ressourcen verwenden Sie die folgenden Elemente:

  1. Verwenden Sie die Vorlage modules/ai-services-template.bicep, um Ihre Azure KI Services-Ressource zu beschreiben:

    modules/ai-services-template.bicep

    @description('Location of the resource.')
    param location string = resourceGroup().location
    
    @description('Name of the Azure AI Services account.')
    param accountName string
    
    @description('The resource model definition representing SKU')
    param sku string = 'S0'
    
    @description('Whether or not to allow keys for this account.')
    param allowKeys bool = true
    
    @allowed([
      'Enabled'
      'Disabled'
    ])
    @description('Whether or not public endpoint access is allowed for this account.')
    param publicNetworkAccess string = 'Enabled'
    
    @allowed([
      'Allow'
      'Deny'
    ])
    @description('The default action for network ACLs.')
    param networkAclsDefaultAction string = 'Allow'
    
    resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
      name: accountName
      location: location
      identity: {
        type: 'SystemAssigned'
      }
      sku: {
        name: sku
      }
      kind: 'AIServices'
      properties: {
        publicNetworkAccess: publicNetworkAccess
        networkAcls: {
          defaultAction: networkAclsDefaultAction
        }
        disableLocalAuth: allowKeys
      }
    }
    
    output endpointUri string = account.properties.endpoints['Azure AI Model Inference API']
    output id string = account.id
    

    Tipp

    Beachten Sie, dass diese Vorlage den Parameter allowKeys enthalten kann, wodurch die Verwendung von Schlüsseln in der Ressource deaktiviert wird, wenn er false ist. Diese Konfiguration ist optional.

  2. Verwenden Sie die Vorlage modules/role-assignment-template.bicep, um eine Rollenzuweisung in Azure zu beschreiben:

    modules/role-assignment-template.bicep

    @description('Specifies the role definition ID used in the role assignment.')
    param roleDefinitionID string
    
    @description('Specifies the principal ID assigned to the role.')
    param principalId string
    
    @description('Specifies the resource ID of the resource to assign the role to.')
    param scopeResourceId string = resourceGroup().id
    
    var roleAssignmentName= guid(principalId, roleDefinitionID, scopeResourceId)
    resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
      name: roleAssignmentName
      properties: {
        roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID)
        principalId: principalId
      }
    }
    
    output name string = roleAssignment.name
    output resourceId string = roleAssignment.id
    

Erstellen der Ressourcen

Führen Sie in der Konsole die folgenden Schritte aus:

  1. Definieren Sie die Hauptbereitstellung:

    deploy-entra-id.bicep

    @description('Location to create the resources in')
    param location string = resourceGroup().location
    
    @description('Name of the resource group to create the resources in')
    param resourceGroupName string = resourceGroup().name
    
    @description('Name of the AI Services account to create')
    param accountName string = 'azurei-models-dev'
    
    @description('ID of the developers to assign the user role to')
    param securityPrincipalId string
    
    module aiServicesAccount 'modules/ai-services-template.bicep' = {
      name: 'aiServicesAccount'
      scope: resourceGroup(resourceGroupName)
      params: {
        accountName: accountName
        location: location
        allowKeys: false
      }
    }
    
    module roleAssignmentDeveloperAccount 'modules/role-assignment-template.bicep' = {
      name: 'roleAssignmentDeveloperAccount'
      scope: resourceGroup(resourceGroupName)
      params: {
        roleDefinitionID: 'a97b65f3-24c7-4388-baec-2e87135dc908' // Azure Cognitive Services User
        principalId: securityPrincipalId
      }
    }
    
    output endpoint string = aiServicesAccount.outputs.endpointUri
    
  2. Melden Sie sich bei Azure an:

    az login
    
  3. Stellen Sie sicher, dass Sie sich im richtigen Abonnement befinden:

    az account set --subscription "<subscription-id>"
    
  4. Führen Sie die Bereitstellung aus:

    RESOURCE_GROUP="<resource-group-name>"
    SECURITY_PRINCIPAL_ID="<your-security-principal-id>"
    
    az deployment group create \
      --resource-group $RESOURCE_GROUP \
      --securityPrincipalId $SECURITY_PRINCIPAL_ID
      --template-file deploy-entra-id.bicep
    
  5. Die Vorlage gibt den Azure KI-Modellinferenzendpunkt aus, über den Sie alle von Ihnen erstellten Modellbereitstellungen nutzen können.

Verwenden der Microsoft Entra ID in Ihrem Code

Sobald Sie die Microsoft Entra ID in Ihrer Ressource konfiguriert haben, müssen Sie Ihre Codierung aktualisieren, um sie beim Verwenden des Endpunkts für Schlussfolgerungen zu verwenden. Das folgende Beispiel zeigt, wie Sie ein Chatvervollständigungsmodell verwenden:

Installieren Sie das Paket azure-ai-inference mit Ihrem Paket-Manager, z. B. pip:

pip install azure-ai-inference>=1.0.0b5

Warnung

Azure KI Services-Ressource erfordert die Version azure-ai-inference>=1.0.0b5 für Python.

Anschließend können Sie das Paket verwenden, um das Modell zu nutzen. Das folgende Beispiel zeigt, wie Sie einen Client erstellen, um Chatvervollständigungen mit Entra ID zu nutzen:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential

client = ChatCompletionsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=DefaultAzureCredential(),
    credential_scopes=["https://cognitiveservices.azure.com/.default"],
    model="mistral-large-2407",
)

Optionen für Anmeldeinformationen bei Verwendung der Microsoft Entra ID

DefaultAzureCredential ist eine eigensinnige, geordnete Abfolge von Mechanismen für die Authentifizierung bei Microsoft Entra ID. Jeder Authentifizierungsmechanismus ist eine von der TokenCredential-Klasse abgeleitete Klasse und wird als Anmeldeinformation bezeichnet. Zur Laufzeit versucht DefaultAzureCredential, sich mit den ersten Anmeldeinformationen zu authentifizieren. Wenn diese Anmeldeinformationen kein Zugriffstoken abrufen, werden die nächsten Anmeldeinformationen in der Sequenz ausprobiert usw., bis erfolgreich ein Zugriffstoken abgerufen wurde. Auf diese Weise kann Ihre App unterschiedliche Anmeldeinformationen in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu schreiben.

Wenn der vorherige Code auf Ihrer lokalen Entwicklungsarbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in lokal installierten Entwicklertools (etwa Visual Studio) nach einem Satz von Entwickleranmeldeinformationen. Beide Ansätze können verwendet werden, um die App während der lokalen Entwicklung bei Azure-Ressourcen zu authentifizieren.

Bei der Bereitstellung in Azure kann dieser Code Ihre App auch bei anderen Azure-Ressourcen authentifizieren. DefaultAzureCredential kann Umgebungseinstellungen und Konfigurationen für verwaltete Identitäten abrufen, um sich automatisch bei anderen Diensten zu authentifizieren.

Bewährte Methoden

  • Verwenden Sie deterministische Anmeldeinformationen in Produktionsumgebungen: Ziehen Sie in Produktionsumgebungen unbedingt den Wechsel von DefaultAzureCredential zu einer der folgenden deterministischen Lösungen in Betracht:

    • Eine bestimmte TokenCredential Implementierung, wie ManagedIdentityCredential. Weitere Optionen finden Sie in der Abgeleitete Liste.
    • Eine analysierte ChainedTokenCredential-Implementierung, die für die Azure-Umgebung optimiert ist, in der Ihre App ausgeführt wird. ChainedTokenCredential erstellt im Wesentlichen eine spezifische Liste zulässiger Anmeldeinformationen, wie z. B. ManagedIdentity für die Produktion und VisualStudioCredential für die Entwicklung.
  • Konfigurieren Sie systemseitig zugewiesene oder von Benutzenden zugewiesene verwaltete Identitäten für die Azure-Ressourcen, in denen Ihr Code ausgeführt wird, wenn möglich. Konfigurieren Sie den Zugriff auf Microsoft Entra ID für diese spezifischen Identitäten.

Deaktivieren der schlüsselbasierten Authentifizierung in der Ressource

Die Deaktivierung der schlüsselbasierten Authentifizierung ist ratsam, wenn Sie Microsoft Entra ID implementiert und Kompatibilitäts- oder Fallbackprobleme in allen Anwendungen, die den Dienst nutzen, vollständig behoben haben. Sie können dies erreichen, indem Sie die Eigenschaft disableLocalAuth ändern:

modules/ai-services-template.bicep

@description('Location of the resource.')
param location string = resourceGroup().location

@description('Name of the Azure AI Services account.')
param accountName string

@description('The resource model definition representing SKU')
param sku string = 'S0'

@description('Whether or not to allow keys for this account.')
param allowKeys bool = true

@allowed([
  'Enabled'
  'Disabled'
])
@description('Whether or not public endpoint access is allowed for this account.')
param publicNetworkAccess string = 'Enabled'

@allowed([
  'Allow'
  'Deny'
])
@description('The default action for network ACLs.')
param networkAclsDefaultAction string = 'Allow'

resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
  name: accountName
  location: location
  identity: {
    type: 'SystemAssigned'
  }
  sku: {
    name: sku
  }
  kind: 'AIServices'
  properties: {
    publicNetworkAccess: publicNetworkAccess
    networkAcls: {
      defaultAction: networkAclsDefaultAction
    }
    disableLocalAuth: allowKeys
  }
}

output endpointUri string = account.properties.endpoints['Azure AI Model Inference API']
output id string = account.id

Nächste Schritte