Blob verilerine anonim okuma erişimini düzeltme (klasik dağıtımlar)

Azure Blob Depolama kapsayıcılara ve bloblara isteğe bağlı anonim okuma erişimini destekler. Ancak anonim erişim bir güvenlik riski sunabilir. En iyi güvenlik için anonim erişimi devre dışı bırakmanızı öneririz. Anonim erişime izin verme, istenmeyen anonim erişimin neden olduğu veri ihlallerini önlemeye yardımcı olur.

Varsayılan olarak blob verilerinize anonim erişim her zaman yasaktır. Ancak, klasik depolama hesabı için varsayılan yapılandırma, uygun izinlere sahip bir kullanıcının depolama hesabındaki kapsayıcılara ve bloblara anonim erişimi yapılandırmasına izin verir. Klasik depolama hesabına anonim erişimi önlemek için, hesaptaki her kapsayıcıyı anonim erişimi engelleyecek şekilde yapılandırmanız gerekir.

Depolama hesabınız klasik dağıtım modelini kullanıyorsa, mümkün olan en kısa sürede Azure Resource Manager dağıtım modeline geçmenizi öneririz. Hesabınızı geçirdikten sonra, hesap düzeyinde anonim erişime izin vermiyecek şekilde yapılandırabilirsiniz. Azure Resource Manager hesabı için anonim erişime izin verme hakkında bilgi için bkz . Blob verilerine anonim okuma erişimini düzeltme (Azure Resource Manager dağıtımları).

Klasik depolama hesaplarınızı şu anda geçiremiyorsanız, tüm kapsayıcıları özel olarak ayarlayarak bu hesaplara anonim erişimi düzeltmeniz gerekir. Bu makalede, klasik depolama hesabındaki kapsayıcılara erişimin nasıl düzeltildiği açıklanır.

Klasik dağıtım modelini kullanan Azure Depolama hesapları 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Daha fazla bilgi için bkz . Klasik Azure depolama hesapları 31 Ağustos 2024'te kullanımdan kaldırılacak.

Uyarı

Anonim erişim bir güvenlik riski sunar. Senaryonuz özellikle anonim erişim gerektirmediği sürece, tüm klasik depolama hesaplarınızın anonim erişimini düzeltmek için aşağıdaki bölümde açıklanan eylemleri gerçekleştirmenizi öneririz.

Kapsayıcılara anonim erişimi engelleme

Klasik depolama hesabına yönelik anonim erişimi düzeltmek için hesaptaki her kapsayıcı için anonim erişim düzeyini Özel olarak ayarlayın.

Azure portalında bir veya daha fazla kapsayıcının anonim erişimini düzeltmek için şu adımları izleyin:

  1. Azure portalında depolama hesabınıza genel bakış bölümüne gidin.

  2. Menü dikey penceresindeki Veri depolama'nın altında Blob kapsayıcıları'nı seçin.

  3. Anonim erişim düzeyini ayarlamak istediğiniz kapsayıcıları seçin.

  4. Erişim ayarlarını görüntülemek için Erişim düzeyini değiştir düğmesini kullanın.

  5. Anonim erişim düzeyi açılan listesinden Özel 'i (anonim erişim yok) seçin ve değişikliği seçili kapsayıcılara uygulamak için Tamam düğmesine tıklayın.

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

Bir kapsayıcı kümesi için anonim erişim ayarını denetleyin

Bir veya daha fazla depolama hesabındaki hangi kapsayıcıların anonim erişim için yapılandırıldığını denetlemek için kapsayıcıları listelemek ve anonim erişim ayarını denetlemek mümkündür. Bu yaklaşım, bir depolama hesabı çok fazla sayıda kapsayıcı içermediğinde veya az sayıda depolama hesabında ayarı denetlediğinizde pratik bir seçenektir. Ancak, çok sayıda kapsayıcı listelemeye çalışırsanız performans olumsuz etkilenebilir.

Aşağıdaki örnek, bir depolama hesabındaki tüm kapsayıcılar için anonim erişim ayarını almak için PowerShell'i kullanır. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

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

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

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

Toplu düzeltme için örnek betik

Aşağıdaki örnek PowerShell betiği bir abonelikteki tüm klasik depolama hesaplarında çalışır ve bu hesaplardaki kapsayıcılar için anonim erişim ayarını Özel olarak ayarlar.

Dikkat

Bu betiğin çok fazla sayıda kapsayıcısı olan depolama hesaplarında çalıştırılması önemli kaynaklar gerektirebilir ve uzun sürebilir. Çok fazla sayıda kapsayıcı içeren bir depolama hesabınız varsa anonim erişimi düzeltmek için farklı bir yaklaşım geliştirmek isteyebilirsiniz.

# 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"

Ayrıca bkz.