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. Dostęp anonimowy stanowi potencjalne zagrożenie bezpieczeństwa, więc jeśli twój scenariusz nie wymaga tego, zalecamy skorygowanie dostępu anonimowego dla konta magazynu.
W tym artykule opisano sposób konfigurowania anonimowego dostępu do odczytu dla kontenera i jego obiektów blob. Aby uzyskać informacje na temat korygowania dostępu anonimowego w celu uzyskania optymalnego bezpieczeństwa, zobacz jeden z następujących artykułów:
- Korygowanie anonimowego dostępu do odczytu do danych obiektów blob (wdrożenia usługi Azure Resource Manager)
- Korygowanie anonimowego dostępu do odczytu do danych obiektów blob (wdrożenia klasyczne)
Informacje o anonimowym dostępie do odczytu
Dostęp anonimowy do danych jest zawsze domyślnie zabroniony. Istnieją dwa oddzielne ustawienia wpływające na dostęp anonimowy:
Ustawienie dostępu anonimowego dla konta magazynu. Konto magazynu usługi Azure Resource Manager oferuje ustawienie zezwalania na dostęp anonimowy dla konta lub nie zezwalania na nie. Firma Microsoft zaleca uniemożliwienie dostępu anonimowego dla kont magazynu w celu uzyskania optymalnego bezpieczeństwa.
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 zmodyfikować ustawienie dostępu anonimowego kontenera, aby włączyć dostęp anonimowy tylko wtedy, gdy dostęp anonimowy jest dozwolony dla konta magazynu.
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 jest ustawiony na obiekt blob | |
---|---|---|---|
Dostęp anonimowy jest niedozwolony dla konta magazynu | Brak anonimowego dostępu do żadnego kontenera na koncie magazynu. | Brak anonimowego dostępu do żadnego kontenera na koncie magazynu. Ustawienie konta magazynu zastępuje ustawienie kontenera. | Brak anonimowego dostępu do żadnego kontenera na koncie magazynu. Ustawienie konta magazynu zastępuje ustawienie kontenera. |
Dostęp anonimowy jest dozwolony dla konta magazynu | Brak anonimowego dostępu do tego kontenera (konfiguracja domyślna). | Dostęp anonimowy jest dozwolony dla tego kontenera i jego obiektów blob. | Dostęp anonimowy jest dozwolony do obiektów blob w tym kontenerze, ale nie do samego kontenera. |
Gdy dostęp anonimowy jest dozwolony dla konta magazynu i skonfigurowany dla określonego kontenera, żądanie odczytu obiektu blob w tym kontenerze, który jest przekazywany bez Authorization
nagłówka, jest akceptowane przez usługę, a dane obiektu blob są zwracane w odpowiedzi. Jeśli jednak żądanie jest przekazywane z nagłówkiem Authorization
, dostęp anonimowy na koncie magazynu jest ignorowany, a żądanie jest autoryzowane na podstawie podanych poświadczeń.
Zezwalanie na dostęp anonimowy do odczytu dla konta magazynu lub nie zezwala na nie
Gdy dostęp anonimowy jest dozwolony dla konta magazynu, użytkownik z odpowiednimi uprawnieniami może zmodyfikować ustawienie dostępu anonimowego kontenera, aby umożliwić anonimowy dostęp do danych w tym kontenerze. Dane obiektów blob nigdy nie są dostępne dla dostępu anonimowego, chyba że użytkownik wykona dodatkowy krok w celu jawnego skonfigurowania ustawienia dostępu anonimowego kontenera.
Należy pamiętać, że dostęp anonimowy do kontenera jest zawsze domyślnie wyłączony i musi być jawnie skonfigurowany tak, aby zezwalał na żądania anonimowe. Niezależnie od ustawienia na koncie magazynu dane nigdy nie będą dostępne dla dostępu anonimowego, chyba że użytkownik z odpowiednimi uprawnieniami wykona ten dodatkowy krok w celu włączenia dostępu anonimowego w kontenerze.
Odmowa dostępu anonimowego dla konta magazynu zastępuje ustawienia dostępu dla wszystkich kontenerów na tym koncie magazynu, uniemożliwiając anonimowy dostęp do danych obiektów blob na tym koncie. Gdy dostęp anonimowy jest niedozwolony dla konta, nie można skonfigurować ustawienia dostępu dla kontenera w celu zezwolenia na dostęp anonimowy, a wszelkie przyszłe żądania anonimowe do tego konta kończą się niepowodzeniem. Przed zmianą tego ustawienia pamiętaj, aby zrozumieć wpływ na aplikacje klienckie, które mogą uzyskiwać dostęp do danych na koncie magazynu anonimowo. Aby uzyskać więcej informacji, zobacz Zapobieganie anonimowemu dostępowi do odczytu do kontenerów i obiektów blob.
Ważne
Gdy dostęp anonimowy jest niedozwolony dla konta magazynu, klienci korzystający z anonimowego elementu nośnego będą stwierdzić, że usługa Azure Storage zwraca błąd 403 (Zabronione), a nie błąd 401 (Brak autoryzacji). Zalecamy, aby wszystkie kontenery są prywatne, aby rozwiązać 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ść AllowBlobAnonymousAccess dla konta magazynu, użytkownik musi mieć uprawnienia do tworzenia kont magazynu i zarządzania nimi. Role kontroli dostępu opartej na rolach (RBAC) platformy Azure, które zapewniają te uprawnienia, obejmują akcję Microsoft.Storage/storageAccounts/write . Wbudowane role z tą akcją obejmują:
- Rola właściciela w usłudze Azure Resource Manager
- Rola współautora w usłudze Azure Resource Manager
- Rola współautora konta magazynu
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 na temat zakresu ról, zobacz Omówienie zakresu kontroli dostępu opartej na rolach platformy Azure.
Należy zachować ostrożność, aby ograniczyć przypisywanie tych ról tylko do tych użytkowników administracyjnych, którzy wymagają możliwości utworzenia konta magazynu lub zaktualizowania jego właściwości. Użyj zasady najniższych uprawnień, aby upewnić się, że użytkownicy mają najmniejsze uprawnienia, których potrzebują do wykonania swoich 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 za pośrednictwem identyfikatora Entra firmy Microsoft. Obejmują one jednak usługę Microsoft.Storage/storageAccounts/listkeys/action, która udziela dostępu do kluczy dostępu do konta. Za pomocą tego uprawnienia użytkownik może użyć kluczy dostępu do konta, aby uzyskać dostęp do wszystkich danych na koncie magazynu.
Microsoft.Storage /storageAccounts/listkeys/action przyznaje dostęp do danych za pośrednictwem kluczy konta, ale nie przyznaje użytkownikowi możliwości zmiany właściwości AllowBlobPublicAccess dla konta magazynu. 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 obiektu 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 zezwolić na dostęp anonimowy dla konta magazynu lub nie zezwalać na nie, ustaw właściwość AllowBlobPublicAccess konta. Ta właściwość jest dostępna dla wszystkich kont magazynu utworzonych za pomocą modelu wdrażania usługi Azure Resource Manager. Aby uzyskać więcej informacji, zobacz Omówienie konta magazynu.
Aby zezwolić na dostęp anonimowy dla konta magazynu w witrynie Azure Portal lub uniemożliwić mu dostęp anonimowy, wykonaj następujące kroki:
W witrynie Azure Portal przejdź do swojego konta magazynu.
Znajdź ustawienie Konfiguracja w obszarze Ustawienia.
Ustaw opcję Zezwalaj na dostęp anonimowy obiektu blob na wartość Włączone lub Wyłączone.
Uwaga
Odmowa dostępu anonimowego dla konta magazynu nie ma wpływu na żadne statyczne witryny internetowe hostowane na tym koncie magazynu. Kontener $web jest zawsze dostępny publicznie.
Po zaktualizowaniu ustawienia dostępu anonimowego dla konta magazynu może upłynąć do 30 sekund, zanim zmiana zostanie w pełni rozpropagowana.
Po skonfigurowaniu kontenera na potrzeby dostępu anonimowego żądania odczytu obiektów blob w tym kontenerze nie muszą być autoryzowane. Jednak wszystkie reguły zapory skonfigurowane dla konta magazynu pozostają w mocy i blokują ruch wbudowany ze skonfigurowanymi listami ACL.
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.
W przykładach w tej sekcji pokazano, jak odczytać właściwość AllowBlobPublicAccess dla konta magazynu, aby określić, czy dostęp anonimowy jest obecnie dozwolony, czy niedozwolony. Aby dowiedzieć się, jak sprawdzić, czy ustawienie dostępu anonimowego konta jest skonfigurowane w celu zapobiegania dostępowi anonimowemu, zobacz Korygowanie dostępu anonimowego dla konta magazynu.
Ustawianie poziomu dostępu anonimowego dla kontenera
Aby udzielić użytkownikom anonimowym dostępu do odczytu do kontenera i jego obiektów blob, najpierw zezwól na dostęp anonimowy dla konta magazynu, a następnie ustaw poziom dostępu anonimowego kontenera. Jeśli dostęp anonimowy zostanie odrzucony dla konta magazynu, nie będzie można skonfigurować dostępu anonimowego dla kontenera.
Uwaga
Firma Microsoft zaleca zezwolenie na anonimowy dostęp do danych obiektów blob na koncie magazynu.
Jeśli dostęp anonimowy jest dozwolony dla konta magazynu, można skonfigurować kontener z następującymi uprawnieniami:
- Brak publicznego dostępu do odczytu: do kontenera i jego obiektów blob można uzyskać dostęp tylko za pomocą autoryzowanego żądania. Ta opcja jest domyślna dla wszystkich nowych kontenerów.
- Publiczny dostęp do odczytu tylko dla obiektów blob: obiekty blob w kontenerze mogą być odczytywane przez anonimowe żądanie, ale dane kontenera nie są dostępne anonimowo. Klienci anonimowi nie mogą wyliczać obiektów blob w kontenerze.
- Publiczny dostęp do odczytu dla kontenera i jego obiektów blob: dane kontenera i obiektu blob mogą być odczytywane przez anonimowe żądanie, z wyjątkiem ustawień uprawnień kontenera i metadanych kontenera. Klienci mogą wyliczać obiekty blob w kontenerze za pomocą żądania anonimowego, ale nie mogą wyliczać kontenerów na koncie magazynu.
Nie można zmienić poziomu dostępu anonimowego dla pojedynczego obiektu blob. Poziom dostępu anonimowego jest ustawiany 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:
Przejdź do przeglądu konta magazynu w witrynie Azure Portal.
W obszarze Magazyn danych w bloku menu wybierz pozycję Kontenery.
Wybierz kontenery, dla których chcesz ustawić poziom dostępu anonimowego.
Użyj przycisku Zmień poziom dostępu, aby wyświetlić ustawienia dostępu anonimowego.
Wybierz żądany poziom dostępu anonimowego z listy rozwijanej Poziom dostępu anonimowego i wybierz przycisk OK, aby zastosować zmianę do wybranych kontenerów.
Gdy dostęp anonimowy jest niedozwolony dla konta magazynu, nie można ustawić poziomu dostępu anonimowego kontenera. Jeśli spróbujesz ustawić poziom dostępu anonimowego kontenera, ustawienie jest wyłączone, ponieważ dostęp anonimowy jest niedozwolony dla konta.
Sprawdzanie ustawienia dostępu anonimowego dla zestawu kontenerów
Istnieje możliwość sprawdzenia, które kontenery na co najmniej jednym koncie magazynu są skonfigurowane pod kątem dostępu anonimowego, wyświetlając listę kontenerów i sprawdzając ustawienie dostępu anonimowego. 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 wystąpić w przypadku próby wyliczenia dużej liczby 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.