Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak uzyskać dostęp do usługi Azure Storage dla aplikacji internetowej (nie indywidualnego użytkownika) uruchomionej w usłudze Azure App Service, przy użyciu tożsamości zarządzanych.
Chcesz dodać dostęp do płaszczyzny danych platformy Azure (Azure Storage, Azure SQL Database, Azure Key Vault lub innych usług) z aplikacji internetowej. Możesz użyć wspólnego klucza, ale wtedy musisz martwić się o bezpieczeństwo operacyjne związane z tym, kto może go tworzyć, wdrażać i nim zarządzać. Możliwe jest również, że klucz może zostać zapisany w usłudze GitHub, gdzie hakerzy potrafią go wyszukiwać. Bezpieczniejszym sposobem udzielenia aplikacji internetowej dostępu do danych jest użycie tożsamości zarządzanych.
Zarządzana tożsamość z Microsoft Entra ID umożliwia usłudze App Service dostęp do zasobów poprzez kontrolę dostępu opartą na rolach (RBAC), bez potrzeby używania poświadczeń aplikacji. Po przypisaniu tożsamości zarządzanej do aplikacji internetowej platforma Azure zajmuje się tworzeniem i dystrybucją certyfikatu. Użytkownicy nie muszą martwić się o zarządzanie danymi poufnymi ani poświadczeniami aplikacji.
W tym samouczku nauczysz się następujących rzeczy:
- Utwórz tożsamość zarządzaną przypisaną przez system w aplikacji internetowej.
- Utwórz konto magazynu i kontener usługi Azure Blob Storage.
- Uzyskaj dostęp do magazynu z poziomu aplikacji internetowej, korzystając z 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
- Aplikacja internetowa działająca na Azure App Service z włączonym modułem uwierzytelniania/autoryzacji.
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ę Zapisz , a następnie wybierz pozycję Tak , 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.
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. Aby móc przekazać obiekt blob w dalszej części tego samouczka, najpierw musisz utworzyć kontener.
Aby utworzyć konto magazynu ogólnego przeznaczenia w wersji 2 w witrynie Azure Portal, wykonaj następujące kroki.
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 Konta Storage.
W wyświetlonym oknie Konta magazynu wybierz pozycję Utwórz.
Wybierz subskrypcję, w ramach której chcesz utworzyć konto magazynu.
W polu Grupa zasobów wybierz grupę zasobów zawierającą aplikację internetową z menu rozwijanego.
Następnie wprowadź nazwę konta pamięci masowej. 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.
Wybierz lokalizację konta magazynu lub użyj lokalizacji domyślnej.
W obszarze Wydajność wybierz opcję Standardowa .
W obszarze Nadmiarowość wybierz opcję Magazyn lokalnie nadmiarowy (LRS) z listy rozwijanej.
Wybierz opcję Przejrzyj, aby przejrzeć ustawienia konta pamięci masowej i utworzyć konto.
Wybierz pozycję Utwórz.
Aby utworzyć kontener usługi Blob Storage w usłudze Azure Storage, wykonaj następujące kroki.
Przejdź do swojego nowego konta magazynowego w portalu Azure.
Przewiń do sekcji przechowywania danych w koncie magazynowym, a następnie wybierz pozycję Kontenery w menu po lewej stronie.
Wybierz przycisk + Kontener.
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 (-).
Ustaw poziom dostępu publicznego do kontenera. Domyślny poziom to Prywatny (bez dostępu anonimowego).
Wybierz pozycję Utwórz, aby utworzyć kontener.
Udzielanie dostępu do konta magazynu
Aby móc tworzyć, odczytywać lub usuwać obiekty blob, musisz najpierw 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 prywatnym poziomem dostępu wymaga tokenu SAS do każdej operacji, która nie jest autoryzowana przez Azure RBAC. 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 magazynowego. Teraz chcesz dodać przypisanie roli do usługi aplikacji, która potrzebuje dostępu do konta magazynowego. Wybierz Dodaj>Dodaj przypisanie roli, aby otworzyć stronę Dodaj przypisanie roli.
Na karcie Typ przypisania wybierz opcję Typ funkcji zadania, a następnie opcję Dalej.
Na karcie Rola wybierz rolę Współautor danych obiektów blob usługi Storage z listy rozwijanej, a następnie wybierz pozycję Dalej.
Na karcie Członkowie wybierz pozycję Przypisz dostęp do zarządzanej tożsamości, a następnie wybierz pozycję Członkowie ->Wybierz członków. W oknie Wybieranie tożsamości zarządzanych znajdź i wybierz tożsamość zarządzaną utworzoną dla usługi App Service na liście rozwijanej Tożsamość zarządzana. Wybierz przycisk Wybierz.
Wybierz pozycję Przejrzyj i przypisz, a następnie wybierz pozycję Przejrzyj i przypisz raz jeszcze.
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 przechowywania.
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świadczenie tokenu i używa go do utworzenia obiektu klienta usługi, który służy do przesyłania nowego obiektu blob.
Aby zobaczyć ten kod jako część przykładowej aplikacji, zobacz przykład w witrynie GitHub.
Instalowanie pakietów bibliotek klienta
Zainstaluj pakiet NuGet Blob Storage, aby pracować z tą usługą, oraz pakiet NuGet biblioteki klienta Azure Identity dla .NET, aby uwierzytelniać się za pomocą poświadczeń Microsoft Entra. Zainstaluj biblioteki klienckie przy użyciu interfejsu wiersza polecenia platformy .NET lub konsoli Menedżer pakietów w programie Visual Studio.
.NET CLI
Otwórz wiersz polecenia i przejdź do katalogu zawierającego plik projektu.
Uruchom polecenia instalacyjne.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Konsola menedżera pakietów
Otwórz projekt lub rozwiązanie w programie Visual Studio i otwórz konsolę przy użyciu narzędzia NuGet> Menedżer pakietów Konsoli.
Uruchom komendy instalacyjne.
Install-Package Azure.Storage.Blobs
Install-Package Azure.Identity
Przykład
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.