Samouczek: uzyskiwanie dostępu do usług platformy Azure z poziomu aplikacji internetowej platformy .NET

Dowiedz się, jak uzyskiwać dostęp do usług platformy Azure, takich jak Azure Storage, z poziomu aplikacji internetowej (nie zalogowanego użytkownika) uruchomionej w usłudze aplikacja systemu Azure przy użyciu tożsamości zarządzanych. W tym samouczku pokazano, jak na przykład nawiązać połączenie z usługą Azure Storage.

Dostęp do dowolnej usługi obsługującej tożsamość zarządzaną (B na poniższej ilustracji) można bezpiecznie uzyskać, korzystając z tego samouczka:

  • Azure Storage
  • Azure SQL Database
  • Azure Key Vault

Diagram that shows how to access storage.

Chcesz dodać bezpieczny dostęp do usług platformy Azure (Azure Storage, Azure SQL Database, Azure Key Vault lub innych usług) z aplikacji internetowej. Możesz użyć klucza współużytkowanego, ale musisz martwić się o zabezpieczenia operacyjne, które mogą tworzyć, wdrażać i zarządzać wpisem tajnym. Możliwe jest również, że klucz może zostać zaewidencjonowany w usłudze GitHub, w którym hakerzy wiedzą, jak skanować. Bezpieczniejszym sposobem udzielenia aplikacji internetowej dostępu do danych jest użycie tożsamości zarządzanych.

Tożsamość zarządzana firmy Microsoft Entra ID umożliwia usłudze App Service dostęp do zasobów za pośrednictwem kontroli dostępu opartej na rolach (RBAC) bez konieczności poświadczeń aplikacji. Po przypisaniu tożsamości zarządzanej do aplikacji internetowej platforma Azure zajmuje się tworzeniem i dystrybucją certyfikatu. Osoby nie trzeba martwić się o zarządzanie wpisami tajnymi ani poświadczeniami aplikacji.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Utwórz tożsamość zarządzaną przypisaną przez system w aplikacji internetowej.
  • Utwórz konto magazynu i kontener usługi Azure Blob Storage.
  • Uzyskiwanie dostępu do magazynu z aplikacji internetowej przy użyciu tożsamości zarządzanych.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

Włączanie tożsamości zarządzanej w aplikacji

Jeśli tworzysz i publikujesz aplikację internetową za pomocą programu Visual Studio, tożsamość zarządzana została włączona w aplikacji. W usłudze app Service wybierz pozycję Tożsamość w okienku po lewej stronie, a następnie wybierz pozycję Przypisany system. Sprawdź, czy stan ma wartość Włączone. Jeśli nie, wybierz pozycję Włączone , a następnie pozycję Zapisz. Wybierz pozycję Tak w oknie dialogowym potwierdzenia, aby włączyć tożsamość zarządzaną przypisaną przez system. Po włączeniu tożsamości zarządzanej stan jest ustawiony na Włączone , a identyfikator obiektu jest dostępny.

Screenshot that shows the System assigned identity option.

Ten krok tworzy nowy identyfikator obiektu inny niż identyfikator aplikacji utworzony w okienku Uwierzytelnianie/autoryzacja . Skopiuj identyfikator obiektu tożsamości zarządzanej przypisanej przez system. Będziesz jej potrzebować później.

Tworzenie konta magazynu i kontenera usługi Blob Storage

Teraz możesz utworzyć konto magazynu i kontener usługi Blob Storage.

Każde konto magazynu musi należeć do grupy zasobów platformy Azure. Grupa zasobów to logiczny kontener przeznaczony do grupowania usług platformy Azure. Podczas tworzenia konta magazynu masz możliwość utworzenia nowej grupy zasobów lub użycia istniejącej grupy zasobów. W tym artykule pokazano, jak utworzyć nową grupę zasobów.

Konto magazynu ogólnego przeznaczenia, wersja 2 zapewnia dostęp do wszystkich usług magazynu Azure Storage: obiektów blob, plików, kolejek, tabel i dysków. Kroki opisane tutaj umożliwiają utworzenie konta magazynu ogólnego przeznaczenia w wersji 2, ale kroki tworzenia dowolnego typu konta magazynu są podobne.

Obiekty blob w usłudze Azure Storage są zorganizowane w kontenery. Przed przekazaniem obiektu blob w dalszej części tego samouczka należy najpierw utworzyć kontener.

Aby utworzyć konto magazynu ogólnego przeznaczenia w wersji 2 w witrynie Azure Portal, wykonaj następujące kroki.

  1. W menu witryny Azure Portal wybierz pozycję Wszystkie usługi. Na liście zasobów wprowadź konta magazynu. Po rozpoczęciu pisania zawartość listy jest filtrowana w oparciu o wpisywane dane. Wybierz pozycję Konta usługi Storage.

  2. W wyświetlonym oknie Konta magazynu wybierz pozycję Utwórz.

  3. Wybierz subskrypcję, w ramach której chcesz utworzyć konto magazynu.

  4. W polu Grupa zasobów wybierz grupę zasobów zawierającą aplikację internetową z menu rozwijanego.

  5. Następnie wprowadź nazwę konta magazynu. Wybrana nazwa musi być unikatowa w obrębie całej platformy Azure. Nazwa musi również zawierać od 3 do 24 znaków i może zawierać tylko cyfry i małe litery.

  6. Wybierz lokalizację (region) dla konta magazynu lub użyj wartości domyślnej.

  7. Pozostaw poniższe pola ustawione na wartości domyślne:

    Pole Wartość
    Model wdrażania Resource Manager
    Wydajność Standardowy
    Rodzaj konta StorageV2 (ogólnego przeznaczenia wersja 2)
    Replikacja Magazyn geograficznie nadmiarowy dostępny do odczytu (RA-GRS)
    Warstwa dostępu Duże zainteresowanie
  8. Wybierz pozycję Przejrzyj i utwórz, aby przejrzeć ustawienia konta magazynu i utworzyć konto.

  9. Wybierz pozycję Utwórz.

Aby utworzyć kontener usługi Blob Storage w usłudze Azure Storage, wykonaj następujące kroki.

  1. Przejdź do nowego konta magazynu w witrynie Azure Portal.

  2. W menu po lewej stronie konta magazynu przewiń do sekcji Magazyn danych, a następnie wybierz pozycję Kontenery.

  3. Wybierz przycisk + Kontener.

  4. Wpisz nazwę nowego kontenera. Nazwa kontenera musi być zapisana małymi literami, zaczynać się literą lub cyfrą i może zawierać tylko litery, cyfry i znak kreski (-).

  5. Ustaw poziom dostępu publicznego do kontenera. Domyślny poziom to Prywatny (bez dostępu anonimowego).

  6. Wybierz przycisk OK, aby utworzyć kontener.

Udzielanie dostępu do konta magazynu

Aby móc tworzyć, odczytywać lub usuwać obiekty blob, musisz udzielić aplikacji internetowej dostępu do konta magazynu. W poprzednim kroku skonfigurowano aplikację internetową działającą w usłudze App Service z tożsamością zarządzaną. Korzystając z kontroli dostępu opartej na rolach platformy Azure, możesz udzielić tożsamości zarządzanej dostępu do innego zasobu, podobnie jak każdy podmiot zabezpieczeń. Rola Współautor danych obiektu blob usługi Storage zapewnia aplikacji internetowej (reprezentowanej przez tożsamość zarządzaną przypisaną przez system) odczyt, zapis i usuwanie dostępu do kontenera obiektów blob i danych.

Uwaga

Niektóre operacje na prywatnych kontenerach obiektów blob nie są obsługiwane przez kontrolę dostępu opartą na rolach platformy Azure, takie jak wyświetlanie obiektów blob lub kopiowanie obiektów blob między kontami. Kontener obiektów blob z poziomem dostępu prywatnego wymaga tokenu SAS dla każdej operacji, która nie jest autoryzowana przez kontrolę dostępu opartą na rolach platformy Azure. Aby uzyskać więcej informacji, zobacz Kiedy używać sygnatury dostępu współdzielonego.

W witrynie Azure Portal przejdź do swojego konta magazynu, aby udzielić dostępu do aplikacji internetowej. Wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) w okienku po lewej stronie, a następnie wybierz pozycję Przypisania ról. Zostanie wyświetlona lista osób mających dostęp do konta magazynu. Teraz chcesz dodać przypisanie roli do robota, czyli usługę aplikacji, która potrzebuje dostępu do konta magazynu. Wybierz pozycję Dodaj>przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

Przypisz rolę Współautor danych obiektu blob usługi Storage do usługi App Service w zakresie subskrypcji. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Twoja aplikacja internetowa ma teraz dostęp do konta magazynu.

Uzyskiwanie dostępu do usługi Blob Storage

Klasa DefaultAzureCredential służy do uzyskiwania poświadczeń tokenu dla kodu w celu autoryzowania żądań do usługi Azure Storage. Utwórz wystąpienie klasy DefaultAzureCredential , która używa tożsamości zarządzanej do pobierania tokenów i dołączania ich do klienta usługi. Poniższy przykładowy kod pobiera uwierzytelnione poświadczenia tokenu i używa go do utworzenia obiektu klienta usługi, który przekazuje nowy obiekt blob.

Aby zobaczyć ten kod jako część przykładowej aplikacji, zobacz przykład w witrynie GitHub.

Instalowanie pakietów bibliotek klienta

Zainstaluj pakiet NuGet usługi Blob Storage, aby pracować z usługą Blob Storage i biblioteką klienta tożsamości platformy Azure dla pakietu NuGet platformy .NET w celu uwierzytelniania przy użyciu poświadczeń usługi Microsoft Entra. Zainstaluj biblioteki klienckie przy użyciu interfejsu wiersza polecenia platformy .NET Core lub konsoli Menedżer pakietów w programie Visual Studio.

Wiersz polecenia platformy .NET Core

  1. Otwórz wiersz polecenia i przejdź do katalogu zawierającego plik projektu.

  2. Uruchom polecenia instalacji.

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

Konsola menedżera pakietów

  1. Otwórz projekt lub rozwiązanie w programie Visual Studio i otwórz konsolę przy użyciu narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsoli.

  2. Uruchom polecenia instalacji.

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

Przykład platformy .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 does not 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;
    }
}

Czyszczenie zasobów

Jeśli skończysz z tym samouczkiem i nie potrzebujesz już aplikacji internetowej ani skojarzonych zasobów, wyczyść utworzone zasoby.

Usuwanie grupy zasobów

W witrynie Azure Portal wybierz pozycję Grupy zasobów z menu portalu i wybierz grupę zasobów zawierającą usługę App Service i plan usługi App Service.

Wybierz pozycję Usuń grupę zasobów, aby usunąć grupę zasobów i wszystkie zasoby.

Screenshot that shows deleting the resource group.

Uruchomienie tego polecenia może potrwać kilka minut.

Następne kroki

W tym samouczku zawarto informacje na temat wykonywania następujących czynności:

  • Utwórz tożsamość zarządzaną przypisaną przez system.
  • Utwórz konto magazynu i kontener usługi Blob Storage.
  • Uzyskiwanie dostępu do magazynu z aplikacji internetowej przy użyciu tożsamości zarządzanych.