Freigeben über


Authentifizieren von Node.js-Apps bei Azure-Diensten während der lokalen Entwicklung mithilfe von Entwicklerkonten

Während der lokalen Entwicklung müssen sich Anwendungen bei Azure authentifizieren, um auf verschiedene Azure-Dienste zuzugreifen. Zwei gängige Ansätze für die lokale Authentifizierung sind die Verwendung eines Dienstprinzipals oder die Verwendung eines Entwicklerkontos. In diesem Artikel wird erläutert, wie Sie ein Entwicklerkonto verwenden. In den folgenden Abschnitten lernen Sie Folgendes:

  • Verwenden von Microsoft Entra-Gruppen zum effizienten Verwalten von Berechtigungen für mehrere Entwicklerkonten
  • So weisen Sie Entwicklerkonten Rollen zu, um Berechtigungen festzulegen
  • Anmelden bei unterstützten lokalen Entwicklungstools
  • So authentifizieren Sie sich mithilfe eines Entwicklerkontos aus Ihrem App-Code

Damit eine App bei Azure während der lokalen Entwicklung mithilfe der Azure-Anmeldeinformationen des Entwicklers authentifiziert werden kann, muss der Entwickler über eine der folgenden Entwicklertools bei Azure angemeldet sein:

  • Azure-Befehlszeilenschnittstelle (Azure CLI)
  • Azure Developer CLI (Befehlszeilenschnittstelle für Entwickler)
  • Azure PowerShell
  • Visual Studio Code

Die Azure Identity-Bibliothek kann erkennen, dass der Entwickler von einem dieser Tools aus angemeldet ist. Die Bibliothek kann dann das Microsoft Entra-Zugriffstoken über das Tool abrufen, um die App bei Azure als angemeldeten Benutzer zu authentifizieren.

Dieser Ansatz nutzt die vorhandenen Azure-Konten des Entwicklers, um den Authentifizierungsprozess zu optimieren. Das Konto eines Entwicklers verfügt jedoch wahrscheinlich über mehr Berechtigungen als für die App erforderlich, wodurch die Berechtigungen überschritten werden, mit denen die App in der Produktion ausgeführt wird. Alternativ können Sie Anwendungsdienstprinzipale erstellen, die während der lokalen Entwicklung verwendet werden können, die nur auf den Von der App benötigten Zugriff zugreifen können.

Erstellen einer Microsoft Entra-Gruppe für die lokale Entwicklung

Erstellen Sie eine Microsoft Entra-Gruppe, um die Rollen (Berechtigungen) zu kapseln, die die App in der lokalen Entwicklung benötigt, anstatt die Rollen einzelnen Dienstprinzipalobjekten zuzuweisen. Dieser Ansatz bietet die folgenden Vorteile:

  • Jeder Entwickler hat die gleichen Rollen auf Gruppenebene zugewiesen.
  • Wenn eine neue Rolle für die App erforderlich ist, muss sie nur der Gruppe für die App hinzugefügt werden.
  • Wenn ein neuer Entwickler dem Team beitritt, wird ein neuer Anwendungsdienstprinzipal für den Entwickler erstellt und der Gruppe hinzugefügt, um sicherzustellen, dass der Entwickler über die richtigen Berechtigungen für die Arbeit an der App verfügt.
  1. Navigieren Sie im Azure-Portal zur Übersichtsseite der Microsoft Entra-ID .

  2. Wählen Sie im linken Menü "Alle Gruppen " aus.

  3. Wählen Sie auf der Seite "Gruppen " die Option "Neue Gruppe" aus.

  4. Füllen Sie auf der Seite "Neue Gruppe " die folgenden Formularfelder aus:

    • Gruppentyp: Wählen Sie Sicherheit aus.
    • Gruppenname: Geben Sie einen Namen für die Gruppe ein, die einen Verweis auf den App- oder Umgebungsnamen enthält.
    • Gruppenbeschreibung: Geben Sie eine Beschreibung ein, die den Zweck der Gruppe erläutert.

    Screenshot zum Erstellen einer Gruppe im Azure-Portal.

  5. Wählen Sie unter Mitglieder den Link Keine Mitglieder ausgewählt aus, um der Gruppe Mitglieder hinzuzufügen.

  6. Suchen Sie im daraufhin geöffneten Flyoutbereich nach dem zuvor erstellten Dienstprinzipal, und wählen Sie ihn aus den gefilterten Ergebnissen aus. Wählen Sie unten im Bereich die Schaltfläche "Auswählen " aus, um Ihre Auswahl zu bestätigen.

  7. Wählen Sie unten auf der Seite "Neue Gruppe erstellen" aus, um die Gruppe zu erstellen und zur Seite "Alle Gruppen" zurückzukehren. Wenn die neue Gruppe nicht aufgeführt ist, warten Sie einen Moment, und aktualisieren Sie die Seite.

Weisen Sie der Gruppe Rollen zu

Ermitteln Sie als Nächstes, welche Rollen (Berechtigungen) Ihre App für welche Ressourcen benötigt, und weisen Sie diese Rollen der von Ihnen erstellten Microsoft Entra-Gruppe zu. Gruppen können einer Rolle im Ressourcen-, Ressourcengruppen- oder Abonnementbereich zugewiesen werden. In diesem Beispiel wird gezeigt, wie Rollen im Ressourcengruppenbereich zugewiesen werden, da die meisten Apps alle ihre Azure-Ressourcen in einer einzelnen Ressourcengruppe gruppieren.

  1. Navigieren Sie im Azure-Portal zur Seite "Übersicht" der Ressourcengruppe, die Ihre App enthält.

  2. Wählen Sie im linken Navigationsbereich die Option Zugriffssteuerung (IAM).

  3. Wählen Sie auf der Seite access control (IAM)+ Hinzufügen und dann im Dropdownmenü " Rollenzuweisung hinzufügen " aus. Die Seite " Rollenzuweisung hinzufügen " bietet mehrere Registerkarten zum Konfigurieren und Zuweisen von Rollen.

  4. Verwenden Sie auf der Registerkarte " Rolle " das Suchfeld, um die Rolle zu suchen, die Sie zuweisen möchten. Wählen Sie die Rolle und dann "Weiter" aus.

  5. Auf der Registerkarte „Mitglieder“

    • Wählen Sie für den Wert "Zugriff zuweisen""Benutzer", "Gruppe" oder "Dienstprinzipal" aus.
    • Wählen Sie für den Wert " Mitglieder " die Option "Mitglieder auswählen " aus, um den Flyoutbereich " Mitglieder auswählen " zu öffnen.
    • Suchen Sie nach der Zuvor erstellten Microsoft Entra-Gruppe, und wählen Sie sie aus den gefilterten Ergebnissen aus. Wählen Sie Auswählen aus, um die Gruppe auszuwählen und das Flyout-Panel zu schließen.
    • Wählen Sie "Überprüfen" und "Zuweisen " am unteren Rand der Registerkarte " Mitglieder " aus.

    Screenshot, der zeigt, wie sie der Microsoft Entra-Gruppe eine Rolle zuweisen.

  6. Wählen Sie auf der Registerkarte " Überprüfen+ Zuweisen " die Option "Überprüfen" und "Zuweisen " am unteren Rand der Seite aus.

Anmelden bei Azure mithilfe von Entwicklertools

Melden Sie sich als Nächstes mit einem von mehreren Entwicklertools bei Azure an, die zum Durchführen der Authentifizierung in Ihrer Entwicklungsumgebung verwendet werden können. Das Konto, das Sie authentifizieren, sollte auch in der Microsoft Entra-Gruppe vorhanden sein, die Sie zuvor erstellt und konfiguriert haben.

Entwickler können Azure CLI verwenden, um sich bei Microsoft Entra-ID zu authentifizieren. Apps, die DefaultAzureCredential oder AzureCliCredential verwenden, können dieses Konto dann nutzen, um App-Anfragen zu authentifizieren, wenn sie lokal ausgeführt werden.

Führen Sie den az login Befehl aus, um sich mit der Azure CLI zu authentifizieren. Auf einem System mit einem Standardwebbrowser startet die Azure CLI den Browser, um den Benutzer zu authentifizieren.

az login

Für Systeme ohne Standardwebbrowser verwendet der befehl az login den Authentifizierungsfluss von Gerätecode. Der Benutzer kann auch erzwingen, dass die Azure CLI den Gerätecodefluss verwendet, anstatt einen Browser zu starten, indem er das argument --use-device-code angibt.

az login --use-device-code

Authentifizieren von Azure-Diensten aus Ihrer App

Die Azure Identity-Bibliothek bietet Implementierungen von TokenCredential , die verschiedene Szenarien und Microsoft Entra-Authentifizierungsflüsse unterstützen. Die folgenden Schritte veranschaulichen, wie Sie DefaultAzureCredential oder eine bestimmte Anmeldeinformation eines Entwicklungstools verwenden, wenn Sie lokal mit Benutzerkonten arbeiten.

Tipp

Wenn Ihr Team mehrere Entwicklungstools für die Authentifizierung bei Azure verwendet, bevorzugen Sie eine lokale entwicklungsoptimierte Instanz von DefaultAzureCredential über toolspezifischen Anmeldeinformationen.

Implementieren des Codes

  1. Fügen Sie der Anwendung das @azure-/Identitätspaket hinzu.

    npm install @azure/identity
    

    Hinweis

    Wenn Sie VisualStudioCodeCredential verwenden möchten, müssen Sie auch das Plugin-Paket @azure/identity-vscode installieren. Laden Sie anschließend die Zugangsdaten explizit. Ein Beispiel finden Sie unter @azure/identity-vscode README.

  2. Wählen Sie eine der Anmeldeinformationsimplementierungen basierend auf Ihrem Szenario aus.

Verwenden Sie spezifische Anmeldeinformationen für Ihr Entwicklungstool.

Übergeben Sie eine TokenCredential Instanz, die einem bestimmten Entwicklungstool entspricht, an den Azure-Dienstclientkonstruktor, z. B. AzureCliCredential.

import { AzureCliCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";

const credential = new AzureCliCredential();

const client = new BlobServiceClient(
    "https://<storage-account-name>.blob.core.windows.net",
    credential
);

Verwenden Sie Anmeldeinformationen, die in jedem Entwicklungstool verfügbar sind

Verwenden Sie eine DefaultAzureCredential Instanz, die für alle lokalen Entwicklungstools optimiert ist. In diesem Beispiel muss die Umgebungsvariable AZURE_TOKEN_CREDENTIALS auf dev gesetzt werden. Weitere Informationen finden Sie unter Ausschließen eines Berechtigungstyps.

import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";

// Set environment variable AZURE_TOKEN_CREDENTIALS to "dev"
const credential = new DefaultAzureCredential({
    requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]
});

const client = new BlobServiceClient(
    "https://<storage-account-name>.blob.core.windows.net",
    credential
);