Blob verilerine anonim okuma erişimini düzeltme (Azure Resource Manager 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. Azure Resource Manager depolama hesabı için varsayılan yapılandırma, kullanıcıların bir depolama hesabındaki kapsayıcılara ve bloblara anonim erişim yapılandırmasına engel olur. Bu varsayılan yapılandırma, tek bir kapsayıcının erişim ayarından bağımsız olarak Azure Resource Manager depolama hesabına tüm anonim erişime izin vermemektedir.

Depolama hesabına anonim erişime izin verilmediğinde, Azure Depolama blob verilerine yönelik tüm anonim okuma isteklerini reddeder. Kullanıcılar daha sonra bu hesaptaki kapsayıcılar için anonim erişimi yapılandıramaz. Anonim erişim için yapılandırılmış olan kapsayıcılar artık anonim istekleri kabul etmeyecektir.

Uyarı

Bir kapsayıcı anonim erişim için yapılandırıldığında, herhangi bir istemci bu kapsayıcıdaki verileri okuyabilir. Anonim erişim olası bir güvenlik riski sunar, bu nedenle senaryonuz gerekli değilse depolama hesabı için izin vermenizi öneririz.

Azure Resource Manager ve klasik depolama hesapları için düzeltme

Bu makalede, Azure Resource Manager dağıtım modelini kullanan depolama hesapları için anonim erişimi sürekli yönetmek için DRAG (Algılama-Düzeltme-Denetim-İdaresi) çerçevesinin nasıl kullanılacağı açıklanmaktadır. Tüm genel amaçlı v2 depolama hesapları, premium blok blob depolama hesapları, premium dosya paylaşımı hesapları ve Blob Depolama hesapları Azure Resource Manager dağıtım modelini kullanır. Bazı eski genel amaçlı v1 hesapları ve premium sayfa blob hesapları klasik dağıtım modelini kullanabilir.

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

Şu anda klasik depolama hesaplarınızı geçiremiyorsanız, bu hesaplara anonim erişimi şimdi düzeltmeniz gerekir. Klasik depolama hesapları için anonim erişimi düzeltmeyi öğrenmek için bkz. Blob verilerine anonim okuma erişimini düzeltme (klasik dağıtımlar). Azure dağıtım modelleri hakkında daha fazla bilgi için bkz . Resource Manager ve klasik dağıtım.

Anonim okuma erişimi hakkında

Verilerinize anonim erişim varsayılan olarak her zaman yasaktır. Anonim erişimi etkileyen iki ayrı ayar vardır:

  1. Depolama hesabı için anonim erişim ayarı. Azure Resource Manager depolama hesabı, hesap için anonim erişime izin verme veya izin verme ayarı sunar. Microsoft, en iyi güvenlik için depolama hesaplarınız için anonim erişime izin vermemenizi önerir.

    Hesap düzeyinde anonim erişime izin verildiğinde, kullanıcı kapsayıcının anonim erişim ayarını açıkça yapılandırmak için ek adım atmadığı sürece blob verileri anonim okuma erişimi için kullanılamaz.

  2. Kapsayıcının anonim erişim ayarını yapılandırın. Varsayılan olarak, kapsayıcının anonim erişim ayarı devre dışı bırakılır; başka bir deyişle kapsayıcıya veya verilerine yapılan her istek için yetkilendirme gerekir. Uygun izinlere sahip bir kullanıcı, kapsayıcının anonim erişim ayarını yalnızca depolama hesabı için anonim erişime izin verildiğinde anonim erişimi etkinleştirmek üzere değiştirebilir.

Aşağıdaki tabloda, iki ayarın birlikte bir kapsayıcı için anonim erişimi nasıl etkilediği özetlemektedir.

Kapsayıcı için anonim erişim düzeyi Özel olarak ayarlanmış (varsayılan ayar) Kapsayıcı için anonim erişim düzeyi Kapsayıcı olarak ayarlanır Kapsayıcı için anonim erişim düzeyi Blob olarak ayarlandı
Depolama hesabı için anonim erişime izin verilmiyor Depolama hesabındaki herhangi bir kapsayıcıya anonim erişim yok. Depolama hesabındaki herhangi bir kapsayıcıya anonim erişim yok. Depolama hesabı ayarı kapsayıcı ayarını geçersiz kılar. Depolama hesabındaki herhangi bir kapsayıcıya anonim erişim yok. Depolama hesabı ayarı kapsayıcı ayarını geçersiz kılar.
Depolama hesabı için anonim erişime izin verilir Bu kapsayıcıya anonim erişim yok (varsayılan yapılandırma). Bu kapsayıcıya ve bloblarına anonim erişime izin verilir. Bu kapsayıcıdaki bloblara anonim erişime izin verilir, ancak kapsayıcının kendisine izin verilmez.

Depolama hesabı için anonim erişime izin verildiğinde ve belirli bir kapsayıcı için yapılandırıldığında, yetkilendirme üst bilgisi olmadan geçirilen kapsayıcıdaki bir blobu okuma isteği hizmet tarafından kabul edilir ve blob verileri yanıtta döndürülür.

İstemci uygulamalarından gelen anonim istekleri algılama

Depolama hesabı için anonim okuma erişimine izin vermediğinizde, şu anda anonim erişim için yapılandırılmış kapsayıcılara ve bloblara yönelik istekleri reddetme riskiyle karşı karşıyasınız. Bir depolama hesabı için anonim erişime izin verme, bu depolama hesabındaki tek tek kapsayıcıların erişim ayarlarını geçersiz kılar. Depolama hesabı için anonim erişime izin verilmediğinde, gelecekte bu hesaba yapılan anonim istekler başarısız olur.

Anonim erişime izin vermenin istemci uygulamalarını nasıl etkileyebileceğini anlamak için, bu hesap için günlüğe kaydetmeyi ve ölçümleri etkinleştirmenizi ve zaman aralığı içinde anonim isteklerin desenlerini analiz etmenizi öneririz. Depolama hesabına yönelik anonim isteklerin sayısını belirlemek için ölçümleri kullanın ve hangi kapsayıcılara anonim olarak erişildiğini belirlemek için günlükleri kullanın.

Ölçüm Gezgini ile anonim istekleri izleme

Depolama hesabına yönelik anonim istekleri izlemek için Azure portalda Azure Ölçüm Gezgini'ni kullanın. Ölçüm Gezgini hakkında daha fazla bilgi için bkz . Azure İzleyici ölçüm gezgini ile ölçümleri analiz etme.

Anonim istekleri izleyen bir ölçüm oluşturmak için şu adımları izleyin:

  1. Azure portalda depolama hesabınıza gidin. İzleme bölümünde Ölçümler'i seçin.

  2. Ölçüm ekle seçeneğini belirleyin. Ölçüm iletişim kutusunda aşağıdaki değerleri belirtin:

    1. Kapsam alanını depolama hesabının adı olarak bırakın.
    2. Ölçüm Ad Alanı'nı Blob olarak ayarlayın. Bu ölçüm yalnızca Blob depolamaya yönelik istekleri bildirir.
    3. Ölçüm alanını İşlemler olarak ayarlayın.
    4. Toplama alanını Toplam olarak ayarlayın.

    Yeni ölçüm, belirli bir zaman aralığı boyunca Blob depolamaya yönelik işlem sayısının toplamını görüntüler. Elde edilen ölçüm aşağıdaki görüntüde gösterildiği gibi görünür:

    Screenshot showing how to configure metric to sum blob transactions

  3. Ardından, ölçümde anonim istekler için bir filtre oluşturmak üzere Filtre ekle düğmesini seçin.

  4. Filtre iletişim kutusunda aşağıdaki değerleri belirtin:

    1. Özellik değerini Kimlik Doğrulaması olarak ayarlayın.
    2. İşleç alanını eşittir işaretine (=) ayarlayın.
    3. Değerler alanını açılan listeden seçerek veya yazarak Anonim olarak ayarlayın.
  5. Sağ üst köşede, ölçümü görüntülemek istediğiniz zaman aralığını seçin. Ayrıca, 1 dakikadan 1 aya kadar olan aralıkları belirterek isteklerin toplamının ne kadar ayrıntılı olması gerektiğini belirtebilirsiniz.

Ölçümü yapılandırdıktan sonra, anonim istekler grafikte görünmeye başlar. Aşağıdaki görüntüde, son 30 dakika içinde toplanan anonim istekler gösterilmektedir.

Screenshot showing aggregated anonymous requests against Blob storage

Depolama hesabınızda belirli sayıda anonim istek yapıldığında sizi bilgilendirmek için bir uyarı kuralı da yapılandırabilirsiniz. Daha fazla bilgi için bkz . Azure İzleyici kullanarak ölçüm uyarıları oluşturma, görüntüleme ve yönetme.

Anonim istekler alan kapsayıcıları tanımlamak için günlükleri analiz etme

Azure Depolama günlükleri, bir isteğin nasıl yetkilendirilildiği de dahil olmak üzere depolama hesabında yapılan isteklerle ilgili ayrıntıları yakalar. Hangi kapsayıcıların anonim istekler aldığını belirlemek için günlükleri analiz edebilirsiniz.

Anonim istekleri değerlendirmek üzere Azure Depolama hesabınızdaki istekleri günlüğe kaydetmek için Azure İzleyici'de Azure Depolama günlüğünü kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Depolama izleme.

Azure İzleyici'de Azure Depolama günlüğü, günlük verilerini analiz etmek için günlük sorgularının kullanılmasını destekler. Günlükleri sorgulamak için bir Azure Log Analytics çalışma alanı kullanabilirsiniz. Günlük sorguları hakkında daha fazla bilgi edinmek için bkz . Öğretici: Log Analytics sorgularını kullanmaya başlama.

Azure portalında tanılama ayarı oluşturma

Azure İzleyici ile Azure Depolama verilerini günlüğe kaydetmek ve Azure Log Analytics ile analiz etmek isterseniz, önce ne tür istekler ve hangi depolama hizmetleri için verileri günlüğe kaydetmek istediğinizi belirten bir tanılama ayarı oluşturmanız gerekir. Azure portalda bir tanılama ayarı oluşturmak için şu adımları izleyin:

  1. Azure Depolama hesabınızı içeren abonelikte yeni bir Log Analytics çalışma alanı oluşturun. Depolama hesabınız için günlüğe kaydetmeyi yapılandırdıktan sonra günlükler, Log Analytics çalışma alanında kullanılabilir. Daha fazla bilgi için Azure portalda Log Analytics çalışma alanı oluşturma bölümüne bakın.

  2. Azure portalda depolama hesabınıza gidin.

  3. İzleme bölümünde Tanılama ayarları'nı seçin.

  4. Blob depolama alanında yapılan istekleri günlüğe kaydetmek için Blob'u seçin.

  5. Tanılama ayarı ekle’yi seçin.

  6. Tanılama ayarı için bir ad belirtin.

  7. Kategori ayrıntıları'nın altındaki günlük bölümünde, günlüğe kaydedilecek istek türlerini seçin. Tüm anonim istekler okuma istekleridir, bu nedenle anonim istekleri yakalamak için StorageRead seçeneğini belirleyin.

  8. Hedef ayrıntıları altında Log Analytics’e Gönder seçeneğini belirleyin. Aşağıdaki görüntüde gösterildiği gibi aboneliğinizi ve daha önce oluşturduğunuz Log Analytics çalışma alanını seçin.

    Screenshot showing how to create a diagnostic setting for logging requests

Tanılama ayarını oluşturduktan sonra depolama hesabına yönelik istekler daha sonra bu ayara göre günlüğe kaydedilir. Daha fazla bilgi için bkz . Azure'da kaynak günlüklerini ve ölçümleri toplamak için tanılama ayarı oluşturma.

Azure İzleyici'deki Azure Depolama günlüklerinde bulunan alanlara başvuru için bkz. Kaynak günlükleri.

Anonim istekler için sorgu günlükleri

Azure İzleyici'deki Azure Depolama günlükleri, depolama hesabına istekte bulunmak için kullanılan yetkilendirme türünü içerir. Günlük sorgunuzda, anonim istekleri görüntülemek için AuthenticationType özelliğine filtreleyin.

Blob depolamaya yönelik anonim isteklerin son yedi günün günlüklerini almak için Log Analytics çalışma alanınızı açın. Ardından, aşağıdaki sorguyu yeni bir günlük sorgusuna yapıştırın ve çalıştırın:

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

Anonim istekler hakkında sizi bilgilendirmek için bu sorguyu temel alan bir uyarı kuralı da yapılandırabilirsiniz. Daha fazla bilgi için bkz . Azure İzleyici kullanarak günlük uyarıları oluşturma, görüntüleme ve yönetme.

Anonim isteklere yanıtlar

Blob Depolama anonim bir istek aldığında, aşağıdaki koşulların tümü doğruysa bu istek başarılı olur:

  • Depolama hesabı için anonim erişime izin verilir.
  • Hedeflenen kapsayıcı anonim erişime izin verecek şekilde yapılandırılmıştır.
  • İstek okuma erişimi içindir.

Bu koşullardan herhangi biri doğru değilse istek başarısız olur. Hataya bağlı yanıt kodu, anonim isteğin taşıyıcı sınamasını destekleyen bir hizmet sürümüyle yapılıp yapılmadığına bağlıdır. Taşıyıcı sınaması, 2019-12-12 ve daha yeni hizmet sürümleriyle desteklenir:

  • Anonim istek taşıyıcı sınamasını destekleyen bir hizmet sürümüyle yapıldıysa, hizmet 401 (Yetkisiz) hata kodunu döndürür.
  • Anonim istek taşıyıcı sınamasını desteklemeyen bir hizmet sürümüyle yapıldıysa ve depolama hesabı için anonim erişime izin verilmiyorsa, hizmet hata kodu 409 (Çakışma) döndürür.
  • Anonim istek taşıyıcı sınamasını desteklemeyen bir hizmet sürümüyle yapıldıysa ve depolama hesabı için anonim erişime izin veriliyorsa, hizmet 404 (Bulunamadı) hata kodunu döndürür.

Taşıyıcı sınaması hakkında daha fazla bilgi için bkz . Taşıyıcı sınaması.

Depolama hesabı için anonim erişimi düzeltme

Depolama hesabınızdaki kapsayıcılara ve bloblara yönelik anonim istekleri değerlendirdikten sonra, hesabın AllowBlobPublicAccess özelliğini False olarak ayarlayarak tüm hesabın anonim erişimini düzeltmek için eylem gerçekleştirebilirsiniz.

Depolama hesabı için anonim erişim ayarı, bu hesaptaki kapsayıcıların tek tek ayarlarını geçersiz kılar. Depolama hesabı için anonim erişime izin vermediğinizde, anonim erişime izin vermek üzere yapılandırılan kapsayıcılara artık anonim olarak erişilemez. Hesap için anonim erişime izin vermediyseniz, tek tek kapsayıcılar için anonim erişimi devre dışı bırakmanız da gerekmez.

Senaryonuz belirli kapsayıcıların anonim erişim için kullanılabilir olmasını gerektiriyorsa, bu kapsayıcıları ve bloblarını anonim erişim için ayrılmış ayrı depolama hesaplarına taşımanız gerekir. Daha sonra diğer depolama hesapları için anonim erişime izin verilmiyebilirsiniz.

Anonim erişimi düzeltmek için Azure Depolama kaynak sağlayıcısının 2019-04-01 veya sonraki bir sürümü gerekir. Daha fazla bilgi için bkz. Azure Depolama Kaynak Sağlayıcısı REST API'si.

Anonim erişime izin verme izinleri

Depolama hesabının AllowBlobPublicAccess özelliğini ayarlamak için, kullanıcının depolama hesapları oluşturma ve yönetme izinlerine sahip olması gerekir. Bu izinleri sağlayan Azure rol tabanlı erişim denetimi (Azure RBAC) rolleri Microsoft.Depolama/storageAccounts/write eylemi. Bu eyleme sahip yerleşik roller şunlardır:

Bir kullanıcının depolama hesabı için anonim erişime izin vermesine izin vermek için rol atamalarının kapsamının depolama hesabı düzeyine veya daha yüksek bir düzeye sahip olması gerekir. Rol kapsamı hakkında daha fazla bilgi için bkz . Azure RBAC kapsamını anlama.

Bu rollerin atamasını yalnızca depolama hesabı oluşturma veya özelliklerini güncelleştirme yeteneğine ihtiyaç duyan yönetici kullanıcılarla kısıtlamaya dikkat edin. Kullanıcıların görevlerini gerçekleştirmek için ihtiyaç duydukları en az izinlere sahip olduğundan emin olmak için en az ayrıcalık ilkesini kullanın. Azure RBAC ile erişimi yönetme hakkında daha fazla bilgi için bkz . Azure RBAC için en iyi yöntemler.

Bu roller, Microsoft Entra Id aracılığıyla bir depolama hesabındaki verilere erişim sağlamaz. Ancak Microsoft.Depolama Hesap erişim anahtarlarına erişim veren /storageAccounts/listkeys/action. Bu izinle, kullanıcı bir depolama hesabındaki tüm verilere erişmek için hesap erişim anahtarlarını kullanabilir.

Microsoft.Depolama/storageAccounts/listkeys/action, hesap anahtarları aracılığıyla veri erişimi verir, ancak kullanıcıya depolama hesabı için AllowBlobPublicAccess özelliğini değiştirme izni vermez. Depolama hesabınızdaki verilere erişmesi gereken ancak depolama hesabının yapılandırmasını değiştirme becerisine sahip olmaması gereken kullanıcılar için Depolama Blob Veri Katkıda Bulunanı, Depolama Blob Veri Okuyucusu veya Okuyucu ve Veri Erişimi gibi roller atamayı göz önünde bulundurun.

Dekont

Klasik abonelik yöneticisi rolleri Service Yönetici istrator ve Co-Yönetici istrator, Azure Resource Manager Sahip rolünün eşdeğerini içerir. Sahip rolü tüm eylemleri içerdiğinden, bu yönetim rollerinden birine sahip bir kullanıcı da depolama hesapları oluşturabilir ve hesap yapılandırmasını yönetebilir. Daha fazla bilgi için bkz . Azure rolleri, Microsoft Entra rolleri ve klasik abonelik yöneticisi rolleri.

Depolama hesabının AllowBlobPublicAccess özelliğini False olarak ayarlayın

Depolama hesabı için anonim erişime izin vermemek için hesabın AllowBlobPublicAccess özelliğini False olarak ayarlayın.

Önemli

Bir depolama hesabı için anonim erişime izin verme, bu depolama hesabındaki tüm kapsayıcılar için erişim ayarlarını geçersiz kılar. Depolama hesabı için anonim erişime izin verilmediğinde, gelecekte bu hesaba yapılan anonim istekler başarısız olur. Bu ayarı değiştirmeden önce, İstemci uygulamalarından gelen anonim istekleri algılama bölümünde açıklanan adımları izleyerek depolama hesabınızdaki verilere anonim olarak erişebilecek istemci uygulamaları üzerindeki etkisini anladığınızdan emin olun.

Azure portalında bir depolama hesabına anonim erişim izni vermek için şu adımları izleyin:

  1. Azure portalda depolama hesabınıza gidin.

  2. Ayarlar altında Yapılandırma ayarını bulun.

  3. Blob anonim erişimine izin ver seçeneğini Devre Dışı olarak ayarlayın.

    Screenshot showing how to disallow anonymous access for account

Dekont

Depolama hesabı için anonim erişime izin verilmemesi, bu depolama hesabında barındırılan hiçbir statik web sitesini etkilemez. $web kapsayıcısı her zaman genel olarak erişilebilir.

Depolama hesabı için anonim erişim ayarını güncelleştirdikten sonra, değişikliğin tamamen yayılması 30 saniye kadar sürebilir.

Toplu düzeltme için örnek betik

Aşağıdaki örnek PowerShell betiği bir abonelikteki tüm Azure Resource Manager depolama hesaplarında çalışır ve bu hesaplar için AllowBlobPublicAccess ayarını False olarak ayarlar.

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

Anonim erişimin düzeltildiğini doğrulayın

Depolama hesabı için anonim erişimi düzeltmiş olduğunuzu doğrulamak için bloba anonim erişime izin verilmediğini, kapsayıcının erişim ayarının değiştirilmesine izin verilmediğini ve anonim erişimin etkinleştirildiği bir kapsayıcı oluşturmanın mümkün olmadığını test edebilirsiniz.

Bloba anonim erişime izin verilmediğini doğrulayın

Belirli bir bloba anonim erişime izin verilmediğini doğrulamak için blobu URL'si aracılığıyla indirmeyi deneyin. İndirme başarılı olursa blob hala genel kullanıma açıktır. Depolama hesabı için anonim erişime izin verilmediğinden bloba genel olarak erişilemiyorsa, bu depolama hesabında anonim erişime izin verilmediğini belirten bir hata iletisi görürsünüz.

Aşağıdaki örnekte, URL'si aracılığıyla blob indirmeye çalışmak için PowerShell'in nasıl kullanılacağı gösterilmektedir. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

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

Kapsayıcının erişim ayarının değiştirilmesine izin verilmediğini doğrulayın

Depolama hesabı için anonim erişime izin verilmedikten sonra kapsayıcının erişim ayarının değiştirilemediğini doğrulamak için, ayarı değiştirmeyi denemeniz gerekir. Depolama hesabı için anonim erişime izin verilmiyorsa kapsayıcının erişim ayarının değiştirilmesi başarısız olur.

Aşağıdaki örnekte, bir kapsayıcının erişim ayarını değiştirmeye çalışmak için PowerShell'in nasıl kullanılacağı gösterilmektedir. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

$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

Anonim erişim etkinken kapsayıcı oluşturulamazsınız

Depolama hesabı için anonim erişime izin verilmiyorsa anonim erişimin etkinleştirildiği yeni bir kapsayıcı oluşturamazsınız. Doğrulamak için anonim erişimin etkinleştirildiği bir kapsayıcı oluşturmaya çalışabilirsiniz.

Aşağıdaki örnekte, anonim erişimin etkinleştirildiği bir kapsayıcı oluşturmaya çalışmak için PowerShell'in nasıl kullanılacağı gösterilmektedir. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

$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

Birden çok hesap için anonim erişim ayarını denetleyin

Bir depolama hesabı kümesindeki anonim erişim ayarını en iyi performansla denetlemek için Azure portalda Azure Kaynak Grafı Gezgini'ni kullanabilirsiniz. Kaynak Grafı Gezgini'ni kullanma hakkında daha fazla bilgi edinmek için bkz. Hızlı Başlangıç: Azure Kaynak Grafı Gezgini'ni kullanarak ilk Kaynak Grafı sorgunuzu çalıştırma.

Kaynak Grafı Gezgini'nde aşağıdaki sorguyu çalıştırmak, depolama hesaplarının listesini döndürür ve her hesap için anonim erişim ayarını görüntüler:

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

Aşağıdaki görüntüde abonelik genelindeki bir sorgunun sonuçları gösterilmektedir. AllowBlobPublicAccess özelliğinin açıkça ayarlandığı depolama hesapları için sonuçlarda true veya false olarak görünür. AllowBlobPublicAccess özelliği bir depolama hesabı için ayarlanmamışsa, sorgu sonuçlarında boş (veya null) olarak görünür.

Screenshot showing query results for anonymous access setting across storage accounts

Uyumluluk denetimi için Azure İlkesi kullanma

Çok sayıda depolama hesabınız varsa, bu hesapların anonim erişimi engelleyecek şekilde yapılandırıldığından emin olmak için bir denetim gerçekleştirmek isteyebilirsiniz. Bir depolama hesabı kümesini uyumluluk açısından denetlemek için Azure İlkesi kullanın. Azure İlkesi, Azure kaynaklarına kural uygulayan ilkeler oluşturmak, atamak ve yönetmek için kullanabileceğiniz bir hizmettir. Azure İlkesi bu kaynakları kurumsal standartlarınız ve hizmet düzeyi sözleşmelerinizle uyumlu tutmanıza yardımcı olur. Daha fazla bilgi için bkz. Azure İlkesi genel bakış.

Denetim efektiyle ilke oluşturma

Azure İlkesi, bir ilke kuralı bir kaynağa göre değerlendirildiğinde ne olacağını belirleyen etkileri destekler. Denetim etkisi, bir kaynak uyumlu olmadığında ancak isteği durdurmadığında bir uyarı oluşturur. Efektler hakkında daha fazla bilgi için bkz. Azure İlkesi efektleri anlama.

Azure portalıyla depolama hesabı için anonim erişim ayarı için Denetim etkisi olan bir ilke oluşturmak için şu adımları izleyin:

  1. Azure portalda Azure İlkesi hizmetine gidin.

  2. Yazma bölümünde Tanımlar'ı seçin.

  3. Yeni bir ilke tanımı oluşturmak için İlke tanımı ekle'yi seçin.

  4. Tanım konumu alanında Diğer düğmesini seçerek denetim ilkesi kaynağının nerede bulunduğunu belirtin.

  5. İlke için bir ad belirtin. İsteğe bağlı olarak bir açıklama ve kategori belirtebilirsiniz.

  6. İlke kuralı'nın altında policyRule bölümüne aşağıdaki ilke tanımını ekleyin.

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

İlkeyi atama

Ardından ilkeyi bir kaynağa atayın. İlkenin kapsamı bu kaynağa ve altındaki kaynaklara karşılık gelir. İlke ataması hakkında daha fazla bilgi için bkz. atama yapısı Azure İlkesi.

İlkeyi Azure portal ile atamak için şu adımları izleyin:

  1. Azure portalda Azure İlkesi hizmetine gidin.
  2. Yazma bölümünde Atamalar'ı seçin.
  3. Yeni bir ilke ataması oluşturmak için İlke ata'yı seçin.
  4. Kapsam alanı için ilke atamasının kapsamını seçin.
  5. İlke tanımı alanı için Diğer düğmesini ve ardından listeden önceki bölümde tanımladığınız ilkeyi seçin.
  6. İlke ataması için bir ad belirtin. Açıklama isteğe bağlıdır.
  7. İlke zorlamasınıEtkin olarak bırakın. Bu ayarın denetim ilkesi üzerinde hiçbir etkisi yoktur.
  8. Ödevi oluşturmak için Gözden geçir + oluştur'u seçin.

Uyumluluk raporunu görüntüleme

İlkeyi atadıktan sonra uyumluluk raporunu görüntüleyebilirsiniz. Denetim ilkesinin uyumluluk raporu, hangi depolama hesaplarının ilkeyle uyumlu olmadığını gösterir. Daha fazla bilgi için bkz . İlke uyumluluk verilerini alma.

İlke ataması oluşturulduktan sonra uyumluluk raporunun kullanılabilir duruma gelmesi birkaç dakika sürebilir.

Azure portalında uyumluluk raporunu görüntülemek için şu adımları izleyin:

  1. Azure portalda Azure İlkesi hizmetine gidin.

  2. Uyumluluk'a tıklayın.

  3. Önceki adımda oluşturduğunuz ilke atamasının adı için sonuçları filtreleyin. Rapor, ilkeyle uyumlu olmayan kaynak sayısını gösterir.

  4. Uyumlu olmayan depolama hesaplarının listesi de dahil olmak üzere ek ayrıntılar için raporda detaya gidebilirsiniz.

    Screenshot showing compliance report for audit policy for anonymous access

Yetkili erişimi zorlamak için Azure İlkesi kullanma

Azure İlkesi, Azure kaynaklarının gereksinimlere ve standartlara uygun olmasını sağlayarak bulut idaresini destekler. Kuruluşunuzdaki depolama hesaplarının yalnızca yetkili isteklere izin verdiğinden emin olmak için, anonim isteklere izin veren anonim erişim ayarıyla yeni bir depolama hesabı oluşturulmasını engelleyen bir ilke oluşturabilirsiniz. Bu ilke, söz konusu hesabın anonim erişim ayarı ilkeyle uyumlu değilse mevcut bir hesapta yapılan tüm yapılandırma değişikliklerini de engeller.

Zorlama ilkesi, anonim erişime izin verecek şekilde depolama hesabı oluşturacak veya değiştirebilecek bir isteği önlemek için Reddet efektini kullanır. Efektler hakkında daha fazla bilgi için bkz. Azure İlkesi efektleri anlama.

Anonim isteklere izin veren anonim erişim ayarında Reddetme etkisi olan bir ilke oluşturmak için Uyumluluk denetimi için Azure İlkesi kullanma bölümünde açıklanan adımları izleyin, ancak ilke tanımının policyRule bölümünde aşağıdaki JSON'u sağlayın:

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

İlkeyi Reddet efektiyle oluşturup bir kapsama atadıktan sonra, kullanıcı anonim erişime izin veren bir depolama hesabı oluşturamaz. Bir kullanıcı, şu anda anonim erişime izin veren mevcut bir depolama hesabında yapılandırma değişiklikleri yapamaz. Bunu yapmaya çalışmak bir hatayla sonuçlanır. Hesap oluşturma veya yapılandırma işlemine devam etmek için depolama hesabının anonim erişim ayarı false olarak ayarlanmalıdır.

Aşağıdaki görüntüde, Reddetme efektine sahip bir ilke anonim erişime izin verilmemesini gerektirdiğinde anonim erişime izin veren bir depolama hesabı oluşturmaya çalıştığınızda oluşan hata gösterilmektedir.

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

Sonraki adımlar