Memulihkan akses baca anonim ke data blob (penyebaran klasik)

Azure Blob Storage mendukung akses baca anonim opsional ke kontainer dan blob. Namun, akses anonim dapat menimbulkan risiko keamanan. Kami menyarankan agar Anda menonaktifkan akses anonim untuk keamanan yang optimal. Melarang akses anonim membantu mencegah pelanggaran data yang disebabkan oleh akses anonim yang tidak diinginkan.

Secara default, akses anonim ke data blob Anda selalu dilarang. Namun, konfigurasi default untuk akun penyimpanan klasik mengizinkan pengguna dengan izin yang sesuai untuk mengonfigurasi akses anonim ke kontainer dan blob di akun penyimpanan. Untuk mencegah akses anonim ke akun penyimpanan klasik, Anda harus mengonfigurasi setiap kontainer di akun untuk memblokir akses anonim.

Jika akun penyimpanan Anda menggunakan model penyebaran klasik, kami sarankan Anda bermigrasi ke model penyebaran Azure Resource Manager sesegera mungkin. Setelah memigrasikan akun, Anda dapat mengonfigurasinya untuk melarang akses anonim di tingkat akun. Untuk informasi tentang cara melarang akses anonim untuk akun Azure Resource Manager, lihat Memulihkan akses baca anonim ke data blob (penyebaran Azure Resource Manager).

Jika Anda tidak dapat memigrasikan akun penyimpanan klasik Anda saat ini, maka Anda harus memulihkan akses anonim ke akun tersebut sekarang dengan mengatur semua kontainer menjadi privat. Artikel ini menjelaskan cara memulihkan akses ke kontainer di akun penyimpanan klasik.

Akun Azure Storage yang menggunakan model penyebaran klasik akan dihentikan pada 31 Agustus 2024. Untuk informasi selengkapnya, lihat Akun penyimpanan klasik Azure akan dihentikan pada 31 Agustus 2024.

Peringatan

Akses anonim memberikan risiko keamanan. Sebaiknya Anda mengambil tindakan yang dijelaskan di bagian berikut untuk memulihkan akses anonim untuk semua akun penyimpanan klasik Anda, kecuali skenario Anda secara khusus memerlukan akses anonim.

Memblokir akses anonim ke kontainer

Untuk memulihkan akses anonim untuk akun penyimpanan klasik, atur tingkat akses anonim untuk setiap kontainer di akun ke Privat.

Untuk memulihkan akses anonim untuk satu atau beberapa kontainer di portal Azure, ikuti langkah-langkah berikut:

  1. Navigasi ke ringkasan akun penyimpanan Anda di portal Microsoft Azure.

  2. Di bawah penyimpanan Data pada bilah menu, pilih kontainer Blob.

  3. Pilih kontainer yang ingin Anda atur tingkat akses anonimnya.

  4. Gunakan tombol Ubah tingkat akses untuk menampilkan pengaturan akses.

  5. Pilih Privat (tanpa akses anonim) dari menu dropdown Tingkat akses anonim dan klik tombol OK untuk menerapkan perubahan ke kontainer yang dipilih.

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

Periksa pengaturan akses anonim untuk sekumpulan kontainer

Dimungkinkan untuk memeriksa kontainer mana dalam satu atau beberapa akun penyimpanan yang dikonfigurasi untuk akses anonim dengan mencantumkan kontainer dan memeriksa pengaturan akses anonim. Pendekatan ini adalah opsi praktis saat akun penyimpanan tidak berisi kontainer dalam jumlah besar atau saat Anda memeriksa pengaturan di sejumlah kecil akun penyimpanan. Namun, performa dapat menurun jika Anda mencoba menghitung kontainer dalam jumlah besar.

Contoh berikut menggunakan PowerShell untuk mendapatkan pengaturan akses anonim untuk semua kontainer di akun penyimpanan. Ingatlah untuk mengganti nilai tempat penampung dalam tanda kurung dengan nilai Anda sendiri:

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

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

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

Contoh skrip untuk remediasi massal

Contoh skrip PowerShell berikut berjalan terhadap semua akun penyimpanan klasik dalam langganan dan mengatur pengaturan akses anonim untuk kontainer di akun tersebut ke Privat.

Perhatian

Menjalankan skrip ini terhadap akun penyimpanan dengan sejumlah besar kontainer mungkin memerlukan sumber daya yang signifikan dan memakan waktu lama. Jika Anda memiliki akun penyimpanan dengan sejumlah besar kontainer, Anda mungkin ingin merancang pendekatan yang berbeda untuk memulihkan akses anonim.

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

Baca juga