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

Beim Erstellen von Cloudanwendungen müssen Entwickler Anwendungen auf ihrer lokalen Arbeitsstation debuggen und testen. Wenn eine Anwendung während der lokalen Entwicklung auf der Arbeitsstation eines Entwicklers ausgeführt wird, muss sie sich weiterhin bei allen von der App verwendeten Azure-Diensten authentifizieren. In diesem Artikel wird beschrieben, wie Sie die Azure-Anmeldeinformationen eines Entwicklers verwenden, um die App während der lokalen Entwicklung bei Azure zu authentifizieren.

A diagram showing how an app running in local developer will obtain the application service principal from a .env file and then use that identity to connect to Azure resources.

Damit sich eine App während der lokalen Entwicklung mit den Azure-Anmeldeinformationen des Entwicklers bei Azure authentifizieren kann, muss der Entwickler über die Azure-Tools-Erweiterung VS Code, die Azure CLI oder Azure PowerShell bei Azure angemeldet werden. Das Azure SDK für .NET kann erkennen, dass der Entwickler über eines dieser Tools angemeldet ist, und dann die erforderlichen Anmeldeinformationen aus dem Anmeldeinformationscache abrufen, um die App bei Azure als angemeldeten Benutzer zu authentifizieren.

Dieser Ansatz ist am einfachsten für ein Entwicklungsteam einzurichten, da es die Vorteile der vorhandenen Azure-Konten der Entwickler nutzt. Das Konto eines Entwicklers verfügt jedoch wahrscheinlich über mehr Berechtigungen als für die Anwendung erforderlich, weshalb 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 den Zugriff haben können, der von der App benötigt wird.

1: Erstellen einer Azure AD-Gruppe für die lokale Entwicklung

Da fast immer mehrere Entwickler an einer Anwendung arbeiten, wird empfohlen, zunächst eine Azure AD-Gruppe zu erstellen, um die Rollen (Berechtigungen) zu kapseln, die die App in der lokalen Entwicklung benötigt. Dies bietet die folgenden Vorteile:

  • Jedem Entwickler wird sichergestellt, dass dieselben Rollen zugewiesen werden, da Rollen auf Gruppenebene zugewiesen werden.
  • Wenn eine neue Rolle für die App erforderlich ist, muss sie nur der Azure AD-Gruppe für die App hinzugefügt werden.
  • Wenn ein neuer Entwickler dem Team beitritt, muss er einfach der richtigen Azure AD-Gruppe hinzugefügt werden, um die richtigen Berechtigungen für die Arbeit an der App zu erhalten.

Wenn Sie über eine azure AD-Gruppe für Ihr Entwicklungsteam verfügen, können Sie diese Gruppe verwenden. Führen Sie andernfalls die folgenden Schritte aus, um eine Azure AD-Gruppe zu erstellen.

Anweisungen Screenshot
Navigieren Sie im Azure-Portal zur Seite Azure Active Directory, indem Sie oben auf der Seite Azure Active Directory in das Suchfeld eingeben und dann unter Dienste Azure Active Directory auswählen. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
Wählen Sie auf der Seite Azure Active Directory im menü auf der linken Seite die Option Gruppen aus. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
Wählen Sie auf der Seite Alle GruppenNeue Gruppeaus. A screenshot showing the location of the New Group button in the All groups page.
Auf der Seite Neue Gruppe :
  1. GruppentypSecurity
  2. Gruppenname → Ein Name für die Sicherheitsgruppe, der in der Regel aus dem Anwendungsnamen erstellt wird. Es ist auch hilfreich, eine Zeichenfolge wie local-dev in den Namen der Gruppe aufzunehmen, um den Zweck der Gruppe anzugeben.
  3. Gruppenbeschreibung → Eine Beschreibung des Zwecks der Gruppe.
  4. Wählen Sie unter Mitglieder den Link Keine Mitglieder ausgewählt aus, um der Gruppe Mitglieder hinzuzufügen.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group
Das Dialogfeld Mitglieder hinzufügen wird angezeigt.
  1. Verwenden Sie das Suchfeld, um die Liste der Benutzernamen in der Liste zu filtern.
  2. Wählen Sie die Benutzer für die lokale Entwicklung für diese App aus. Wenn Objekte ausgewählt sind, werden sie in die Liste Ausgewählte Elemente am unteren Rand des Dialogfelds verschoben.
  3. Wenn Sie fertig sind, wählen Sie die Schaltfläche Auswählen aus.
A screenshot of the Add members dialog box showing how to select developer accounts to be included in the group.
Wählen Sie auf der Seite Neue Gruppe die Option Erstellen aus, um die Gruppe zu erstellen.

Die Gruppe wird erstellt, und Sie werden zur Seite Alle Gruppen zurückgeführt. Es kann bis zu 30 Sekunden dauern, bis die Gruppe angezeigt wird, und Sie müssen die Seite möglicherweise aktualisieren, da sie im Azure-Portal zwischengespeichert wird.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

2: Zuweisen von Rollen zur Azure AD-Gruppe

Als Nächstes müssen Sie bestimmen, welche Rollen (Berechtigungen) Ihre App für welche Ressourcen benötigt, und diese Rollen Ihrer App zuweisen. In diesem Beispiel werden die Rollen der Azure Active Directory-Gruppe zugewiesen, die in Schritt 1 erstellt wurde. Rollen können in einem Ressourcen-, Ressourcengruppen- oder Abonnementbereich eine Rolle zugewiesen werden. In diesem Beispiel wird gezeigt, wie Sie Rollen im Ressourcengruppenbereich zuweisen, da die meisten Anwendungen alle azure-Ressourcen in einer einzelnen Ressourcengruppe gruppieren.

Anweisungen Screenshot
Suchen Sie die Ressourcengruppe für Ihre Anwendung, indem Sie über das Suchfeld oben im Azure-Portal nach dem Namen der Ressourcengruppe suchen.

Navigieren Sie zu Ihrer Ressourcengruppe, indem Sie den Namen der Ressourcengruppe unter der Überschrift Ressourcengruppen im Dialogfeld auswählen.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
Wählen Sie auf der Seite für die Ressourcengruppe im linken Menü Die Option Zugriffssteuerung (IAM) aus. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
Klicken Sie auf der Seite Zugriffssteuerungseinstellungen:
  1. Klicken Sie auf die Registerkarte Rollenzuweisungen.
  2. Wählen Sie im oberen Menü + Hinzufügen und aus dem dann angezeigten Dropdownmenü die Option Rollenzuweisung hinzufügen aus.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
Auf der Seite Rollenzuweisung hinzufügen werden alle Rollen aufgelistet, die der Ressourcengruppe zugewiesen werden können.
  1. Verwenden Sie das Suchfeld, um die Liste auf eine besser verwaltbare Größe zu filtern. In diesem Beispiel wird gezeigt, wie Sie nach Storage-Blobrollen filtern.
  2. Wählen Sie die Rolle aus, die Sie zuweisen möchten.
Klicken Sie auf Weiter, um zum nächsten Bildschirm zu wechseln.
A screenshot showing how to filter and select role assignments to be added to the resource group.
Auf der nächsten Seite Rollenzuweisung hinzufügen können Sie angeben, welchem Benutzer die Rolle zugewiesen werden soll.
  1. Wählen Sie unter Zugriff zuweisendie Option Benutzer, Gruppe oder Dienstprinzipal aus.
  2. Wählen Sie unter Mitglieder die Option +Mitglieder auswählen aus.
Auf der rechten Seite des Azure-Portal wird ein Dialogfeld geöffnet.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
Im Dialogfeld Mitglieder auswählen :
  1. Das Textfeld Auswählen kann verwendet werden, um die Liste der Benutzer und Gruppen in Ihrem Abonnement zu filtern. Geben Sie bei Bedarf die ersten Zeichen der lokalen Azure AD-Gruppe ein, die Sie für die App erstellt haben.
  2. Wählen Sie die Azure AD-Gruppe für lokale Entwicklung aus, die Ihrer Anwendung zugeordnet ist.
Wählen Sie unten im Dialogfeld Auswählen aus, um den Vorgang fortzusetzen.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
Die Azure AD-Gruppe wird nun auf dem Bildschirm Rollenzuweisung hinzufügen als ausgewählt angezeigt.

Wählen Sie Überprüfen und zuweisen aus, um zur letzten Seite zu gelangen, und wählen Sie erneut Überprüfen und zuweisen aus, um den Vorgang abzuschließen.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3 : Anmelden bei Azure mit .NET-Tools

Als Nächstes müssen Sie sich mit einer von mehreren .NET-Tooloptionen bei Azure anmelden. Das Konto, bei dem Sie sich anmelden, sollte auch in der Azure Active Directory-Gruppe vorhanden sein, die Sie zuvor erstellt und konfiguriert haben.

Navigieren Sie im oberen Menü von Visual Studio zu Extras>Optionen , um das Dialogfeld Optionen zu öffnen. Geben Sie in der Suchleiste oben links Azure ein, um die Optionen zu filtern. Wählen Sie unter Azure-Dienstauthentifizierungdie Option Kontoauswahl aus.

Wählen Sie das Dropdownmenü unter Konto auswählen aus, und fügen Sie ein Microsoft-Konto hinzu. Ein Fenster wird geöffnet, in dem Sie zur Auswahl eines Kontos aufgefordert werden. Geben Sie die Anmeldeinformationen für Ihr gewünschtes Azure-Konto ein, und wählen Sie dann die Bestätigung aus.

A screenshot showing how to sign in to Azure using Visual Studio.

4. Implementieren von DefaultAzureCredential in Ihrer Anwendung

DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt die zur Laufzeit verwendete Authentifizierungsmethode. Auf diese Weise kann Ihre App verschiedene Authentifizierungsmethoden in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu implementieren.

Die Reihenfolge und die Speicherorte, in denen nach Anmeldeinformationen gesucht wird, DefaultAzureCredential finden Sie unter DefaultAzureCredential.

Um zu implementieren DefaultAzureCredential, fügen Sie zuerst die Azure.Identity Pakete und optional zu Microsoft.Extensions.Azure Ihrer Anwendung hinzu. Dazu können Sie entweder die Befehlszeile oder den NuGet-Paket-Manager verwenden.

Öffnen Sie eine Terminalumgebung Ihrer Wahl im Anwendungsprojektverzeichnis, und geben Sie den folgenden Befehl ein.

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Auf Azure-Dienste wird im Allgemeinen über entsprechende Clientklassen aus dem SDK zugegriffen. Diese Klassen und Ihre eigenen benutzerdefinierten Dienste sollten in der Datei Program.cs registriert werden, damit über die Abhängigkeitsinjektion in der gesamten App darauf zugegriffen werden kann. Führen Sie innerhalb von Program.cs die folgenden Schritte aus, um Ihren Dienst und DefaultAzureCredential ordnungsgemäß einzurichten.

  1. Schließen Sie die Azure.Identity Namespaces und Microsoft.Extensions.Azure in eine using-Anweisung ein.
  2. Registrieren Sie den Azure-Dienst mithilfe relevanter Hilfsmethoden.
  3. Übergeben Sie eine Instanz des DefaultAzureCredential-Objekts an die UseCredential-Methode.

Ein Beispiel dafür wird im folgenden Codeausschnitt gezeigt.

using Microsoft.Extensions.Azure;
using Azure.Identity;

// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
    x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
    x.UseCredential(new DefaultAzureCredential());
});

Alternativ können Sie ihre Dienste auch direkter nutzen DefaultAzureCredential , ohne zusätzliche Azure-Registrierungsmethoden zu verwenden, wie unten zu sehen.

using Azure.Identity;

// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x => 
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Wenn der obige Code während der lokalen Entwicklung auf Ihrer lokalen Arbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in Visual Studio, VS Code, der Azure CLI oder Azure PowerShell nach einer Reihe von Entwickleranmeldeinformationen, von denen beide zur Authentifizierung der App bei Azure-Ressourcen während der lokalen Entwicklung verwendet werden können.

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.