İzleme Azure Blob Depolama için en iyi yöntemler

Bu makalede yaygın depolama izleme senaryolarından oluşan bir koleksiyon bulunur ve bunları gerçekleştirmek için size en iyi uygulama yönergeleri sağlanır.

Kullanılmayan veya düşük kullanımlı depolama hesaplarını belirleme

Depolama Analizler, Azure Depolama ölçümlerini ve günlüklerini içeren bir panodur. tüm hesaplarınızın işlem hacmini ve kullanılan kapasitesini incelemek için Depolama Analizler kullanabilirsiniz. Bu bilgiler, hangi hesapları devre dışı bırakabileceğinize karar vermenize yardımcı olabilir. Depolama Analizler yapılandırmak için bkz. Azure İzleyici ile depolama hizmetinizi izleme Depolama içgörüler.

İşlem hacmini analiz etme

Azure izleyicisindeki Depolama Analizler görünümünde İşlemler sütununu kullanarak hesaplarınızı artan düzende sıralayın. Aşağıdaki görüntüde, belirtilen süre boyunca düşük işlem hacmine sahip bir hesap gösterilmektedir.

transaction volume in Storage Insights

Bu işlemler hakkında daha fazla bilgi edinmek için hesap bağlantısına tıklayın. Bu örnekte, çoğu istek Blob Depolama hizmetine yapılır.

transaction by service type

Ne tür istekler yapıldığını belirlemek için API adına göre işlemler grafiğinde detaya gitme.

Storage transaction APIs

Bu örnekte, tüm istekler hesap özelliği bilgilerine yönelik işlemleri veya istekleri listelemektedir. Okuma ve yazma işlemi yoktur. Bu, hesabın önemli bir şekilde kullanılmadığına inanmanıza neden olabilir.

Kullanılan kapasiteyi analiz etme

Azure izleyicisindeki Depolama Analizler görünümünün Kapasite sekmesinde, Hesap kullanılan kapasite sütununu kullanarak hesaplarınızı artan düzende sıralayın. Aşağıdaki görüntüde, diğer hesaplardan daha düşük kapasite hacmine sahip bir hesap gösterilmektedir.

Used storage capacity

Kullanılan bu kapasiteyle ilişkili blobları incelemek için Depolama Gezgini'ni kullanabilirsiniz. Çok sayıda blob için Blob Envanteri ilkesi kullanarak rapor oluşturmayı göz önünde bulundurun.

Kapsayıcı kullanımını izleme

Müşterinizin verilerini kapsayıcıya göre bölümlerseniz, her müşteri tarafından ne kadar kapasite kullanıldığını izleyebilirsiniz. Boyut bilgilerine sahip blobların envanterini almak için Azure Depolama blob envanterini kullanabilirsiniz. Daha sonra kapsayıcı düzeyinde boyutu ve sayıyı toplayabilirsiniz. Örnek için bkz. Azure Depolama envanteri kullanarak kapsayıcı başına blob sayısını ve toplam boyutunu hesaplama.

Günlükleri sorgulayarak trafiği kapsayıcı düzeyinde de değerlendirebilirsiniz. Log Analytic sorguları yazma hakkında daha fazla bilgi edinmek için bkz . Log Analytics. Depolama günlükleri şeması hakkında daha fazla bilgi edinmek için bkz. Azure Blob Depolama izleme verileri başvurusu.

Burada, okuma işlemlerinin sayısını ve her kapsayıcıda okunan bayt sayısını almak için bir sorgu bulabilirsiniz.

StorageBlobLogs
| where OperationName  == "GetBlob"
| extend ContainerName = split(parse_url(Uri).Path, "/")[1]
| summarize ReadSize = sum(ResponseBodySize), ReadCount = count() by tostring(ContainerName)

Aşağıdaki sorgu, yazma işlemleri hakkında bilgi almak için benzer bir sorgu kullanır.

StorageBlobLogs
| where OperationName == "PutBlob" or
  OperationName == "PutBlock" or
  OperationName == "PutBlockList" or
  OperationName == "AppendBlock" or
  OperationName == "SnapshotBlob" or
  OperationName == "CopyBlob" or
  OperationName == "SetBlobTier"
| extend ContainerName = split(parse_url(Uri).Path, "/")[1]
| summarize WriteSize = sum(RequestBodySize), WriteCount = count() by tostring(ContainerName)

Yukarıdaki sorgu birden çok işlemin adlarına başvurur çünkü birden fazla işlem türü yazma işlemi olarak sayılabilir. Hangi işlemlerin okuma ve yazma işlemleri olarak kabul edildiği hakkında daha fazla bilgi edinmek için bkz. Azure Blob Depolama fiyatlandırması veya Azure Data Lake Depolama fiyatlandırması.

Hesap etkinliğini denetleme

Çoğu durumda, depolama hesaplarınızın etkinliklerini güvenlik ve uyumluluk açısından denetlemeniz gerekir. Depolama hesaplarındaki işlemler iki kategoriye ayrılır: Denetim Düzlemi ve Veri Düzlemi.

Denetim düzlemi işlemi, depolama hesabı oluşturmak veya mevcut bir depolama hesabının özelliğini güncelleştirmek için yapılan herhangi bir Azure Resource Manager isteğidir. Daha fazla bilgi için bkz . Azure Resource Manager.

Veri düzlemi işlemi, depolama hizmeti uç noktasına yönelik bir istekten kaynaklanan bir depolama hesabındaki veriler üzerinde gerçekleştirilir. Örneğin, bir depolama hesabına blob yüklediğinizde veya bir depolama hesabından blob indirdiğinizde veri düzlemi işlemi yürütülür. Daha fazla bilgi için bkz. Azure Depolama API'si.

Bölümünde, denetim ve veri düzlemi işlemlerinin "ne zaman", "kim", "ne" ve "nasıl" bilgilerini nasıl tanımlayabileceğiniz gösterilmektedir.

Denetim düzlemi işlemleri

Resource Manager işlemleri Azure etkinlik günlüğünde yakalanır. Etkinlik günlüğünü görüntülemek için Azure portalında depolama hesabınızı açın ve etkinlik günlüğü'nü seçin.

Activity Log

Etkinliği açıklayan JSON'ı görüntülemek için herhangi bir günlük girdisini açın. Aşağıdaki JSON, bir denetim düzlemi işleminin "ne zaman", "ne" ve "nasıl" bilgilerini gösterir:

Activity Log JSON

"Who" bilgilerinin kullanılabilirliği, denetim düzlemi işlemini gerçekleştirmek için kullanılan kimlik doğrulama yöntemine bağlıdır. Yetkilendirme bir Microsoft Entra güvenlik sorumlusu tarafından gerçekleştirildiyse, bu güvenlik sorumlusunun nesne tanımlayıcısı da bu JSON çıkışında görünür (örneğin: "http://schemas.microsoft.com/identity/claims/objectidentifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"). E-posta adresi veya ad gibi kimlikle ilgili diğer bilgileri her zaman göremeyebilirsiniz çünkü nesne tanımlayıcısı her zaman güvenlik sorumlusunu benzersiz olarak tanımlamanın en iyi yoludur.

Nesne tanımlayıcısının değerini alıp Azure portalının Microsoft Entra Id sayfasında güvenlik sorumlusunu arayarak bu güvenlik sorumlusunun kolay adını bulabilirsiniz. Aşağıdaki ekran görüntüsünde Microsoft Entra Id içindeki bir arama sonucu gösterilmektedir.

Search Microsoft Entra ID

Veri düzlemi işlemlerini denetleme

Veri düzlemi işlemleri, Depolama için Azure kaynak günlüklerinde yakalanır. Yerel sorgu deneyimi için günlükleri Log Analytics çalışma alanına aktarmak için Tanılama ayarını yapılandırabilirsiniz.

Günlük girdileri listesinde "when", "who", "what" ve "how" bilgilerini alan bir Log Analytics sorgusu aşağıdadır.

StorageBlobLogs
| where TimeGenerated > ago(3d)
| project TimeGenerated, AuthenticationType, RequesterObjectId, OperationName, Uri

Denetiminizin "ne zaman" bölümünde, günlük girişinin TimeGenerated ne zaman kaydedildiğinde alanı gösterilir.

Denetiminizin "ne" bölümü için Uri , alanda öğenin değiştirildiği veya okunduğu gösterilir.

Denetiminizin "nasıl" bölümünde, OperationName hangi işlemin yürütüldü olduğu gösterilir.

Bahşiş

Örneğin, bir blob veya kapsayıcının yanlışlıkla silindiğinden şüpheleniyorsanız, yalnızca sil blobu veya Kapsayıcıyı Sil olarak ayarlandığı OperationName günlük girdilerini döndüren bir where yan tümce ekleyin. Denetiminizin "kim" bölümünde, AuthenticationType istekte bulunmak için kullanılan kimlik doğrulama türünü gösterir. Bu alan hesap anahtarı, SAS belirteci veya Microsoft Entra kimlik doğrulaması da dahil olmak üzere Azure Depolama tarafından desteklenen kimlik doğrulama türlerinden herhangi birini gösterebilir.

İstek Microsoft Entra Kimliği kullanılarak yetkilendirilmişse, "kim" öğesini tanımlamak için alanını kullanabilirsiniz RequestObjectId . Paylaşılan Anahtar ve SAS kimlik doğrulaması, tek tek kimlikleri denetlemek için hiçbir araç sağlamaz. Bu gibi durumlarda ve userAgentHeader alanları işlemin callerIPAddress kaynağını belirlemenize yardımcı olabilir. Bir işlemi yetkilendirmek için SAS belirteci kullanıldıysa, bu belirteci tanımlayabilirsiniz ve sonunda belirteçleri belirteç alıcılarına eşlediyseniz, işlemi hangi kullanıcının, kuruluşun veya uygulamanın gerçekleştirdiğini belirleyebilirsiniz. Bkz . İsteği yetkilendirmek için kullanılan SAS belirtecini tanımlama.

bir isteği yetkilendirmek için kullanılan güvenlik sorumlusunu tanımlama

Bir isteğin kimliği Microsoft Entra Kimliği kullanılarak doğrulandıysa, RequesterObjectId alan güvenlik sorumlusunu tanımlamak için en güvenilir yolu sağlar. Alanın değerini RequesterObjectId alıp Azure portalının Microsoft Entra Id sayfasında güvenlik sorumlusunu arayarak bu güvenlik sorumlusunun kolay adını bulabilirsiniz. Aşağıdaki ekran görüntüsünde Microsoft Entra Id içindeki bir arama sonucu gösterilmektedir.

Search Microsoft Entra ID

Bazı durumlarda, günlüklerde bir kullanıcı asıl adı veya UPN görünebilir. Örneğin, güvenlik sorumlusu bir Microsoft Entra kullanıcısıysa, UPN büyük olasılıkla görünür. Kullanıcı tarafından atanan yönetilen kimlikler gibi diğer güvenlik sorumlusu türleri için veya Microsoft Entra kiracısı kimlik doğrulaması arasında gibi bazı senaryolarda UPN günlüklerde görünmez.

Bu sorgu, OAuth güvenlik sorumluları tarafından gerçekleştirilen tüm okuma işlemlerini gösterir.

StorageBlobLogs
| where TimeGenerated > ago(3d)
  and OperationName == "GetBlob"
  and AuthenticationType == "OAuth"
| project TimeGenerated, AuthenticationType, RequesterObjectId, OperationName, Uri

Paylaşılan Anahtar ve SAS kimlik doğrulaması, tek tek kimlikleri denetlemek için hiçbir araç sağlamaz. Bu nedenle, kimlik temelinde denetim yeteneğinizi geliştirmek istiyorsanız, Microsoft Entra Id'ye geçmenizi ve paylaşılan anahtar ile SAS kimlik doğrulamasını engellemenizi öneririz. Paylaşılan Anahtar ve SAS kimlik doğrulamasını önlemeyi öğrenmek için bkz. Azure Depolama hesabı için Paylaşılan Anahtar yetkilendirmesini engelleme. Microsoft Entra Id kullanmaya başlamak için bkz . Microsoft Entra Id kullanarak bloblara erişimi yetkilendirme.

İsteği yetkilendirmek için kullanılan SAS belirtecini tanımlama

SAS belirteci kullanarak yetkilendirilmiş işlemleri sorgulayabilirsiniz. Örneğin, bu sorgu SAS belirteci kullanılarak yetkilendirilmiş tüm yazma işlemlerini döndürür.

StorageBlobLogs
| where TimeGenerated > ago(3d)
  and OperationName == "PutBlob"
  and AuthenticationType == "SAS"
| project TimeGenerated, AuthenticationType, AuthenticationHash, OperationName, Uri

Güvenlik nedeniyle SAS belirteçleri günlüklerde görünmez. Ancak SAS belirtecinin SHA-256 karması bu sorgu tarafından döndürülen alanda görünür AuthenticationHash .

Birkaç SAS belirteci dağıttıysanız ve hangi SAS belirteçlerinin kullanıldığını öğrenmek istiyorsanız, SAS belirteçlerinizin her birini sha-256 karmasına dönüştürmeniz ve ardından bu karmayı günlüklerde görünen karma değerle karşılaştırmanız gerekir.

İlk olarak her SAS belirteci dizesinin kodunu çöz. Aşağıdaki örnek, PowerShell kullanarak sas belirteci dizesinin kodunu çözer.

[uri]::UnescapeDataString("<SAS token goes here>")

Ardından bu dizeyi Get-FileHash PowerShell cmdlet'ine geçirebilirsiniz. Örnek için bkz . Örnek 4: Dize karması hesaplama.

Alternatif olarak, Azure Veri Gezgini kullanırken kodu çözülen dizeyi sorgunun bir parçası olarak hash_sha256() işlevine geçirebilirsiniz.

SAS belirteçleri kimlik bilgileri içermez. Kullanıcıların veya kuruluşların etkinliklerini izlemenin bir yolu, kullanıcıların veya kuruluşların çeşitli SAS belirteci karmalarına eşlemesini tutmaktır.

Seyrek sorgular için maliyeti iyileştirme

Zengin yerel sorgu özellikleri için günlükleri Log Analytics'e aktarabilirsiniz. Depolama hesabınızda çok büyük işlemler olduğunda Log Analytics ile günlükleri kullanmanın maliyeti yüksek olabilir. Daha fazla bilgi için bkz . Azure Log Analytics Fiyatlandırması. Günlükleri yalnızca ara sıra sorgulamayı planlıyorsanız (örneğin, uyumluluk denetimi için sorgu günlükleri), günlükleri depolama hesabına aktarıp günlük verilerinin üzerinde sunucusuz sorgu çözümü (örneğin, Azure Synapse) kullanarak toplam maliyeti azaltmayı düşünebilirsiniz.

Azure Synapse ile, gerektiğinde günlük verilerini sorgulamak için sunucusuz SQL havuzu oluşturabilirsiniz. Bu, maliyetlerden önemli ölçüde tasarruf sağlayabilir.

  1. Günlükleri depolama hesabına aktarın. Daha fazla bilgi için bkz . Tanılama ayarı oluşturma.

  2. Synapse çalışma alanı oluşturma ve yapılandırma. Daha fazla bilgi için bkz . Hızlı Başlangıç: Synapse çalışma alanı oluşturma.

  3. Sorgu günlükleri. Daha fazla bilgi için bkz . Azure Synapse Analytics'te sunucusuz SQL havuzunu kullanarak JSON dosyalarını sorgulama.

    Bir örnek aşağıda verilmiştir:

     select
         JSON_VALUE(doc, '$.time') AS time,
         JSON_VALUE(doc, '$.properties.accountName') AS accountName,
         JSON_VALUE(doc, '$.identity.type') AS identityType,
         JSON_VALUE(doc, '$.identity.requester.objectId') AS requesterObjectId,
         JSON_VALUE(doc, '$.operationName') AS operationName,
         JSON_VALUE(doc, '$.callerIpAddress') AS callerIpAddress,
         JSON_VALUE(doc, '$.uri') AS uri
         doc
     from openrowset(
             bulk 'https://demo2uswest4log.blob.core.windows.net/insights-logs-storageread/resourceId=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/mytestrp/providers/Microsoft.Storage/storageAccounts/demo2uswest/blobServices/default/y=2021/m=03/d=19/h=*/m=*/PT1H.json',
             format = 'csv', fieldterminator ='0x0b', fieldquote = '0x0b'
         ) with (doc nvarchar(max)) as rows
     order by JSON_VALUE(doc, '$.time') desc
    
    

Ayrıca bkz.