Blobadatokhoz való névtelen olvasási hozzáférés szervizelése (klasszikus üzemelő példányok)

Az Azure Blob Storage támogatja a tárolókhoz és blobokhoz való opcionális névtelen olvasási hozzáférést. A névtelen hozzáférés azonban biztonsági kockázatot jelenthet. Javasoljuk, hogy az optimális biztonság érdekében tiltsa le a névtelen hozzáférést. A névtelen hozzáférés letiltása segít megelőzni a nem kívánt névtelen hozzáférés által okozott adatsértéseket.

Alapértelmezés szerint a blobadatokhoz való névtelen hozzáférés mindig tilos. A klasszikus tárfiókok alapértelmezett konfigurációja azonban lehetővé teszi, hogy a megfelelő engedélyekkel rendelkező felhasználók névtelen hozzáférést konfiguráljanak egy tárfiók tárolóihoz és blobjaihoz. A klasszikus tárfiókokhoz való névtelen hozzáférés megakadályozásához konfigurálnia kell a fiókban lévő összes tárolót a névtelen hozzáférés letiltásához.

Ha a tárfiókja a klasszikus üzemi modellt használja, javasoljuk, hogy mihamarabb migráljon az Azure Resource Manager-alapú üzemi modellbe. A fiók áttelepítése után konfigurálhatja úgy, hogy a fiók szintjén tiltsa le a névtelen hozzáférést. Az Azure Resource Manager-fiókok névtelen hozzáférésének letiltásáról további információt a blobadatok névtelen olvasási hozzáférésének szervizelése (Azure Resource Manager-környezetek) című témakörben talál.

Ha jelenleg nem tudja migrálni a klasszikus tárfiókokat, akkor az összes tároló privátra állításával orvosolnia kell a fiókok névtelen elérését. Ez a cikk azt ismerteti, hogyan lehet kijavítani a tárolókhoz való hozzáférést egy klasszikus tárfiókban.

A klasszikus üzemi modellt használó Azure Storage-fiókok 2024. augusztus 31-én megszűnnek. További információ: A klasszikus Azure-tárfiókok 2024. augusztus 31-én megszűnnek.

Figyelmeztetés:

A névtelen hozzáférés biztonsági kockázatot jelent. Javasoljuk, hogy az alábbi szakaszban leírt műveleteket elvégezve elhárítsa az összes klasszikus tárfiók névtelen hozzáférését, kivéve, ha a forgatókönyv kifejezetten névtelen hozzáférést igényel.

Tárolókhoz való névtelen hozzáférés letiltása

A klasszikus tárfiókok névtelen hozzáférésének szervizeléséhez állítsa a fiókban lévő tárolók névtelen hozzáférési szintjét privátra.

Ha névtelen hozzáférést szeretne biztosítani egy vagy több tárolóhoz az Azure Portalon, kövesse az alábbi lépéseket:

  1. Nyissa meg a tárfiók áttekintését az Azure Portalon.

  2. A menüpanel Adattárolás területén válassza a Blob-tárolók lehetőséget.

  3. Válassza ki azokat a tárolókat, amelyekhez meg szeretné adni a névtelen hozzáférési szintet.

  4. A hozzáférési beállítások megjelenítéséhez használja a Hozzáférési szint módosítása gombot.

  5. A Névtelen hozzáférési szint legördülő menüben válassza a Privát (névtelen hozzáférés nélküli) lehetőséget, majd az OK gombra kattintva alkalmazza a módosítást a kijelölt tárolókra.

    Screenshot showing how to set anonymous access level in the portal.

Tárolók névtelen hozzáférési beállításának ellenőrzése

A tárolók listázásával és a névtelen hozzáférési beállítás ellenőrzésével ellenőrizhető, hogy egy vagy több tárfiók mely tárolói vannak konfigurálva névtelen hozzáférésre. Ez a megközelítés gyakorlati megoldás, ha egy tárfiók nem tartalmaz nagy számú tárolót, vagy ha kis számú tárfiókban ellenőrzi a beállítást. A teljesítmény azonban szenvedhet, ha nagy számú tárolót próbál számba adni.

Az alábbi példa a PowerShell használatával lekéri a tárfiók összes tárolójának névtelen hozzáférési beállítását. Ne felejtse el lecserélni a zárójelek helyőrző értékeit a saját értékeire:

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

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

Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Mintaszkript tömeges szervizeléshez

Az alábbi PowerShell-példaszkript az előfizetésben lévő összes klasszikus tárfiókon fut, és az ezekben a fiókokban lévő tárolók névtelen hozzáférési beállítását privátra állítja.

Figyelmeztetés

A szkript nagyon sok tárolóval rendelkező tárfiókon való futtatása jelentős erőforrásokat igényelhet, és hosszú időt vehet igénybe. Ha nagyon sok tárolóval rendelkező tárfiókja van, érdemes lehet egy másik módszert kidolgozni a névtelen hozzáférés szervizelésére.

# This script runs against all classic storage accounts in a single subscription
# and sets containers to private.

## IMPORTANT ##
# Running this script requires a connected account through the previous version 
# of Azure PowerShell. Use the following command to install:
# Install-Module Azure -scope CurrentUser -force
#
# Once installed, you will need to connect with:
# Add-AzureAccount
#
# This command may fail if there are modules installed that conflict with it.
# One known conflicting module is AzureRm.Accounts
# You will need to remove conflicting modules using the following:
# Remove-Module -name <name>
#
# The Azure PowerShell module assumes a current subscription when enumerating
# storage accounts.  You can set the current subscription with:
# Select-AzureSubscription -subscriptionId <subscriptionId>
#
# Get-AzureSubscription lists all subscriptions available to the Azure
# module. Not all subscriptions listed under your name in the portal may 
# appear here. If a subscription does not appear, you may need to use 
# the portal to remediate public access for those accounts.
# After you have selected your subscription, verify that it is current
# by running:
# Get-AzureSubscription -current
# 
# After the current subscription runs, you can run this script, change
# to another subscription after it completes, and then run again as necessary.
## END IMPORTANT##

# Standard operation will enumerate all accounts and check for containers with public 
# access, then allow the user to decide whether or not to disable the setting.  

# Run with BypassConfirmation=$true if you wish to remove permissions from all containers
# without individual confirmation

# Run with BypassArmUpgrade=$true if you wish to upgrade your storage account to use the 
# Azure Resource Manager deployment model. All accounts must be upgraded by 31 August 2024.

param(
    [boolean]$BypassConfirmation=$false,
    [boolean]$BypassArmUpgrade=$false
)

#Do not change this
$convertAccounts = $false

foreach($classicAccount in Get-AzureStorageAccount)
{
    $enumerate = $false

    if(!$BypassArmUpgrade)
    {
        write-host "Classic Storage Account" $classicAccount.storageAccountname "found"
        $confirmation = read-host "Convert to ARM? [y/n]:"
    }
    if(($confirmation -eq 'y') -and (!$BypassArmUpgrade))
    {
        write-host "Conversion selected"
        $convertAccounts = $true
    }
    else
    {
        write-host $classicAccount.StorageAccountName "conversion not selected.  Searching for public containers..."
        $enumerate = $true
    }

    if($enumerate)
    {
        foreach($container in get-azurestoragecontainer -context (get-azurestorageaccount -storageaccountname $classicAccount.StorageAccountName).context)
        {
            if($container.PublicAccess -eq 'Off')
            {
            } 
            else 
            {
                if(!$BypassConfirmation)
                {
                    $selection = read-host $container.Name $container.PublicAccess "access found, Make private?[y/n]:"
                }
                if(($selection -eq 'y') -or ($BypassConfirmation))
                {
                    write-host "Removing permissions from" $container.name "container on storage account" $classicaccount.StorageAccountName
                    try
                    {
                        Set-AzureStorageContainerAcl -context $classicAccount.context -name $container.name -Permission Off
                        write-host "Success!"
                    }
                    catch
                    {
                        $_
                    }
                }
                else
                {
                    write-host "Skipping..."
                }
            }
        }
    }
}
if($convertAccounts)
{
    write-host "Converting accounts to ARM is the preferred method, however there are some caveats."
    write-host "The preferred method would be to use the portal to perform the conversions and then "
    write-host "run the ARM script against them.  For more information on converting a classic account"
    write-host "to an ARM account, please see:"
    write-host "https://learn.microsoft.com/en-us/azure/virtual-machines/migration-classic-resource-manager-overview"
}
write-host "Script complete"

Kapcsolódó információk