Náprava anonymního přístupu pro čtení k datům objektů blob (nasazení Azure Resource Manageru)

Azure Blob Storage podporuje volitelný anonymní přístup pro čtení ke kontejnerům a objektům blob. Anonymní přístup však může představovat bezpečnostní riziko. Doporučujeme zakázat anonymní přístup pro optimální zabezpečení. Zakázání anonymního přístupu pomáhá zabránit porušením zabezpečení dat způsobeným nežádoucím anonymním přístupem.

Ve výchozím nastavení je anonymní přístup k datům objektů blob vždy zakázán. Výchozí konfigurace účtu úložiště Azure Resource Manageru zakazuje uživatelům konfigurovat anonymní přístup ke kontejnerům a objektům blob v účtu úložiště. Tato výchozí konfigurace zakáže veškerý anonymní přístup k účtu úložiště Azure Resource Manageru bez ohledu na nastavení přístupu pro jednotlivé kontejnery.

Pokud je anonymní přístup k účtu úložiště zakázaný, Azure Storage odmítne všechny anonymní žádosti o čtení proti datům objektů blob. Uživatelé později nemůžou nakonfigurovat anonymní přístup pro kontejnery v daném účtu. Všechny kontejnery, které už byly nakonfigurované pro anonymní přístup, už nebudou přijímat anonymní žádosti.

Upozorňující

Pokud je kontejner nakonfigurovaný pro anonymní přístup, může každý klient číst data v daném kontejneru. Anonymní přístup představuje potenciální bezpečnostní riziko, takže pokud to váš scénář nevyžaduje, doporučujeme ho pro účet úložiště zakázat.

Náprava pro Azure Resource Manager oproti klasickým účtům úložiště

Tento článek popisuje, jak pomocí architektury DRAG (Detection-Remediation-Audit-Governance) nepřetržitě spravovat anonymní přístup pro účty úložiště, které používají model nasazení Azure Resource Manager. Všechny účty úložiště pro obecné účely v2, účty úložiště objektů blob bloku úrovně Premium, účty sdílených složek úrovně Premium a účty Blob Storage používají model nasazení Azure Resource Manager. Některé starší účty pro obecné účely verze 1 a účty objektů blob stránky úrovně Premium můžou používat klasický model nasazení.

Pokud váš účet úložiště používá klasický model nasazení, doporučujeme co nejdříve migrovat na model nasazení Azure Resource Manager. Účty Azure Storage, které používají model nasazení Classic, budou vyřazeny 31. srpna 2024. Další informace najdete v tématu Účty azure Classic Storage vyřazené 31. srpna 2024.

Pokud teď nemůžete migrovat klasické účty úložiště, měli byste teď napravit anonymní přístup k těmto účtům. Informace o nápravě anonymního přístupu pro klasické účty úložiště najdete v tématu Náprava anonymního přístupu pro čtení k datům objektů blob (klasická nasazení). Další informace o modelech nasazení Azure najdete v tématu Resource Manager a nasazení Classic.

Informace o anonymním přístupu pro čtení

Anonymní přístup k vašim datům je ve výchozím nastavení vždy zakázán. Existují dvě samostatná nastavení, která mají vliv na anonymní přístup:

  1. Nastavení anonymního přístupu pro účet úložiště. Účet úložiště Azure Resource Manageru nabízí nastavení pro povolení nebo zakázání anonymního přístupu k účtu. Microsoft doporučuje zakázat anonymní přístup k účtům úložiště, aby byl optimální zabezpečení.

    Pokud je na úrovni účtu povolený anonymní přístup, data objektů blob nejsou dostupná pro anonymní přístup pro čtení, pokud uživatel nezabere další krok pro explicitní konfiguraci nastavení anonymního přístupu kontejneru.

  2. Nakonfigurujte nastavení anonymního přístupu kontejneru. Ve výchozím nastavení je nastavení anonymního přístupu kontejneru zakázané, což znamená, že se vyžaduje autorizace pro každý požadavek na kontejner nebo jeho data. Uživatel s příslušnými oprávněními může upravit nastavení anonymního přístupu kontejneru tak, aby povolil anonymní přístup pouze v případě, že je pro účet úložiště povolený anonymní přístup.

Následující tabulka shrnuje, jak tato dvě nastavení ovlivňují anonymní přístup pro kontejner.

Úroveň anonymního přístupu pro kontejner je nastavená na Privátní (výchozí nastavení) Úroveň anonymního přístupu pro kontejner je nastavená na Kontejner. Úroveň anonymního přístupu pro kontejner je nastavená na objekt blob.
Anonymní přístup je pro účet úložiště zakázaný. Žádný anonymní přístup k žádnému kontejneru v účtu úložiště. Žádný anonymní přístup k žádnému kontejneru v účtu úložiště. Nastavení účtu úložiště přepíše nastavení kontejneru. Žádný anonymní přístup k žádnému kontejneru v účtu úložiště. Nastavení účtu úložiště přepíše nastavení kontejneru.
Pro účet úložiště je povolený anonymní přístup. Žádný anonymní přístup k tomuto kontejneru (výchozí konfigurace). Anonymní přístup je povolený pro tento kontejner a jeho objekty blob. Anonymní přístup je povolený pro objekty blob v tomto kontejneru, ale ne pro samotný kontejner.

Pokud je pro účet úložiště povolený anonymní přístup a nakonfigurovaný pro konkrétní kontejner, pak služba přijme požadavek na čtení objektu blob v daném kontejneru, který se předává bez autorizační hlavičky, a data objektu blob se vrátí v odpovědi.

Zjišťování anonymních požadavků z klientských aplikací

Když zakážete anonymní přístup pro čtení pro účet úložiště, riskujete odmítnutí požadavků na kontejnery a objekty blob, které jsou aktuálně nakonfigurované pro anonymní přístup. Zákaz anonymního přístupu pro účet úložiště přepíše nastavení přístupu pro jednotlivé kontejnery v daném účtu úložiště. Pokud je pro účet úložiště zakázaný anonymní přístup, všechny budoucí anonymní požadavky na tento účet selžou.

Pokud chcete zjistit, jak zakázat anonymní přístup může mít vliv na klientské aplikace, doporučujeme povolit protokolování a metriky pro tento účet a analyzovat vzory anonymních požadavků v průběhu časového intervalu. Pomocí metrik můžete určit počet anonymních požadavků na účet úložiště a pomocí protokolů určit, ke kterým kontejnerům se přistupuje anonymně.

Monitorování anonymních požadavků pomocí Průzkumníka metrik

Pokud chcete sledovat anonymní požadavky na účet úložiště, použijte Azure Metrics Explorer na webu Azure Portal. Další informace o Průzkumníku metrik najdete v tématu Analýza metrik pomocí Průzkumníka metrik služby Azure Monitor.

Pomocí těchto kroků vytvořte metriku, která sleduje anonymní požadavky:

  1. Na webu Azure Portal přejděte na svůj účet úložiště. V části Monitorování vyberte Metriky.

  2. Vyberte Přidat metriku. V dialogovém okně Metrika zadejte následující hodnoty:

    1. Pole Obor ponechte nastavené na název účtu úložiště.
    2. Nastavte obor názvů metriky na objekt blob. Tato metrika hlásí pouze požadavky na úložiště objektů blob.
    3. Nastavte pole Metrika na Transakce.
    4. Nastavte pole Agregace na Součet.

    Nová metrika zobrazuje součet počtu transakcí v úložišti objektů blob v daném časovém intervalu. Výsledná metrika se zobrazí, jak je znázorněno na následujícím obrázku:

    Screenshot showing how to configure metric to sum blob transactions

  3. Dále vyberte tlačítko Přidat filtr a vytvořte filtr pro metriku pro anonymní požadavky.

  4. V dialogovém okně Filtr zadejte následující hodnoty:

    1. Nastavte hodnotu vlastnosti na Ověřování.
    2. Nastavte pole Operátor na symbol rovná se (=).
    3. Nastavte pole Hodnoty na Anonymní tak, že ho vyberete z rozevíracího seznamu nebo ho zadáte.
  5. V pravém horním rohu vyberte časový interval, za který chcete metriku zobrazit. Můžete také určit, jak podrobná agregace požadavků má být, zadáním intervalů od 1 minuty do 1 měsíce.

Po nakonfigurování metriky se v grafu začnou objevovat anonymní požadavky. Následující obrázek ukazuje anonymní žádosti agregované za posledních 30 minut.

Screenshot showing aggregated anonymous requests against Blob storage

Můžete také nakonfigurovat pravidlo upozornění, které vás upozorní na určitý počet anonymních požadavků vůči vašemu účtu úložiště. Další informace najdete v tématu Vytváření, zobrazování a správa upozornění metrik pomocí služby Azure Monitor.

Analýza protokolů pro identifikaci kontejnerů, které přijímají anonymní požadavky

Protokoly služby Azure Storage zaznamenávají podrobnosti o požadavcích provedených vůči účtu úložiště, včetně způsobu autorizace žádosti. Můžete analyzovat protokoly a určit, které kontejnery přijímají anonymní požadavky.

Pokud chcete protokolovat požadavky na svůj účet Azure Storage, abyste mohli vyhodnotit anonymní požadavky, můžete použít protokolování služby Azure Storage ve službě Azure Monitor. Další informace najdete v tématu Monitorování služby Azure Storage.

Protokolování služby Azure Storage ve službě Azure Monitor podporuje analýzu dat protokolů pomocí dotazů protokolu. K dotazování protokolů můžete použít pracovní prostor služby Azure Log Analytics. Další informace o dotazech protokolu najdete v kurzu : Začínáme s dotazy Log Analytics.

Vytvoření nastavení diagnostiky na webu Azure Portal

Pokud chcete data Azure Storage protokolovat pomocí služby Azure Monitor a analyzovat je pomocí služby Azure Log Analytics, musíte nejprve vytvořit nastavení diagnostiky, které určuje, pro jaké typy požadavků a pro které služby úložiště chcete data protokolovat. Pokud chcete vytvořit nastavení diagnostiky na webu Azure Portal, postupujte takto:

  1. V rámci předplatného, které obsahuje váš účet Azure Storage, vytvořte nový pracovní prostor služby Log Analytics. Po nakonfigurování protokolování pro účet úložiště budou protokoly dostupné v pracovním prostoru služby Log Analytics. Další informace najdete v tématu Vytvoření pracovního prostoru služby Log Analytics na webu Azure Portal.

  2. Na webu Azure Portal přejděte na svůj účet úložiště.

  3. V části Monitorování vyberte Nastavení diagnostiky.

  4. Vyberte objekt blob k zaprotokolování požadavků provedených v úložišti objektů blob.

  5. Vyberte Přidat nastavení diagnostiky.

  6. Zadejte název nastavení diagnostiky.

  7. V části Podrobnosti o kategorii v oddílu protokolu vyberte, které typy požadavků se mají protokolovat. Všechny anonymní požadavky jsou požadavky na čtení, takže vyberte kategorii StorageRead a zachytávejte anonymní požadavky.

  8. V části Podrobnosti o cíli vyberte možnost Odeslat do služby Log Analytics. Vyberte své předplatné a pracovní prostor služby Log Analytics, který jste vytvořili dříve, jak je znázorněno na následujícím obrázku.

    Screenshot showing how to create a diagnostic setting for logging requests

Jakmile vytvoříte nastavení diagnostiky, požadavky na účet úložiště se následně zaprotokolují podle daného nastavení. Další informace najdete v tématu Vytvoření nastavení diagnostiky pro shromažďování protokolů prostředků a metrik v Azure.

Referenční informace o polích dostupných v protokolech služby Azure Storage ve službě Azure Monitor najdete v protokolech prostředků.

Dotazování protokolů pro anonymní požadavky

Protokoly Azure Storage ve službě Azure Monitor zahrnují typ autorizace, která se použila k vytvoření požadavku na účet úložiště. V dotazu protokolu vyfiltrujte vlastnost AuthenticationType a zobrazte anonymní požadavky.

Pokud chcete načíst protokoly za posledních sedm dnů pro anonymní požadavky na úložiště objektů blob, otevřete pracovní prostor služby Log Analytics. Dále vložte následující dotaz do nového dotazu protokolu a spusťte ho:

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

Můžete také nakonfigurovat pravidlo upozornění na základě tohoto dotazu, které vás upozorní na anonymní požadavky. Další informace najdete v tématu Vytvoření, zobrazení a správa upozornění protokolu pomocí služby Azure Monitor.

Odpovědi na anonymní žádosti

Když blob Storage obdrží anonymní požadavek, bude tento požadavek úspěšný, pokud jsou splněny všechny následující podmínky:

  • Pro účet úložiště je povolený anonymní přístup.
  • Cílový kontejner je nakonfigurovaný tak, aby umožňoval anonymní přístup.
  • Žádost je určená pro čtení.

Pokud některá z těchto podmínek není pravdivá, požadavek se nezdaří. Kód odpovědi na selhání závisí na tom, jestli byl anonymní požadavek proveden s verzí služby, která podporuje nosnou výzvu. Nosný úkol je podporovaný ve verzích služeb 2019–12-12 a novějších:

  • Pokud byl anonymní požadavek proveden s verzí služby, která podporuje nosnou výzvu, vrátí služba kód chyby 401 (Neautorizováno).
  • Pokud byl anonymní požadavek proveden s verzí služby, která nepodporuje nosnou výzvu a anonymní přístup je pro účet úložiště zakázán, služba vrátí kód chyby 409 (Konflikt).
  • Pokud byl anonymní požadavek proveden s verzí služby, která nepodporuje nosnou výzvu a anonymní přístup je povolený pro účet úložiště, vrátí služba kód chyby 404 (Nenalezeno).

Další informace o nosné výzvě naleznete v tématu Bearer challenge.

Náprava anonymního přístupu pro účet úložiště

Po vyhodnocení anonymních požadavků na kontejnery a objekty blob v účtu úložiště můžete provést akci k nápravě anonymního přístupu pro celý účet nastavením vlastnosti AllowBlobPublicAccess účtu na False.

Nastavení anonymního přístupu pro účet úložiště přepíše jednotlivá nastavení kontejnerů v daném účtu. Pokud zakážete anonymní přístup k účtu úložiště, nebudou všechny kontejnery nakonfigurované tak, aby povolovaly anonymní přístup, už nebudou přístupné anonymně. Pokud jste nepovolili anonymní přístup k účtu, nemusíte také zakázat anonymní přístup pro jednotlivé kontejnery.

Pokud váš scénář vyžaduje, aby určité kontejnery měly být dostupné pro anonymní přístup, měli byste tyto kontejnery a jejich objekty blob přesunout do samostatných účtů úložiště, které jsou vyhrazené pro anonymní přístup. Pak můžete zakázat anonymní přístup pro všechny ostatní účty úložiště.

Náprava anonymního přístupu vyžaduje poskytovatele prostředků Azure Storage verze 2019-04-01 nebo novější. Další informace najdete v tématu REST API poskytovatele prostředků služby Azure Storage.

Oprávnění pro zakázání anonymního přístupu

Pokud chcete nastavit vlastnost AllowBlobPublicAccess pro účet úložiště, musí mít uživatel oprávnění k vytváření a správě účtů úložiště. Role řízení přístupu na základě role Azure (Azure RBAC), které poskytují tato oprávnění, zahrnují akci Microsoft.Storage/storageAccounts/write . Mezi předdefinované role s touto akcí patří:

Přiřazení rolí musí být vymezena na úroveň účtu úložiště nebo vyšší, aby uživatel nepovolil anonymní přístup k účtu úložiště. Další informace o oboru role najdete v tématu Vysvětlení oboru pro Azure RBAC.

Dávejte pozor, abyste přiřazování těchto rolí omezili jenom na správce, kteří vyžadují možnost vytvořit účet úložiště nebo aktualizovat jeho vlastnosti. Pomocí principu nejnižšího oprávnění se ujistěte, že uživatelé mají nejmenší oprávnění, která potřebují k plnění svých úkolů. Další informace o správě přístupu pomocí Azure RBAC najdete v tématu Osvědčené postupy pro Azure RBAC.

Tyto role neposkytují přístup k datům v účtu úložiště prostřednictvím ID Microsoft Entra. Zahrnují však microsoft.Storage/storageAccounts/listkeys/action, která uděluje přístup k přístupovým klíčům účtu. S tímto oprávněním může uživatel používat přístupové klíče účtu pro přístup ke všem datům v účtu úložiště.

Samotná akce Microsoft.Storage/storageAccounts/listkeys/action uděluje přístup k datům prostřednictvím klíčů účtu, ale neuděluje uživateli možnost změnit vlastnost AllowBlobPublicAccess pro účet úložiště. Pro uživatele, kteří potřebují přístup k datům ve vašem účtu úložiště, ale neměli by mít možnost změnit konfiguraci účtu úložiště, zvažte přiřazení rolí, jako je Přispěvatel dat v objektech blob služby Storage, Čtenář dat služby Storage nebo Čtenář a Přístup k datům.

Poznámka:

Role klasického správce předplatného Service Správa istrator a Spolu Správa istrator zahrnují ekvivalent role vlastníka Azure Resource Manageru. Role Vlastník zahrnuje všechny akce, takže uživatel s jednou z těchto rolí pro správu může také vytvářet účty úložiště a spravovat konfiguraci účtu. Další informace najdete v tématu Role Azure, role Microsoft Entra a klasické role správce předplatného.

Nastavení vlastnosti AllowBlobPublicAccess účtu úložiště na False

Pokud chcete zakázat anonymní přístup k účtu úložiště, nastavte vlastnost AllowBlobPublicAccess účtu na False.

Důležité

Zakázání anonymního přístupu pro účet úložiště přepíše nastavení přístupu pro všechny kontejnery v daném účtu úložiště. Pokud je pro účet úložiště zakázaný anonymní přístup, všechny budoucí anonymní požadavky na tento účet selžou. Než toto nastavení změníte, nezapomeňte pochopit dopad na klientské aplikace, které můžou přistupovat k datům ve vašem účtu úložiště anonymně, a to pomocí kroků popsaných v tématu Zjištění anonymních požadavků z klientských aplikací.

Pokud chcete zakázat anonymní přístup k účtu úložiště na webu Azure Portal, postupujte takto:

  1. Na webu Azure Portal přejděte na svůj účet úložiště.

  2. V části Nastavení vyhledejte nastavení Konfigurace.

  3. Nastavte možnost Povolit anonymní přístup k objektu blob na Zakázáno.

    Screenshot showing how to disallow anonymous access for account

Poznámka:

Zakázání anonymního přístupu k účtu úložiště nemá vliv na žádné statické weby hostované v daném účtu úložiště. Kontejner $web je vždy veřejně přístupný.

Po aktualizaci nastavení anonymního přístupu pro účet úložiště může trvat až 30 sekund, než se změna plně rozšíří.

Ukázkový skript pro hromadnou nápravu

Následující ukázkový skript PowerShellu se spustí pro všechny účty úložiště Azure Resource Manageru v předplatném a nastaví nastavení AllowBlobPublicAccess pro tyto účty na 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"
}

Ověřte, že byl opraven anonymní přístup.

Pokud chcete ověřit, že jste opravili anonymní přístup k účtu úložiště, můžete otestovat, že anonymní přístup k objektu blob není povolený, že úprava nastavení přístupu kontejneru není povolená a že není možné vytvořit kontejner s povoleným anonymním přístupem.

Ověřte, že anonymní přístup k objektu blob není povolený.

Pokud chcete ověřit, že je anonymní přístup ke konkrétnímu objektu blob zakázaný, můžete se pokusit objekt blob stáhnout přes jeho adresu URL. Pokud stahování proběhne úspěšně, bude objekt blob stále veřejně dostupný. Pokud objekt blob není veřejně přístupný, protože pro účet úložiště je zakázaný anonymní přístup, zobrazí se chybová zpráva, že pro tento účet úložiště není povolený anonymní přístup.

Následující příklad ukazuje, jak použít PowerShell k pokusu o stažení objektu blob přes jeho adresu URL. Nezapomeňte nahradit zástupné hodnoty v závorkách vlastními hodnotami:

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

Ověřte, že úprava nastavení přístupu kontejneru není povolená.

Pokud chcete ověřit, že se nastavení přístupu ke kontejneru nedá změnit po zakázání anonymního přístupu pro účet úložiště, můžete se pokusit toto nastavení upravit. Změna nastavení přístupu kontejneru selže, pokud je pro účet úložiště zakázaný anonymní přístup.

Následující příklad ukazuje, jak se pomocí PowerShellu pokusit změnit nastavení přístupu kontejneru. Nezapomeňte nahradit zástupné hodnoty v závorkách vlastními hodnotami:

$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

Ověřte, že kontejner nejde vytvořit s povoleným anonymním přístupem.

Pokud je pro účet úložiště zakázaný anonymní přístup, nebudete moct vytvořit nový kontejner s povoleným anonymním přístupem. Pokud to chcete ověřit, můžete se pokusit vytvořit kontejner s povoleným anonymním přístupem.

Následující příklad ukazuje, jak použít PowerShell k pokusu o vytvoření kontejneru s povoleným anonymním přístupem. Nezapomeňte nahradit zástupné hodnoty v závorkách vlastními hodnotami:

$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

Kontrola nastavení anonymního přístupu pro více účtů

Pokud chcete zkontrolovat nastavení anonymního přístupu v rámci sady účtů úložiště s optimálním výkonem, můžete použít Azure Resource Graph Explorer na webu Azure Portal. Další informace o používání Průzkumníka služby Resource Graph najdete v rychlém startu: Spuštění prvního dotazu Resource Graphu pomocí Azure Resource Graph Exploreru.

Spuštění následujícího dotazu v Průzkumníku služby Resource Graph vrátí seznam účtů úložiště a zobrazí nastavení anonymního přístupu pro každý účet:

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

Následující obrázek ukazuje výsledky dotazu v rámci předplatného. U účtů úložiště, ve kterých je vlastnost AllowBlobPublicAccess explicitně nastavená, se ve výsledcích zobrazí jako true nebo false. Pokud vlastnost AllowBlobPublicAccess nebyla nastavena pro účet úložiště, zobrazí se ve výsledcích dotazu jako prázdná (nebo null).

Screenshot showing query results for anonymous access setting across storage accounts

Použití Azure Policy k auditování dodržování předpisů

Pokud máte velký počet účtů úložiště, můžete chtít provést audit, abyste měli jistotu, že jsou tyto účty nakonfigurované tak, aby se zabránilo anonymnímu přístupu. Pokud chcete auditovat sadu účtů úložiště pro dodržování předpisů, použijte Azure Policy. Azure Policy je služba, kterou můžete použít k vytváření, přiřazování a správě zásad, které se vztahují na prostředky Azure. Azure Policy pomáhá udržovat tyto prostředky v souladu s vašimi firemními standardy a smlouvami o úrovni služeb. Další informace najdete v tématu Přehled služby Azure Policy.

Vytvoření zásady s efektem auditování

Azure Policy podporuje účinky, které určují, co se stane, když se pravidlo zásad vyhodnotí vůči prostředku. Efekt auditování vytvoří upozornění, pokud prostředek není v souladu s předpisy, ale nezastaví požadavek. Další informace o efektech najdete v tématu Vysvětlení efektů Azure Policy.

Pokud chcete vytvořit zásadu s účinkem Audit pro nastavení anonymního přístupu pro účet úložiště pomocí webu Azure Portal, postupujte takto:

  1. Na webu Azure Portal přejděte do služby Azure Policy.

  2. V části Vytváření obsahu vyberte Definice.

  3. Výběrem možnosti Přidat definici zásady vytvořte novou definici zásady.

  4. U pole Umístění definice vyberte tlačítko Další a určete, kde se nachází prostředek zásad auditu.

  5. Zadejte název pro tuto zásadu. Volitelně můžete upřesnit popis a kategorii.

  6. V části Pravidlo zásad přidejte do oddílu policyRule následující definici zásady.

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. Zásady uložte.

Přiřazení zásad

Dále přiřaďte zásady k prostředku. Rozsah zásad odpovídá danému prostředku a všem prostředkům pod ním. Další informace o přiřazení zásad najdete v tématu Struktura přiřazení služby Azure Policy.

Pokud chcete zásady přiřadit pomocí webu Azure Portal, postupujte takto:

  1. Na webu Azure Portal přejděte do služby Azure Policy.
  2. V části Vytváření obsahu vyberte Zadání.
  3. Výběrem možnosti Přiřadit zásadu vytvořte nové přiřazení zásad.
  4. U pole Obor vyberte obor přiřazení zásady.
  5. V poli Definice zásady vyberte tlačítko Další a pak ze seznamu vyberte zásadu, kterou jste definovali v předchozí části.
  6. Zadejte název pro přiřazení zásad. Popis je volitelný.
  7. Vynucování zásad ponechte nastavené na Povoleno. Toto nastavení nemá žádný vliv na zásady auditu.
  8. Výběrem možnosti Zkontrolovat a vytvořit zadání

Zobrazení sestavy dodržování předpisů

Po přiřazení zásady můžete zobrazit sestavu dodržování předpisů. Sestava dodržování předpisů pro zásady auditu poskytuje informace o tom, které účty úložiště nejsou v souladu se zásadami. Další informace najdete v tématu Získání dat dodržování zásad.

Po vytvoření přiřazení zásady může trvat několik minut, než se sestava dodržování předpisů zpřístupní.

Pokud chcete zobrazit sestavu dodržování předpisů na webu Azure Portal, postupujte takto:

  1. Na webu Azure Portal přejděte do služby Azure Policy.

  2. Vyberte Dodržování předpisů.

  3. Vyfiltrujte výsledky pro název přiřazení zásady, které jste vytvořili v předchozím kroku. Sestava ukazuje, kolik prostředků není v souladu se zásadami.

  4. Můžete přejít k podrobnostem sestavy a získat další podrobnosti, včetně seznamu účtů úložiště, které nejsou v souladu s předpisy.

    Screenshot showing compliance report for audit policy for anonymous access

Použití Azure Policy k vynucení autorizovaného přístupu

Azure Policy podporuje zásady správného řízení v cloudu tím, že zajistí, aby prostředky Azure dodržovaly požadavky a standardy. Pokud chcete zajistit, aby účty úložiště ve vaší organizaci povolily pouze autorizované požadavky, můžete vytvořit zásadu, která brání vytvoření nového účtu úložiště s nastavením anonymního přístupu, které umožňuje anonymní žádosti. Tato zásada také zabrání všem změnám konfigurace existujícího účtu, pokud nastavení anonymního přístupu pro tento účet nevyhovuje zásadám.

Zásady vynucení používají účinek Odepřít, aby zabránily požadavku, který by vytvořil nebo upravil účet úložiště tak, aby umožňoval anonymní přístup. Další informace o efektech najdete v tématu Vysvětlení efektů Azure Policy.

Pokud chcete vytvořit zásadu s účinkem Odepřít pro nastavení anonymního přístupu, které umožňuje anonymní žádosti, postupujte podle stejných kroků popsaných v tématu Použití služby Azure Policy k auditování dodržování předpisů, ale v části Zásady v definici zásad zadejte následující kód JSON:

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

Když vytvoříte zásadu s efektem Odepřít a přiřadíte ji k oboru, uživatel nemůže vytvořit účet úložiště, který umožňuje anonymní přístup. Uživatel nemůže provádět žádné změny konfigurace existujícího účtu úložiště, který aktuálně umožňuje anonymní přístup. Při pokusu o to dojde k chybě. Aby bylo možné pokračovat vytvořením nebo konfigurací účtu, musí být nastavení anonymního přístupu pro účet úložiště nastaveno na false .

Následující obrázek ukazuje chybu, ke které dojde, když se pokusíte vytvořit účet úložiště, který umožňuje anonymní přístup, když zásada s účinkem Odepřít vyžaduje, aby byl anonymní přístup zakázán.

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

Další kroky