Korygowanie anonimowego dostępu do odczytu do danych obiektów blob (wdrożenia usługi Azure Resource Manager)

Usługa Azure Blob Storage obsługuje opcjonalny anonimowy dostęp do odczytu do kontenerów i obiektów blob. Jednak dostęp anonimowy może stanowić zagrożenie bezpieczeństwa. Zalecamy wyłączenie dostępu anonimowego w celu uzyskania optymalnego bezpieczeństwa. Odmowa dostępu anonimowego pomaga zapobiec naruszeniom zabezpieczeń danych spowodowanym niepożądanym dostępem anonimowym.

Domyślnie dostęp anonimowy do danych obiektów blob jest zawsze zabroniony. Domyślna konfiguracja konta magazynu usługi Azure Resource Manager uniemożliwia użytkownikom konfigurowanie anonimowego dostępu do kontenerów i obiektów blob na koncie magazynu. Ta konfiguracja domyślna nie zezwala na dostęp anonimowy do konta magazynu usługi Azure Resource Manager niezależnie od ustawienia dostępu dla pojedynczego kontenera.

Gdy dostęp anonimowy dla konta magazynu jest niedozwolony, usługa Azure Storage odrzuca wszystkie anonimowe żądania odczytu względem danych obiektów blob. Użytkownicy nie mogą później konfigurować dostępu anonimowego dla kontenerów na tym koncie. Wszystkie kontenery, które zostały już skonfigurowane na potrzeby dostępu anonimowego, nie będą już akceptować żądań anonimowych.

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, aby nie zezwalać na to konto magazynu.

Korygowanie dla usługi Azure Resource Manager i klasycznych kont magazynu

W tym artykule opisano sposób używania struktury DRAG (Detection-Remediation-Audit-Governance) w celu ciągłego zarządzania dostępem anonimowym dla kont magazynu korzystających z modelu wdrażania usługi Azure Resource Manager. Wszystkie konta magazynu ogólnego przeznaczenia w wersji 2, konta magazynu blokowych obiektów blob w warstwie Premium, konta udziału plików w warstwie Premium i konta usługi Blob Storage używają modelu wdrażania usługi Azure Resource Manager. Niektóre starsze konta ogólnego przeznaczenia w wersji 1 i konta stronicowych obiektów blob w warstwie Premium mogą używać klasycznego modelu wdrażania.

Jeśli twoje konto magazynu korzysta z klasycznego modelu wdrażania, zalecamy jak najszybszą migrację do modelu wdrażania usługi Azure Resource Manager. Konta usługi Azure Storage korzystające z klasycznego modelu wdrażania zostaną wycofane 31 sierpnia 2024 r. Aby uzyskać więcej informacji, zobacz Klasyczne konta magazynu platformy Azure zostaną wycofane 31 sierpnia 2024 r.

Jeśli obecnie nie możesz migrować klasycznych kont magazynu, należy skorygować anonimowy dostęp do tych kont. Aby dowiedzieć się, jak skorygować dostęp anonimowy dla klasycznych kont magazynu, zobacz Korygowanie anonimowego dostępu do odczytu do danych obiektów blob (wdrożenia klasyczne). Aby uzyskać więcej informacji na temat modeli wdrażania platformy Azure, zobacz Resource Manager i wdrożenie 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:

  1. 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.

  2. 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 nagłówka autoryzacji , jest akceptowane przez usługę, a dane obiektu blob są zwracane w odpowiedzi.

Wykrywanie żądań anonimowych z aplikacji klienckich

Jeśli nie zezwalasz na anonimowy dostęp do odczytu dla konta magazynu, ryzykujesz odrzucanie żądań do kontenerów i obiektów blob, które są obecnie skonfigurowane pod kątem dostępu anonimowego. Uniemożliwienie dostępu anonimowego dla konta magazynu zastępuje ustawienia dostępu dla poszczególnych kontenerów na tym koncie magazynu. Gdy dostęp anonimowy jest niedozwolony dla konta magazynu, wszelkie przyszłe anonimowe żądania do tego konta nie powiedzą się.

Aby zrozumieć, jak uniemożliwienie dostępu anonimowego może mieć wpływ na aplikacje klienckie, zalecamy włączenie rejestrowania i metryk dla tego konta oraz analizowanie wzorców żądań anonimowych w odstępach czasu. Użyj metryk, aby określić liczbę anonimowych żądań na koncie magazynu i użyć dzienników, aby określić, do których kontenerów uzyskuje się dostęp anonimowo.

Monitorowanie żądań anonimowych za pomocą Eksploratora metryk

Aby śledzić anonimowe żądania do konta magazynu, użyj Eksploratora metryk platformy Azure w witrynie Azure Portal. Aby uzyskać więcej informacji na temat Eksploratora metryk, zobacz Analizowanie metryk za pomocą Eksploratora metryk usługi Azure Monitor.

Wykonaj następujące kroki, aby utworzyć metrykę, która śledzi żądania anonimowe:

  1. W witrynie Azure Portal przejdź do swojego konta magazynu. W sekcji Monitorowanie wybierz pozycję Metryki.

  2. Wybierz pozycję Dodaj metrykę. W oknie dialogowym Metryka określ następujące wartości:

    1. Pozostaw pole Zakres ustawione na nazwę konta magazynu.
    2. Ustaw przestrzeń nazw metryki na Blob. Ta metryka zgłasza tylko żądania dotyczące usługi Blob Storage.
    3. Ustaw pole Metryka na Wartość Transakcje.
    4. W polu Agregacja ustaw wartość Suma.

    Nowa metryka wyświetla sumę liczby transakcji względem usługi Blob Storage w danym przedziale czasu. Wynikowa metryka zostanie wyświetlona, jak pokazano na poniższej ilustracji:

    Screenshot showing how to configure metric to sum blob transactions

  3. Następnie wybierz przycisk Dodaj filtr , aby utworzyć filtr dla metryki dla żądań anonimowych.

  4. W oknie dialogowym Filtr określ następujące wartości:

    1. Ustaw wartość Właściwość na Wartość Uwierzytelnianie.
    2. Ustaw pole Operator na znak równości (=).
    3. Ustaw pole Wartości na Anonimowe , wybierając je z listy rozwijanej lub wpisując je w.
  5. W prawym górnym rogu wybierz interwał czasu, w którym chcesz wyświetlić metryki. Możesz również wskazać stopień szczegółowości agregacji żądań, określając interwały w dowolnym miejscu od 1 minuty do 1 miesiąca.

Po skonfigurowaniu metryki żądania anonimowe zaczną pojawiać się na grafie. Na poniższej ilustracji przedstawiono żądania anonimowe zagregowane w ciągu ostatnich 30 minut.

Screenshot showing aggregated anonymous requests against Blob storage

Możesz również skonfigurować regułę alertu, aby powiadomić o wysłaniu określonej liczby żądań anonimowych na koncie magazynu. Aby uzyskać więcej informacji, zobacz Tworzenie, wyświetlanie alertów metryk i zarządzanie nimi przy użyciu usługi Azure Monitor.

Analizowanie dzienników w celu identyfikowania kontenerów odbierających żądania anonimowe

Dzienniki usługi Azure Storage przechwytują szczegółowe informacje o żądaniach dotyczących konta magazynu, w tym o sposobie autoryzowania żądania. Dzienniki można analizować, aby określić, które kontenery odbierają żądania anonimowe.

Aby rejestrować żądania do konta usługi Azure Storage w celu oceny żądań anonimowych, możesz użyć rejestrowania usługi Azure Storage w usłudze Azure Monitor. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Storage.

Rejestrowanie usługi Azure Storage w usłudze Azure Monitor obsługuje używanie zapytań dzienników do analizowania danych dziennika. Aby wykonywać zapytania dotyczące dzienników, możesz użyć obszaru roboczego usługi Azure Log Analytics. Aby dowiedzieć się więcej na temat zapytań dzienników, zobacz Samouczek: rozpoczynanie pracy z zapytaniami usługi Log Analytics.

Tworzenie ustawienia diagnostycznego w witrynie Azure Portal

Aby rejestrować dane usługi Azure Storage za pomocą usługi Azure Monitor i analizować je za pomocą usługi Azure Log Analytics, należy najpierw utworzyć ustawienie diagnostyczne wskazujące typy żądań i usługi magazynu, dla których chcesz rejestrować dane. Aby utworzyć ustawienie diagnostyczne w Azure Portal, wykonaj następujące kroki:

  1. Utwórz nowy obszar roboczy usługi Log Analytics w subskrypcji zawierającej konto usługi Azure Storage. Po skonfigurowaniu rejestrowania dla konta magazynu dzienniki będą dostępne w obszarze roboczym usługi Log Analytics. Aby uzyskać więcej informacji, zobacz Tworzenie obszaru roboczego usługi Log Analytics w Azure Portal.

  2. W witrynie Azure Portal przejdź do swojego konta magazynu.

  3. W sekcji Monitorowanie wybierz pozycję Ustawienia diagnostyczne.

  4. Wybierz pozycję Obiekt blob, aby rejestrować żądania dotyczące usługi Blob Storage.

  5. Wybierz pozycję Dodaj ustawienia diagnostyczne.

  6. Podaj nazwę ustawień diagnostyki.

  7. W obszarze Szczegóły kategorii w sekcji dziennika wybierz typy żądań do zarejestrowania. Wszystkie żądania anonimowe są żądaniami odczytu, dlatego wybierz pozycję StorageRead , aby przechwycić żądania anonimowe.

  8. W obszarze Szczegóły miejsca docelowego wybierz pozycję Wyślij do usługi Log Analytics. Wybierz subskrypcję i utworzony wcześniej obszar roboczy usługi Log Analytics, jak pokazano na poniższej ilustracji.

    Screenshot showing how to create a diagnostic setting for logging requests

Po utworzeniu ustawienia diagnostycznego żądania do konta magazynu są następnie rejestrowane zgodnie z tym ustawieniem. Aby uzyskać więcej informacji, zobacz Tworzenie ustawienia diagnostycznego w celu zbierania dzienników zasobów i metryk na platformie Azure.

Aby uzyskać informacje o polach dostępnych w dziennikach usługi Azure Storage w usłudze Azure Monitor, zobacz Dzienniki zasobów.

Wykonywanie zapytań dotyczących dzienników dla żądań anonimowych

Dzienniki usługi Azure Storage w usłudze Azure Monitor obejmują typ autoryzacji, który został użyty do wykonania żądania do konta magazynu. W zapytaniu dziennika przefiltruj właściwość AuthenticationType , aby wyświetlić żądania anonimowe.

Aby pobrać dzienniki z ostatnich siedmiu dni dla żądań anonimowych względem usługi Blob Storage, otwórz obszar roboczy usługi Log Analytics. Następnie wklej następujące zapytanie do nowego zapytania dziennika i uruchom je:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AuthenticationType == "Anonymous"
| project TimeGenerated, AccountName, AuthenticationType, Uri

Możesz również skonfigurować regułę alertu na podstawie tego zapytania, aby powiadomić Cię o żądaniach anonimowych. Aby uzyskać więcej informacji, zobacz Tworzenie, wyświetlanie alertów dzienników i zarządzanie nimi przy użyciu usługi Azure Monitor.

Odpowiedzi na żądania anonimowe

Gdy usługa Blob Storage odbiera anonimowe żądanie, żądanie to powiedzie się, jeśli spełnione są wszystkie następujące warunki:

  • Dostęp anonimowy jest dozwolony dla konta magazynu.
  • Kontener docelowy jest skonfigurowany do zezwalania na dostęp anonimowy.
  • Żądanie dotyczy dostępu do odczytu.

Jeśli którykolwiek z tych warunków nie jest spełniony, żądanie zakończy się niepowodzeniem. Kod odpowiedzi po niepowodzeniu zależy od tego, czy żądanie anonimowe zostało wykonane z wersją usługi, która obsługuje wyzwanie elementu nośnego. Wyzwanie elementu nośnego jest obsługiwane w przypadku wersji usługi 2019-12-12 i nowszych:

  • Jeśli żądanie anonimowe zostało wykonane z wersją usługi, która obsługuje wyzwanie elementu nośnego, usługa zwraca kod błędu 401 (Brak autoryzacji).
  • Jeśli żądanie anonimowe zostało wykonane z wersją usługi, która nie obsługuje wyzwania elementu nośnego, a dostęp anonimowy jest niedozwolony dla konta magazynu, usługa zwraca kod błędu 409 (Konflikt).
  • Jeśli żądanie anonimowe zostało wykonane z wersją usługi, która nie obsługuje żądania elementu nośnego, a dostęp anonimowy jest dozwolony dla konta magazynu, usługa zwraca kod błędu 404 (Nie znaleziono).

Aby uzyskać więcej informacji na temat wyzwania nośnego, zobacz Wyzwanie Bearer.

Korygowanie dostępu anonimowego dla konta magazynu

Po ocenieniu anonimowych żądań do kontenerów i obiektów blob na koncie magazynu możesz wykonać akcję w celu skorygowania dostępu anonimowego dla całego konta, ustawiając właściwość AllowBlobPublicAccess na False.

Ustawienie dostępu anonimowego dla konta magazynu zastępuje poszczególne ustawienia kontenerów na tym koncie. Jeśli nie zezwalasz na dostęp anonimowy dla konta magazynu, wszystkie kontenery skonfigurowane do zezwalania na dostęp anonimowy nie będą już dostępne anonimowo. Jeśli nie masz dostępu anonimowego dla konta, nie musisz również wyłączać dostępu anonimowego dla poszczególnych kontenerów.

Jeśli scenariusz wymaga, aby niektóre kontenery były dostępne na potrzeby dostępu anonimowego, należy przenieść te kontenery i ich obiekty blob na oddzielne konta magazynu zarezerwowane do dostępu anonimowego. Następnie możesz nie zezwalać na dostęp anonimowy dla innych kont magazynu.

Korygowanie 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 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ą:

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 Service Administracja istrator i Współ-Administracja istrator 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.

Ustaw właściwość AllowBlobPublicAccess konta magazynu na false

Aby nie zezwalać na dostęp anonimowy dla konta magazynu, ustaw właściwość AllowBlobPublicAccess konta na false.

Ważne

Odmowa dostępu anonimowego dla konta magazynu zastępuje ustawienia dostępu dla wszystkich kontenerów na tym koncie magazynu. Gdy dostęp anonimowy jest niedozwolony dla konta magazynu, wszelkie przyszłe anonimowe żądania do tego konta nie powiedzą się. 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, wykonując kroki opisane w temacie Wykrywanie anonimowych żądań z aplikacji klienckich.

Aby uniemożliwić dostęp anonimowy do konta magazynu w witrynie Azure Portal, wykonaj następujące kroki:

  1. W witrynie Azure Portal przejdź do swojego konta magazynu.

  2. Znajdź ustawienie Konfiguracja w obszarze Ustawienia.

  3. Ustaw opcję Zezwalaj na dostęp anonimowy obiektu blob do pozycji Wyłączone.

    Screenshot showing how to disallow anonymous access for account

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.

Przykładowy skrypt do korygowania zbiorczego

Poniższy przykładowy skrypt programu PowerShell jest uruchamiany dla wszystkich kont magazynu usługi Azure Resource Manager w subskrypcji i ustawia ustawienie AllowBlobPublicAccess dla tych kont na wartość False.

<#
.SYNOPSIS
Finds storage accounts in a subscription where AllowBlobPublicAccess is True or null.

.DESCRIPTION
This script runs against all Azure Resource Manager storage accounts in a subscription
and sets the "AllowBlobPublicAccess" property to False.

Standard operation will enumerate all accounts where the setting is enabled and allow the 
user to decide whether or not to disable the setting.  

Classic storage accounts will require individual adjustment of containers to remove public
access, and will not be affected by this script.

Run with BypassConfirmation=$true if you wish to disallow public access on all Azure Resource Manager 
storage accounts without individual confirmation.

You will need access to the subscription to run the script.

.PARAMETER BypassConformation
Set this to $true to skip confirmation of changes. Not recommended.

.PARAMETER SubscriptionId
The subscription ID of the subscription to check.

.PARAMETER ReadOnly
Set this parameter so that the script makes no changes to any subscriptions and only reports affect accounts.

.PARAMETER NoSignin
Set this parameter so that no sign-in occurs -- you must sign in first. Use this if you're invoking this script repeatedly for multiple subscriptions and want to avoid being prompted to sign-in for each subscription.

.OUTPUTS
This command produces only STDOUT output (not standard PowerShell) with information about affect accounts.
#>
param(
    [boolean]$BypassConfirmation=$false,
    [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName='SubscriptionId')]
    [String] $SubscriptionId,
    [switch] $ReadOnly, # Use this if you don't want to make changes, but want to get information about affected accounts
    [switch] $NoSignin # Use this if you are already signed in and don't want to be prompted again
)

begin {
    if ( ! $NoSignin.IsPresent ) {
        login-azaccount | out-null
    }
}

process {
    try {
        select-azsubscription -subscriptionid $SubscriptionId -erroraction stop | out-null
    } catch {
        write-error "Unable to access select subscription '$SubscriptionId' as the signed in user -- ensure that you have access to this subscription." -erroraction stop
    }

    foreach ($account in Get-AzStorageAccount) 
    {
        if($account.AllowBlobPublicAccess -eq $null -or $account.AllowBlobPublicAccess -eq $true)
        {
            Write-host "Account:" $account.StorageAccountName " isn't disallowing public access."

            if ( ! $ReadOnly.IsPresent ) {
                if(!$BypassConfirmation)
                {
                    $confirmation = Read-Host "Do you wish to disallow public access? [y/n]"
                }
                if($BypassConfirmation -or $confirmation -eq 'y')
                {
                    try
                    {
                        set-AzStorageAccount -Name $account.StorageAccountName -ResourceGroupName $account.ResourceGroupName -AllowBlobPublicAccess $false
                        Write-Host "Success!"
                    }
                    catch
                    {
                        Write-output $_
                    }
                }
            }
        }
        elseif($account.AllowBlobPublicAccess -eq $false)
        {
            Write-Host "Account:" $account.StorageAccountName " has public access disabled, no action required."
        }
        else
        {
            Write-Host "Account:" $account.StorageAccountName ". Error, please manually investigate."
        }
    }
}

end {
    Write-Host "Script complete"
}

Sprawdź, czy dostęp anonimowy został skorygowany

Aby sprawdzić, czy skorygowano dostęp anonimowy dla konta magazynu, możesz przetestować, czy dostęp anonimowy do obiektu blob nie jest dozwolony, że modyfikowanie ustawienia dostępu kontenera nie jest dozwolone i że nie można utworzyć kontenera z włączonym dostępem anonimowym.

Sprawdź, czy dostęp anonimowy do obiektu blob nie jest dozwolony

Aby sprawdzić, czy dostęp anonimowy do określonego obiektu blob jest niedozwolony, możesz spróbować pobrać obiekt blob za pośrednictwem jego adresu URL. Jeśli pobieranie zakończy się pomyślnie, obiekt blob jest nadal publicznie dostępny. Jeśli obiekt blob nie jest publicznie dostępny, ponieważ dostęp anonimowy został niedozwolony dla konta magazynu, zostanie wyświetlony komunikat o błędzie informujący, że dostęp anonimowy nie jest dozwolony na tym koncie magazynu.

W poniższym przykładzie pokazano, jak użyć programu PowerShell do próby pobrania obiektu blob za pośrednictwem adresu URL. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:

$url = "<absolute-url-to-blob>"
$downloadTo = "<file-path-for-download>"
Invoke-WebRequest -Uri $url -OutFile $downloadTo -ErrorAction Stop

Sprawdź, czy modyfikowanie ustawienia dostępu kontenera nie jest dozwolone

Aby sprawdzić, czy nie można zmodyfikować ustawienia dostępu kontenera po uniemożliwieniu dostępu anonimowego dla konta magazynu, możesz spróbować zmodyfikować to ustawienie. Zmiana ustawienia dostępu kontenera kończy się niepowodzeniem, jeśli dostęp anonimowy jest niedozwolony dla konta magazynu.

W poniższym przykładzie pokazano, jak użyć programu PowerShell do próby zmiany ustawienia dostępu kontenera. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container-name>"

$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context

Set-AzStorageContainerAcl -Context $ctx -Container $containerName -Permission Blob

Sprawdź, czy nie można utworzyć kontenera z włączonym dostępem anonimowym

Jeśli dostęp anonimowy jest niedozwolony dla konta magazynu, nie będzie można utworzyć nowego kontenera z włączonym dostępem anonimowym. Aby sprawdzić, możesz spróbować utworzyć kontener z włączonym dostępem anonimowym.

W poniższym przykładzie pokazano, jak użyć programu PowerShell do próby utworzenia kontenera z włączonym dostępem anonimowym. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container-name>"

$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context

New-AzStorageContainer -Name $containerName -Permission Blob -Context $ctx

Sprawdź ustawienie dostępu anonimowego dla wielu kont

Aby sprawdzić ustawienie dostępu anonimowego dla zestawu kont magazynu z optymalną wydajnością, możesz użyć Eksploratora usługi Azure Resource Graph w witrynie Azure Portal. Aby dowiedzieć się więcej na temat korzystania z Eksploratora usługi Resource Graph, zobacz Szybki start: uruchamianie pierwszego zapytania usługi Resource Graph przy użyciu Eksploratora usługi Azure Resource Graph.

Uruchomienie następującego zapytania w Eksploratorze usługi Resource Graph zwraca listę kont magazynu i wyświetla ustawienie dostępu anonimowego dla każdego konta:

resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowBlobPublicAccess = parse_json(properties).allowBlobPublicAccess
| project subscriptionId, resourceGroup, name, allowBlobPublicAccess

Na poniższej ilustracji przedstawiono wyniki zapytania w ramach subskrypcji. W przypadku kont magazynu, na których właściwość AllowBlobPublicAccess została jawnie ustawiona, jest wyświetlana w wynikach jako prawda lub fałsz. Jeśli właściwość AllowBlobPublicAccess nie została ustawiona dla konta magazynu, zostanie wyświetlona jako pusta (lub null) w wynikach zapytania.

Screenshot showing query results for anonymous access setting across storage accounts

Przeprowadzanie inspekcji pod kątem zgodności przy użyciu usługi Azure Policy

Jeśli masz dużą liczbę kont magazynu, możesz przeprowadzić inspekcję, aby upewnić się, że te konta są skonfigurowane w celu zapobiegania dostępowi anonimowemu. Aby przeprowadzić inspekcję zestawu kont magazynu pod kątem zgodności, użyj usługi Azure Policy. Azure Policy to usługa, której można użyć do tworzenia, przypisywania i zarządzania zasadami, które stosują reguły do zasobów platformy Azure. Usługa Azure Policy pomaga zachować zgodność tych zasobów ze standardami firmowymi i umowami dotyczącymi poziomu usług. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Policy.

Tworzenie zasad z efektem inspekcji

Usługa Azure Policy obsługuje efekty, które określają, co się stanie, gdy reguła zasad jest oceniana względem zasobu. Efekt inspekcji tworzy ostrzeżenie, gdy zasób nie jest zgodny, ale nie zatrzymuje żądania. Aby uzyskać więcej informacji na temat efektów, zobacz Omówienie efektów usługi Azure Policy.

Aby utworzyć zasady z efektem inspekcji dla ustawienia dostępu anonimowego dla konta magazynu w witrynie Azure Portal, wykonaj następujące kroki:

  1. W portalu Azure przejdź do usługi Azure Policy.

  2. W sekcji Tworzenie wybierz pozycję Definicje.

  3. Wybierz pozycję Dodaj definicję zasad, aby utworzyć nową definicję zasad.

  4. W polu Lokalizacja definicji wybierz przycisk Więcej, aby określić, gdzie znajduje się zasób zasad inspekcji.

  5. Określ nazwę zasad. Opcjonalnie możesz określić opis i kategorię.

  6. W obszarze Reguła zasad dodaj następującą definicję zasad do sekcji policyRule .

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. Zapisz zasady.

Przypisywanie zasad

Następnie przypisz zasady do zasobu. Zakres zasad odpowiada zasobowi i wszelkim zasobom poniżej. Aby uzyskać więcej informacji na temat przypisywania zasad, zobacz Azure Policy assignment structure (Struktura przypisywania zasad w usłudze Azure Policy).

Aby przypisać zasady w witrynie Azure Portal, wykonaj następujące kroki:

  1. W portalu Azure przejdź do usługi Azure Policy.
  2. W sekcji Tworzenie wybierz pozycję Przypisania.
  3. Wybierz pozycję Przypisz zasady , aby utworzyć nowe przypisanie zasad.
  4. W polu Zakres wybierz zakres przypisania zasad.
  5. W polu Definicja zasad wybierz przycisk Więcej, a następnie wybierz zasady zdefiniowane w poprzedniej sekcji z listy.
  6. Określ nazwę przypisania zasad. Opcjonalnie możesz wprowadzić opis.
  7. Pozostaw opcję Wymuszanie zasad ustawione na włączone. To ustawienie nie ma wpływu na zasady inspekcji.
  8. Wybierz pozycję Przejrzyj i utwórz , aby utworzyć przypisanie.

Wyświetlanie raportu zgodności

Po przypisaniu zasad możesz wyświetlić raport zgodności. Raport zgodności zasad inspekcji zawiera informacje o tym, które konta magazynu nie są zgodne z zasadami. Aby uzyskać więcej informacji, zobacz Pobieranie danych zgodności zasad.

Udostępnienie raportu zgodności po utworzeniu przypisania zasad może potrwać kilka minut.

Aby wyświetlić raport zgodności w witrynie Azure Portal, wykonaj następujące kroki:

  1. W portalu Azure przejdź do usługi Azure Policy.

  2. Wybierz pozycję Zgodność.

  3. Przefiltruj wyniki pod kątem nazwy przypisania zasad utworzonego w poprzednim kroku. Raport przedstawia liczbę zasobów, które nie są zgodne z zasadami.

  4. Możesz przejść do szczegółów raportu, aby uzyskać dodatkowe informacje, w tym listę kont magazynu, które nie są zgodne.

    Screenshot showing compliance report for audit policy for anonymous access

Używanie usługi Azure Policy do wymuszania autoryzowanego dostępu

Usługa Azure Policy obsługuje ład w chmurze, zapewniając, że zasoby platformy Azure są zgodne z wymaganiami i standardami. Aby mieć pewność, że konta magazynu w organizacji zezwalają tylko na autoryzowane żądania, można utworzyć zasady uniemożliwiające utworzenie nowego konta magazynu z ustawieniem dostępu anonimowego, które zezwala na żądania anonimowe. Te zasady uniemożliwią również zmianę konfiguracji istniejącego konta, jeśli ustawienie dostępu anonimowego dla tego konta nie jest zgodne z zasadami.

Zasady wymuszania używają efektu Odmów, aby zapobiec żądaniu, które utworzy lub zmodyfikuje konto magazynu, aby zezwolić na dostęp anonimowy. Aby uzyskać więcej informacji na temat efektów, zobacz Omówienie efektów usługi Azure Policy.

Aby utworzyć zasady z efektem Odmowy dla ustawienia dostępu anonimowego, które zezwala na żądania anonimowe, wykonaj te same kroki opisane w artykule Używanie usługi Azure Policy do inspekcji pod kątem zgodności, ale podaj następujący kod JSON w sekcji policyRule definicji zasad:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Storage/storageAccounts"
      },
      {
        "not": {
          "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
          "equals": "false"
        }
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}

Po utworzeniu zasad z efektem Odmów i przypisaniu jej do zakresu użytkownik nie może utworzyć konta magazynu, które zezwala na dostęp anonimowy. Użytkownik nie może również wprowadzić żadnych zmian konfiguracji na istniejącym koncie magazynu, które obecnie zezwala na dostęp anonimowy. Próba wykonania tej czynności powoduje wystąpienie błędu. Ustawienie dostępu anonimowego dla konta magazynu musi mieć wartość false , aby kontynuować tworzenie konta lub konfigurację.

Na poniższej ilustracji przedstawiono błąd, który występuje, jeśli próbujesz utworzyć konto magazynu, które zezwala na dostęp anonimowy, gdy zasady z efektem Odmowy wymagają, aby dostęp anonimowy był niedozwolony.

Screenshot showing the error that occurs when creating a storage account in violation of policy

Następne kroki