İ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 İçgörüleri, Azure Depolama ölçümlerinin ve günlüklerinin üzerinde yer alan bir panodur. Depolama İçgörüleri'ni kullanarak tüm hesaplarınızın işlem hacmini ve kullanılan kapasitesini inceleyebilirsiniz. Bu bilgiler, hangi hesapları devre dışı bırakabileceğinize karar vermenize yardımcı olabilir. Depolama İçgörülerini yapılandırmak için bkz . Azure İzleyici Depolama içgörüleriyle depolama hizmetinizi izleme.
İşlem hacmini analiz etme
Azure izleyicisindeki Depolama İçgörüleri 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.
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.
Ne tür istekler yapıldığını belirlemek için API adına göre işlemler grafiğinde detaya gitme.
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 İçgörüleri görünümünün Kapasite sekmesinde, Kullanılan hesap 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.
Bu kullanılan kapasiteyle ilişkili blobları incelemek için Depolama Gezgini 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 bilgilerini içeren 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 Storage 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.
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:
"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.
Veri düzlemi işlemlerini denetleme
Veri düzlemi işlemleri Depolama için Azure kaynak günlüklerinde yakalanır. Tanılama ayarlarını, yerel sorgu deneyimi için günlükleri Log Analytics çalışma alanına aktaracak şekilde 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.
İpucu
Ö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ı kullanımı dahil olmak üzere Azure Depolama'nın desteklediği 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.
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 belirteci imzasının 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 birinin imza bölümünü sha-256 karması olarak dönüştürmeniz ve sonra bu karmayı günlüklerde görüntülenen 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 imza kısmının kodunu çözer.
[uri]::UnescapeDataString("<SAS signature here>")
Kodu çözülen imzayı bu imzanın SHA-256'sına dönüştürmek için herhangi bir araç veya SDK kullanabilirsiniz. Örneğin, bir Linux sisteminde aşağıdaki komutu kullanabilirsiniz:
echo -n "<Decoded SAS signature>" | python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()), end='');" | sha256sum
Kodu çözülen imzayı dönüştürmenin bir diğer yolu da, Azure Veri Gezgini kullanırken kodu çözülen dizeyi sorgunun bir parçası olarak hash_sha256() işlevine geçirmektir.
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.
Günlükleri depolama hesabına aktarın. Daha fazla bilgi için bkz . Tanılama ayarı oluşturma.
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.
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.
- İzleme Azure Blob Depolama.
- Azure Blob Depolama izleme verileri başvurusu
- Öğretici: Azure Veri Gezgini ve Azure İzleyici'de Kusto sorgularını kullanma.
- Azure İzleyici'de günlük sorgularını kullanmaya başlayın.