Authentifizieren von von Azure gehosteten Apps für Azure-Ressourcen mit dem Azure SDK für JavaScript
Wenn eine App in Azure gehostet wird (mit einem Dienst wie Azure-App Service, Azure Virtual Machines oder Azure Container Instances), empfiehlt es sich, eine App für Azure-Ressourcen zu authentifizieren, um eine verwaltete Identität zu verwenden.
Eine verwaltete Identität stellt eine Identität für Ihre App bereit, sodass Ihre App eine Verbindung mit anderen Azure-Ressourcen herstellt, ohne einen geheimen Schlüssel verwenden zu müssen (z. B. eine Verbindungszeichenfolge des Schlüssels). Intern kennt Azure die Identität Ihrer App und die Ressourcen, mit der eine Verbindung hergestellt werden darf. Azure verwendet diese Informationen, um Automatisch Microsoft Entra-Token für die App abzurufen, damit sie eine Verbindung mit anderen Azure-Ressourcen herstellen kann, ohne dass Sie die Authentifizierungsschlüssel verwalten (erstellen oder drehen) müssen.
Arten von verwalteten Identitäten
Es gibt zwei Arten von verwalteten Identitäten:
- Vom System zugewiesene verwaltete Identitäten – einzelne Azure-Ressource
- Vom Benutzer zugewiesene verwaltete Identitäten – mehrere Azure-Ressourcen
In diesem Artikel werden die Schritte zum Aktivieren und Verwenden einer vom System zugewiesenen verwalteten Identität für eine App beschrieben. Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität verwenden müssen, lesen Sie den Artikel Verwalten benutzerseitig zugewiesener verwalteter Identitäten , um zu erfahren, wie Sie eine benutzerseitig zugewiesene verwaltete Identität erstellen.
Vom System zugewiesene verwaltete Identitäten für einzelne Ressourcen
Vom System zugewiesene verwaltete Identitäten werden von einer Azure-Ressource bereitgestellt und direkt verknüpft. Wenn Sie die verwaltete Identität für eine Azure-Ressource aktivieren, erhalten Sie eine systemseitig zugewiesene verwaltete Identität für diese Ressource. Sie ist an den Lebenszyklus der Azure-Ressource gebunden. Azure löscht automatisch die Identität, wenn die Ressource gelöscht wird. Da Sie nur die verwaltete Identität für die Azure-Ressource aktivieren müssen, die Ihren Code hostt, ist dies der am einfachsten zu verwendende Typ der verwalteten Identität.
Vom Benutzer zugewiesene verwaltete Identitäten für mehrere Ressourcen
Konzeptionell ist diese Identität eine eigenständige Azure-Ressource. Dies wird am häufigsten verwendet, wenn Ihre Lösung über mehrere Workloads verfügt, die auf mehreren Azure-Ressourcen ausgeführt werden und die alle dieselbe Identität und dieselben Berechtigungen gemeinsam nutzen müssen. Wenn Ihre Lösung beispielsweise Komponenten hatte, die auf mehreren App Service- und virtuellen Computerinstanzen ausgeführt wurden und sie alle Zugriff auf dieselbe Gruppe von Azure-Ressourcen benötigten, wäre das Erstellen und Verwenden einer vom Benutzer zugewiesenen verwalteten Identität für diese Ressourcen sinnvoll.
1 – Systemzuweisung: In gehosteter App aktivieren
Der erste Schritt besteht darin, die verwaltete Identität in der Azure-Ressource zu aktivieren, die Ihre App hosten soll. Wenn Sie beispielsweise eine Django-Anwendung mit Azure-App Dienst hosten, müssen Sie die verwaltete Identität für diese App Service-Web-App aktivieren. Wenn Sie einen virtuellen Computer zum Hosten Ihrer App verwenden, würden Sie Ihrem virtuellen Computer die Verwendung einer verwalteten Identität ermöglichen.
Sie können die Verwendung der verwalteten Identität für eine Azure-Ressource mithilfe der Azure-Portal oder der Azure CLI aktivieren.
2 - Zuweisen einer Rolle zur verwalteten Identität
Als Nächstes müssen Sie ermitteln, welche Rollen (Berechtigungen) Ihre App benötigt, und die verwaltete Identität diesen Rollen in Azure zuweisen. Einer verwalteten Identität können Rollen in einem Ressourcen-, Ressourcengruppen- oder Abonnementbereich zugewiesen werden. In diesem Beispiel wird gezeigt, wie Sie Rollen auf der Ebene der Ressourcengruppe zuweisen, da die meisten Anwendungen alle ihre Azure-Ressourcen in einer einzigen Ressourcengruppe zusammenfassen.
3 - Implementieren von DefaultAzureCredential in Ihrer Anwendung
Die DefaultAzureCredential
Klasse erkennt automatisch, dass eine verwaltete Identität verwendet wird, und verwendet die verwaltete Identität, um sich bei anderen Azure-Ressourcen zu authentifizieren. Wie im Übersichtsartikel zur Azure SDK für JavaScript-Authentifizierung erläutert, DefaultAzureCredential
werden mehrere Authentifizierungsmethoden unterstützt und die Authentifizierungsmethode bestimmt, die zur Laufzeit verwendet wird. Auf diese Weise kann Ihre App verschiedene Authentifizierungsmethoden in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu implementieren.
Fügen Sie Ihrer Anwendung zunächst das Paket @azure/identity hinzu.
npm install @azure/identity
Als Nächstes möchten Sie für jeden JavaScript-Code, der ein Azure SDK-Clientobjekt in Ihrer App erstellt, Folgendes ausführen:
- Importieren Sie die
DefaultAzureCredential
-Klasse aus dem@azure/identity
-Modul. - Erstellen eines
DefaultAzureCredential
-Objekts - Übergeben Sie das
DefaultAzureCredential
-Objekt an den Azure SDK-Clientobjektkonstruktor.
Ein Beispiel dafür wird im folgenden Codeausschnitt gezeigt.
// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);
Wenn der obige Code während der lokalen Entwicklung auf Ihrer lokalen Arbeitsstation ausgeführt wird, suchen Sie die SDK-Methode DefaultAzureCredential(), in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder bei VS Code, der Azure CLI oder Azure PowerShell für eine Reihe von Entwickleranmeldeinformationen, die entweder zum Authentifizieren der App bei Azure-Ressourcen während der lokalen Entwicklung verwendet werden können. Auf diese Weise kann dieser Code verwendet werden, um Ihre App bei Azure-Ressourcen sowohl während der lokalen Entwicklung als auch bei der Bereitstellung in Azure zu authentifizieren.