Konfigurowanie anonimowego dostępu do odczytu dla kontenerów i obiektów blob

Usługa Azure Storage obsługuje opcjonalny anonimowy dostęp do odczytu dla kontenerów i obiektów blob. Domyślnie anonimowy dostęp do danych nigdy nie jest dozwolony. Jeśli nie włączysz jawnie dostępu anonimowego, wszystkie żądania do kontenera i jego obiektów blob muszą być autoryzowane. Po skonfigurowaniu ustawienia poziomu dostępu kontenera w celu zezwolenia na dostęp anonimowy klienci mogą odczytywać dane w tym kontenerze bez autoryzowania żądania.

Ostrzeżenie

Po skonfigurowaniu kontenera na potrzeby dostępu anonimowego każdy klient może odczytywać dane w tym kontenerze. Anonimowy dostęp stanowi potencjalne zagrożenie bezpieczeństwa, więc jeśli Twój scenariusz go nie wymaga, usuń anonimowy dostęp do konta magazynowego.

W tym artykule opisano sposób konfigurowania anonimowego dostępu do odczytu dla kontenera oraz przechowywanych w nim obiektów blob. Informacje o tym, jak zaradzić anonimowemu dostępowi w celu zapewnienia optymalnego poziomu zabezpieczeń, można znaleźć w artykule Zaradzanie anonimowemu dostępowi do odczytu danych obiektów blob.

Informacje o anonimowym dostępie do odczytu

Dostęp anonimowy do danych jest zawsze domyślnie zabroniony. Dwa ustawienia wpływają na anonimowy dostęp:

  • Ustawienie dostępu anonimowego dla konta magazynu. Konto magazynu w usłudze Azure Resource Manager oferuje ustawienie umożliwiające zezwolenie na dostęp anonimowy do konta lub zablokowanie takiego dostępu. Firma Microsoft zaleca wyłączenie anonimowego dostępu do Twoich kont magazynu w celu zapewnienia optymalnego poziomu zabezpieczeń.

    Gdy dostęp anonimowy jest dozwolony na poziomie konta, dane obiektów blob nie są dostępne dla anonimowego dostępu do odczytu, chyba że użytkownik wykona dodatkowy krok w celu jawnego skonfigurowania ustawienia dostępu anonimowego kontenera.

  • Skonfiguruj ustawienie dostępu anonimowego kontenera. Domyślnie ustawienie dostępu anonimowego kontenera jest wyłączone, co oznacza, że autoryzacja jest wymagana dla każdego żądania do kontenera lub jego danych. Użytkownik z odpowiednimi uprawnieniami może zmienić ustawienie anonimowego dostępu do kontenera, aby włączyć anonimowy dostęp tylko wtedy, gdy jest on dozwolony dla konta magazynowego.

W poniższej tabeli podsumowano, w jaki sposób oba ustawienia wpływają na dostęp anonimowy dla kontenera.

Poziom dostępu anonimowego dla kontenera jest ustawiony na Prywatny (ustawienie domyślne) Poziom dostępu anonimowego dla kontenera jest ustawiony na kontener Poziom dostępu anonimowego dla kontenera ustawiono na Blob
Dostęp anonimowy jest niedozwolony dla konta magazynu danych Brak anonimowego dostępu do jakiegokolwiek kontenera na koncie magazynowym. Brak anonimowego dostępu do jakiegokolwiek kontenera na koncie magazynowym. Ustawienie konta magazynu zastępuje ustawienie kontenera. Brak anonimowego dostępu do jakiegokolwiek kontenera na koncie magazynowym. Ustawienie konta magazynu zastępuje ustawienie kontenera.
Dostęp anonimowy do konta magazynu jest dozwolony Brak anonimowego dostępu do tego kontenera (konfiguracja domyślna). Do tego kontenera i jego obiektów blob jest dozwolony dostęp anonimowy. Dostęp anonimowy jest dozwolony do obiektów blob w tym kontenerze, ale nie do samego kontenera.

Gdy anonimowy dostęp jest dozwolony dla konta pamięci masowej i skonfigurowany pod konkretny kontener, usługa przyjmuje żądanie odczytu blobu w tym kontenerze, które jest przekazywane bez nagłówka Authorization , i zwraca dane tego bloba w odpowiedzi. Jednak jeśli żądanie zostanie przekazane z nagłówkiem Authorization , usługa ignoruje anonimowy dostęp na koncie pamięci masowej i autoryzuje żądanie na podstawie podanych danych uwierzytelniających.

Zezwalaj lub nie zezwalaj na anonimowy dostęp do odczytu dla konta magazynu

Gdy zezwalasz na anonimowy dostęp dla konta magazynowego, użytkownik z odpowiednimi uprawnieniami może zmodyfikować ustawienia anonimowego dostępu do kontenera, aby umożliwić anonimowy dostęp do danych w tym kontenerze. Dane blobowe nigdy nie są dostępne do anonimowego dostępu, chyba że użytkownik wykona dodatkowy krok, aby wyraźnie skonfigurować anonimowe ustawienia dostępu do kontenera.

Anonimowy dostęp do kontenera jest zawsze domyślnie wyłączony i musi być wyraźnie skonfigurowany, aby zezwalać na anonimowe żądania. Niezależnie od ustawienia na koncie pamięci, Twoje dane nigdy nie są dostępne do anonimowego dostępu, chyba że użytkownik z odpowiednimi uprawnieniami wykona ten dodatkowy krok, aby umożliwić anonimowy dostęp do kontenera.

Wyłączenie dostępu anonimowego dla konta magazynu danych ma pierwszeństwo przed ustawieniami dostępu dla wszystkich kontenerów w tym koncie magazynu danych, uniemożliwiając anonimowy dostęp do danych blobów na tym koncie. Gdy nie zezwalasz na anonimowy dostęp dla konta, nie możesz skonfigurować ustawień dostępu dla kontenera, aby umożliwić anonimowy dostęp, a przyszłe anonimowe żądania do tego konta nie przestają działać. Przed zmianą tego ustawienia upewnij się, że rozumiesz wpływ na aplikacje klienckie, które mogą anonimowo uzyskiwać dostęp do danych na Twoim koncie pamięci. Aby uzyskać więcej informacji, zobacz Zapobieganie anonimowemu dostępowi do odczytu kontenerów i obiektów blob.

Ważne

Po odrzuceniu anonimowego dostępu do konta magazynowego, klienci korzystający z wyzwania anonimowego nośnika odkrywają, że Azure Storage zwraca błąd 403 (Zabroniony) zamiast błędu 401 (Nieautoryzowany). Ustal, że wszystkie kontenery są prywatne, aby złagodzić ten problem. Aby uzyskać więcej informacji na temat modyfikowania ustawienia dostępu anonimowego dla kontenerów, zobacz Ustawianie poziomu dostępu dla kontenera.

Zezwalanie lub wyłączanie dostępu anonimowego wymaga wersji 2019-04-01 lub nowszej dostawcy zasobów usługi Azure Storage. Aby uzyskać więcej informacji, zobacz Interfejs API REST dostawcy zasobów usługi Azure Storage.

Uprawnienia do uniemożliwiania dostępu anonimowego

Aby ustawić właściwość AllowBlobPublicAccess dla konta magazynowego, potrzebujesz uprawnień do tworzenia i zarządzania kontami pamięci. Role kontroli dostępu opartej na rolach (RBAC) platformy Azure, które zapewniają te uprawnienia, obejmują akcję Microsoft.Storage/storageAccounts/write . Role wbudowane dla tej akcji obejmują:

Przypisania ról muszą być ograniczone do poziomu konta magazynu lub wyższego, aby umożliwić użytkownikowi nie zezwalanie na dostęp anonimowy dla konta magazynu. Aby uzyskać więcej informacji o zakresie roli, zobacz Informacje o zakresie usługi Azure RBAC.

Ograniczenie przypisywania tych ról tylko użytkownikom administracyjnym, którzy potrzebują możliwości utworzenia konta pamięci masowej lub aktualizacji jego właściwości. Stosuj zasadę najmniejszych uprawnień, aby zapewnić użytkownikom jak najmniej uprawnień, które są im potrzebne do wykonywania zadań. Aby uzyskać więcej informacji na temat zarządzania dostępem za pomocą kontroli dostępu opartej na rolach platformy Azure, zobacz Najlepsze rozwiązania dotyczące kontroli dostępu opartej na rolach platformy Azure.

Te role nie zapewniają dostępu do danych na koncie magazynu danych przy użyciu Microsoft Entra ID. Obejmują one jednak usługę Microsoft.Storage/storageAccounts/listkeys/action, która udziela dostępu do kluczy dostępu do konta. Korzystając z tego uprawnienia, użytkownik może użyć kluczy dostępu do konta, aby uzyskać dostęp do wszystkich danych w kontzie magazynowym.

Microsoft. Storage/storageAccounts/listkeys/action sam w sobie przyznaje dostęp do danych za pomocą kluczy konta, ale nie daje użytkownikowi możliwości zmiany właściwości AllowBlobPublicAccess dla konta magazynowego. W przypadku użytkowników, którzy potrzebują dostępu do danych na koncie magazynu, ale nie powinni mieć możliwości zmiany konfiguracji konta magazynu, rozważ przypisanie ról, takich jak Współautor danych obiektów blob usługi Storage, Czytelnik danych obiektów blob usługi Storage lub Czytelnik i dostęp do danych.

Uwaga

Role klasycznego administratora subskrypcji Administrator usługi i Współadministrator obejmują odpowiednik roli właściciela usługi Azure Resource Manager. Rola Właściciel obejmuje wszystkie akcje, więc użytkownik z jedną z tych ról administracyjnych może również tworzyć konta magazynu i zarządzać konfiguracją konta. Aby uzyskać więcej informacji, zobacz Role platformy Azure, Role firmy Microsoft Entra i klasyczne role administratora subskrypcji.

Ustawianie właściwości AllowBlobPublicAccess konta magazynu

Aby włączyć lub wyłączyć dostęp anonimowy dla konta magazynu, ustaw dla tego konta właściwość AllowBlobPublicAccess. Ta własność jest dostępna dla wszystkich kont pamięci masowej, które tworzysz w modelu wdrożeniowym Azure Resource Manager. Aby uzyskać więcej informacji, zobacz Omówienie konta magazynu.

Aby włączyć lub wyłączyć dostęp anonimowy dla konta magazynu w portalu Azure, wykonaj następujące kroki:

  1. Przejdź do swojego konta magazynowego na Azure Portal.

  2. Znajdź ustawienie Konfiguracja w Ustawieniach.

  3. Ustaw Zezwalaj na anonimowy dostęp do obiektów blob na Włączone lub Wyłączone.

    Zrzut ekranu pokazujący, jak zezwolić lub zakazać anonimowego dostępu do konta magazynowego.

Uwaga

Zakaz anonimowego dostępu do konta nie wpływa na statyczne strony internetowe hostowane na tym koncie. Kontener $web jest zawsze dostępny publicznie.

Po aktualizacji ustawień anonimowego dostępu do konta pamięci może minąć nawet do 30 sekund, zanim zmiana zostanie w pełni rozpowszechniona.

Po skonfigurowaniu kontenera na potrzeby dostępu anonimowego żądania odczytu obiektów blob w tym kontenerze nie muszą być autoryzowane. Jednak wszelkie reguły zapory, które konfigurujesz dla konta pamięci masowej, pozostają w mocy i blokują ruch zgodny z skonfigurowanymi ACL.

Poniższe przykłady pokazują, jak odczytać właściwość AllowBlobPublicAccess dla konta magazynowego, aby określić, czy anonimowy dostęp jest obecnie dozwolony czy nie. Aby dowiedzieć się, jak sprawdzić, czy ustawienie anonimowego dostępu do konta jest skonfigurowane tak, aby uniemożliwiać dostęp anonimowy, zobacz Naprawianie anonimowego dostępu dla konta magazynu.

Ustawianie poziomu dostępu anonimowego dla kontenera

Aby przyznać anonimowym użytkownikom dostęp do odczytu do kontenera i jego obiektów blob, najpierw zezwól na dostęp anonimowy dla konta magazynowania, a następnie ustaw poziom anonimowego dostępu kontenera. Zanim zaczniesz, upewnij się, że anonimowy dostęp jest dozwolony na poziomie konta (poprzez własność AllowBlobPublicAccess ) oraz że masz uprawnienia do zapisu na kontenerze. Jeśli anonimowy dostęp zostanie odrzucony dla konta magazynowego, nie możesz skonfigurować anonimowego dostępu dla kontenera.

Uwaga

Firma Microsoft odradza zezwalanie na anonimowy dostęp do danych obiektów blob na koncie magazynu.

Gdy zezwalasz na anonimowy dostęp dla konta pamięciowego, możesz skonfigurować kontener z następującymi uprawnieniami:

  • Brak publicznego dostępu do odczytu (portal: prywatny; PowerShell: Wyłączone): Kontener i jego bloby są dostępne tylko przy autoryzowanym żądaniu. Ta opcja jest domyślna dla wszystkich nowych kontenerów.
  • Publiczny dostęp do odczytu tylko dla blobów (portal i PowerShell: Blob): Bloby w kontenerze mogą być odczytywane anonimowo na żądanie, ale dane kontenera nie są dostępne anonimowo. Klienci anonimowi nie mogą wyświetlić listy obiektów blob w kontenerze.
  • Publiczny dostęp do odczytu kontenera i jego blobów (portal i PowerShell: Container): Dane kontenerów i blobów mogą być odczytywane anonimowo, z wyjątkiem ustawień uprawnień kontenera i metadanych kontenera. Klienci mogą wyliczać bloby w kontenerze na anonimowe żądanie, ale nie mogą wyliczać kontenerów w kontu pamięci.

Nie można zmienić poziomu dostępu anonimowego dla pojedynczego obiektu blob. Ustaw anonimowy poziom dostępu tylko na poziomie kontenera. Poziom dostępu anonimowego kontenera można ustawić podczas tworzenia kontenera lub zaktualizować ustawienie w istniejącym kontenerze.

Aby zaktualizować poziom dostępu anonimowego dla co najmniej jednego istniejącego kontenera w witrynie Azure Portal, wykonaj następujące kroki:

  1. Wejdź do przeglądu swojego konta magazynowego w portalu Azure.

  2. W bloku menu w obszarze Magazynowanie danych wybierz pozycję Kontenery.

  3. Wybierz kontenery, dla których chcesz ustawić poziom dostępu anonimowego.

  4. Wybierz Zmień poziom dostępu , aby otworzyć anonimowe ustawienia dostępu.

  5. Wybierz pożądany poziom anonimowego dostępu z rozwijanego menu Anonymous i wybierz OK , aby zastosować zmianę do wybranych kontenerów.

    Zrzut ekranu pokazujący, jak ustawić anonimowy poziom dostępu dla kontenera w portalu.

  6. Aby zweryfikować zmianę, ponownie otwórz Zmień poziom dostępu i potwierdź, że poziom dostępu Anonymous pokazuje wybraną wartość.

Gdy anonimowy dostęp jest niedozwolony dla konta pamięciowego, nie można ustawić poziomu anonimowego dostępu kontenera. Jeśli spróbujesz ustawić poziom dostępu anonimowego kontenera, ustawienie jest wyłączone, ponieważ dostęp anonimowy jest niedozwolony dla konta.

Zrzut ekranu przedstawiający zablokowane ustawienie poziomu anonimowego dostępu kontenera, gdy anonimowy dostęp jest niedozwolony dla konta.

Sprawdzanie ustawienia dostępu anonimowego dla zestawu kontenerów

Możesz sprawdzić, które kontenery w jednym lub więcej kontach pamięci są skonfigurowane do anonimowego dostępu, wypisując je i sprawdzając anonimowy dostęp. Takie podejście jest praktycznym rozwiązaniem, gdy konto magazynu nie zawiera dużej liczby kontenerów lub podczas sprawdzania ustawienia dla niewielkiej liczby kont magazynu. Jednak wydajność może ucierpieć, jeśli spróbujesz wyliczyć dużą liczbę kontenerów.

W poniższym przykładzie użyto programu PowerShell do uzyskania ustawienia dostępu anonimowego dla wszystkich kontenerów na koncie magazynu. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Obsługa funkcji

Może to mieć wpływ na obsługę tej funkcji przez włączenie protokołu Data Lake Storage Gen2, sieciowego systemu plików (NFS) 3.0 lub protokołu SSH File Transfer Protocol (SFTP). Jeśli włączono dowolną z tych funkcji, zobacz Obsługa funkcji usługi Blob Storage na kontach usługi Azure Storage, aby ocenić obsługę tej funkcji.

Następne kroki