Lernprogramm: Zugreifen auf Azure Dienste aus einer .NET Web-App

Erfahren Sie, wie Sie mithilfe verwalteter Identitäten von einer Web-App, die in Azure App Service ausgeführt wird, auf Azure-Dienste wie Azure Storage zugreifen können, ohne dass ein angemeldeter Benutzer erforderlich ist. In diesem Lernprogramm wird die Verbindung mit Azure Storage als Beispiel veranschaulicht.

Auf jeden Dienst, der die verwaltete Identität unterstützt (B in der folgenden Abbildung), kann mithilfe dieses Tutorials sicher zugegriffen werden:

  • Azure Storage
  • Azure SQL Database
  • Azure Key Vault

Diagramm: Zugreifen auf Speicher

Sie möchten über Ihre Web-App sicheren Zugriff auf Azure-Dienste hinzufügen, einschließlich Azure Storage, Azure SQL-Datenbank und Azure Key Vault. Sie können auch einen gemeinsam verwendeten Schlüssel nutzen. In diesem Fall müssen Sie sich aber Gedanken über den sicheren Betrieb machen – also darüber, wer das Geheimnis erstellen, bereitstellen und verwalten kann. Darüber hinaus kann es sein, dass der Schlüssel in GitHub eingecheckt wird – und Hackende wissen, wie man einen entsprechenden Scanvorgang zur Ermittlung durchführt. Eine sicherere Möglichkeit, wie Sie für Ihre Web-App den Zugriff auf Daten ermöglichen können, ist die Verwendung von verwalteten Identitäten.

Eine verwaltete Identität aus Microsoft Entra ID ermöglicht App Service den Zugriff auf Ressourcen über rollenbasierte Zugriffssteuerung (RBAC), ohne dass App-Anmeldeinformationen erforderlich sind. Nachdem Sie Ihrer Web-App eine verwaltete Identität zugewiesen haben, kümmert sich Azure um die Erstellung und Verteilung eines Zertifikats. Die Benutzer müssen sich keine Gedanken über die Verwaltung von Geheimnissen oder App-Anmeldeinformationen machen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer systemseitig zugewiesenen verwalteten Identität in einer Web-App
  • Erstellen Sie ein Speicherkonto und einen Azure Blob Storage Container.
  • Zugreifen auf Speicher über eine Web-App mit verwalteten Identitäten

Wenn Sie kein Azure Konto haben, erstellen Sie ein free-Konto bevor Sie beginnen.

Voraussetzungen

Aktivieren einer verwalteten Identität in einer App

Wenn Sie Ihre Web-App über Visual Studio erstellen und veröffentlichen, wurde die verwaltete Identität für Sie in Ihrer App aktiviert.

  1. Wählen Sie in Ihrem App-Dienst im linken Menü "Identität" und dann " System zugewiesen" aus. Vergewissern Sie sich, dass der Status auf Ein festgelegt ist.

    Andernfalls wählen Sie Ein und dann Speichern aus. Um die vom System zugewiesene verwaltete Identität zu aktivieren, wählen Sie im Bestätigungsdialogfeld "Ja" aus. Wenn die verwaltete Identität aktiviert ist, ist der Status auf Ein festgelegt, und die Objekt-ID ist verfügbar.

    Screenshot, der die Option „Systemvergebene Identität“ zeigt

  2. In diesem Schritt wird eine neue Objekt-ID erstellt, die sich von der im Bereich Authentifizierung/Autorisierung erstellten App-ID unterscheidet. Kopieren Sie die Objekt-ID der systemseitig zugewiesenen verwalteten Identität. Sie benötigen ihn später.

Erstellen Sie ein Speicherkonto und einen Blob Storage Container

Jetzt können Sie ein Speicherkonto und Blob Storage Container erstellen.

Jedes Speicherkonto muss zu einer Azure Ressourcengruppe gehören. Eine Ressourcengruppe ist ein logischer Container für Ihre Azure-Dienste. Wenn Sie ein Speicherkonto erstellen, können Sie entweder eine neue Ressourcengruppe erstellen oder eine vorhandene Ressourcengruppe verwenden. In diesem Artikel wird gezeigt, wie Sie eine neue Ressourcengruppe erstellen.

Ein allgemeines v2-Speicherkonto bietet Zugriff auf alle Azure Storage Dienste: Blobs, Dateien, Warteschlangen, Tabellen und Datenträger. In den hier beschriebenen Schritten wird ein Speicherkonto vom Typ „Universell v2“ erstellt. Die Schritte für die Erstellung einer anderen Art von Speicherkonto sind jedoch ähnlich.

Blobs in Azure Storage sind in Containern organisiert. Bevor Sie später in diesem Tutorial ein Blob hochladen können, müssen Sie zunächst einen Container erstellen.

Führen Sie die folgenden Schritte aus, um ein allgemeines v2-Speicherkonto im Azure-Portal zu erstellen.

  1. Geben Sie im Menü Azure Portal Storage Accounts ein. Sobald Sie mit der Eingabe beginnen, wird die Liste auf der Grundlage Ihrer Eingabe gefiltert. Wählen Sie Speicherkonten.

  2. Wählen Sie im angezeigten Fenster Speicherkonten die Option Erstellen aus.

  3. Wählen Sie das Abonnement aus, in dem das Speicherkonto erstellt werden soll.

  4. Wählen Sie für die Ressourcengruppe die Ressourcengruppe aus, die Ihre Web-App enthält.

  5. Geben Sie einen Namen für Ihr Speicherkonto ein. Der von Ihnen ausgewählte Name muss innerhalb von Azure eindeutig sein. Der Name muss zwischen 3 und 24 Zeichen lang sein und darf nur Zahlen und Kleinbuchstaben enthalten.

  6. Wählen Sie einen Standort (eine Region) für Ihr Speicherkonto aus, oder verwenden Sie den Standardwert.

  7. Wählen Sie für den bevorzugten SpeichertypAzure Blob Storage oder Azure Data Lake Storage Gen 2 aus.

  8. Behalten Sie die Standardwerte für diese Felder bei:

    Feld Wert
    Leistung Norm
    Redundanz Georedundanter Speicher
  9. Wählen Sie Überprüfen + erstellen, um die Speicherkontoeinstellungen zu überprüfen und das Konto zu erstellen.

  10. Klicken Sie auf Erstellen.

Führen Sie die folgenden Schritte aus, um einen Blob Storage Container in Azure Storage zu erstellen.

  1. Wechseln Sie zum neuen Speicherkonto im Azure-Portal.

  2. Wählen Sie im linken Menü für das Speicherkonto unter "Datenspeicher" "Container" aus.

  3. Wählen Sie Container hinzufügen aus.

  4. Geben Sie einen Namen für Ihren neuen Container ein. Der Containername muss klein geschrieben werden, mit einem Buchstaben oder einer Zahl beginnen und darf nur Buchstaben, Zahlen und Bindestriche (-) enthalten.

  5. Legen Sie die öffentliche Zugriffsebene für den Container fest. Die Standardebene ist Private (no anonymous access) (Privat (kein anonymer Zugriff)).

  6. Wählen Sie OK aus, um den Container zu erstellen.

Gewähren des Zugriffs auf das Speicherkonto

Sie müssen Ihrer Web-App Zugriff auf das Speicherkonto gewähren, bevor Sie Blobs erstellen, lesen oder löschen können. In einem vorherigen Abschnitt haben Sie die Web-App konfiguriert, die auf dem App-Dienst mit einer verwalteten Identität ausgeführt wird. Mit der rollenbasierten Zugriffssteuerung von Azure (Azure RBAC) können Sie der verwalteten Identität Zugriff auf eine andere Ressource gewähren (wie für jeden anderen Sicherheitsprinzipal).

Mit der Rolle „Mitwirkender an Storage-Blobdaten“ wird der Web-App (dargestellt durch die systemseitig zugewiesene verwaltete Identität) Lese-, Schreib- und Löschzugriff auf den Blobcontainer und die Daten gewährt.

Hinweis

Azure RBAC unterstützt einige Vorgänge für private BLOB-Container nicht, z. B. das Anzeigen von Blobs oder das Kopieren von Blobs zwischen Konten. Ein BLOB-Container mit privater Zugriffsebene erfordert ein SAS-Token für alle Vorgänge, die Azure RBAC nicht autorisiert. Weitere Informationen finden Sie unter Wann eine freigegebene Zugriffssignatur verwendet werden soll.

  1. Wechseln Sie im Azure-Portal zu Ihrem Speicherkonto, um Ihrer Web-App Zugriff zu gewähren.
  2. Wählen Sie im linken Menü access control (IAM) und dann Rollenzuweisungen aus. Es wird eine Liste der Personen angezeigt, die Zugriff auf das Speicherkonto haben.
  3. Sie möchten dem App-Dienst eine Rollenzuweisung hinzufügen, die Zugriff auf das Speicherkonto benötigt. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.
  4. Weisen Sie die Rolle Mitwirkender an Storage-Blobdaten dem App Service im Speicherkontobereich zu. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen mithilfe des Azure-Portals.

Ihre Web-App verfügt jetzt über Zugriff auf Ihr Speicherkonto.

Zugriff auf Blob Storage

Die Klasse DefaultAzureCredential wird verwendet, um eine Tokenanmeldeinformationen für Ihren Code abzurufen, um Anforderungen an Azure Storage zu autorisieren. Erstellen Sie eine Instanz der Klasse DefaultAzureCredential, bei der die verwaltete Identität zum Abrufen von Token verwendet wird, und fügen Sie diese dem Dienstclient hinzu. Das folgende Codebeispiel ruft das authentifizierte Token ab und verwendet es, um ein Dienst-Client-Objekt zu erstellen, das einen neuen Blob hochlädt.

Informationen zum Anzeigen dieses Codes als Teil einer Beispielanwendung finden Sie im sample auf GitHub.

Installieren von Clientbibliothekspaketen

Installieren Sie das Blob Storage NuGet-Paket zum Arbeiten mit Blob Storage und der Azure Identity-Clientbibliothek für .NET NuGet-Paket für die Authentifizierung mit Microsoft Entra Anmeldeinformationen. Installieren Sie die Clientbibliotheken mithilfe der .NET Core-Befehlszeilenschnittstelle oder der Package Manager Konsole in Visual Studio.

.NET Core-Befehlszeile

  1. Öffnen Sie eine Befehlszeile, und wechseln Sie zu dem Verzeichnis, in dem Ihre Projektdatei enthalten ist.

  2. Führen Sie die Installationsbefehle aus.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

Package Manager Konsole

  1. Öffnen Sie das Projekt oder die Projektmappe in Visual Studio, und öffnen Sie die Konsole mithilfe des Befehls Tools>NuGet Package Manager>Package Manager Console.

  2. Führen Sie die Installationsbefehle aus.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

beispiel für .NET

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a credential and create a client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                    new DefaultAzureCredential());

    try
    {
        // Create the container if it doesn't exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

Bereinigen von Ressourcen

Wenn Sie dieses Lernprogramm abgeschlossen haben und die Web-App oder die zugehörigen Ressourcen nicht mehr benötigen, bereinigen Sie die von Ihnen erstellten Ressourcen.

Löschen der Ressourcengruppe

  1. Wählen Sie im Azure-Portalressourcengruppen aus dem Azure-Portalmenü aus, und wählen Sie die Ressourcengruppe aus, die Ihren App-Dienst- und App-Serviceplan enthält.

  2. Wählen Sie Ressourcengruppe löschen aus, um die Ressourcengruppe und alle Ressourcen zu löschen.

    Screenshot, der das Löschen der Ressourcengruppe zeigt.

  3. Geben Sie den Namen der zu bestätigenden Ressourcengruppe ein.

Dieser Vorgang kann mehrere Minuten dauern.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:

  • Erstellen einer systemseitig zugewiesenen verwalteten Identität
  • Erstellen Sie ein Speicherkonto und Blob Storage Container.
  • Zugreifen auf Speicher über eine Web-App mit verwalteten Identitäten