Bagikan melalui


Praktik terbaik untuk memantau Azure Blob Storage

Artikel ini menampilkan kumpulan skenario pemantauan penyimpanan umum, dan memberi Anda panduan praktik terbaik untuk menyelesaikannya.

Identifikasi akun penyimpanan yang tidak atau jarang digunakan

Storage Insights adalah dasbor yang terintegrasi dengan metrik dan log pada Azure Storage. Anda dapat menggunakan Storage Insights untuk memeriksa volume transaksi dan kapasitas yang digunakan dari semua akun Anda. Informasi tersebut dapat membantu Anda memutuskan akun mana yang mungkin ingin Anda pensiunkan. Untuk mengonfigurasi Storage Insights, lihat Memantau layanan penyimpanan Anda dengan wawasan Azure Monitor Storage.

Menganalisis volume transaksi

Dari tampilan Storage Insights di Azure monitor, urutkan akun Anda dalam urutan naik dengan menggunakan kolom Transaksi . Gambar berikut menunjukkan akun dengan volume transaksi rendah selama periode yang ditentukan.

volume transaksi dalam Storage Insights

Klik tautan akun untuk mempelajari selengkapnya tentang transaksi ini. Dalam contoh ini, sebagian besar permintaan dibuat ke layanan Blob Storage.

transaksi berdasarkan jenis layanan

Untuk menentukan jenis permintaan apa yang sedang dibuat, telusuri bagan Transaksi menurut nama API .

API transaksi penyimpanan

Dalam contoh ini, semua permintaan mencantumkan operasi atau permintaan untuk informasi properti akun. Tidak ada transaksi baca dan tulis. Ini dapat menyebabkan Anda percaya bahwa akun tidak digunakan dengan cara yang signifikan.

Menganalisis kapasitas yang digunakan

Dari tab Kapasitastampilan Storage Insights di Azure monitor, urutkan akun Anda dalam urutan naik dengan menggunakan kolom Kapasitas yang digunakan Akun . Gambar berikut menunjukkan akun dengan volume kapasitas yang lebih rendah daripada akun lain.

Kapasitas penyimpanan yang digunakan

Untuk memeriksa blob yang terkait dengan kapasitas yang digunakan ini, Anda dapat menggunakan Storage Explorer. Untuk blob dalam jumlah besar, pertimbangkan untuk membuat laporan dengan menggunakan kebijakan Inventori Blob.

Memantau penggunaan kontainer

Jika Anda mempartisi data pelanggan berdasarkan kontainer, maka dapat memantau berapa banyak kapasitas yang digunakan oleh setiap pelanggan. Anda dapat menggunakan inventori blob Azure Storage untuk mengambil inventaris blob dengan informasi ukuran. Kemudian, Anda dapat mengagregasi ukuran dan menghitung di tingkat kontainer. Misalnya, lihat Menghitung jumlah blob dan ukuran total per kontainer menggunakan inventori Azure Storage.

Anda juga dapat mengevaluasi lalu lintas di tingkat kontainer dengan mengkueri log. Untuk mempelajari selengkapnya tentang menulis kueri Analitik Log, lihat Analitik Log. Untuk mempelajari selengkapnya tentang skema log penyimpanan, lihat Referensi data pemantauan Azure Blob Storage.

Berikut adalah kueri untuk mendapatkan jumlah transaksi baca dan jumlah byte yang dibaca pada setiap kontainer.

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

Kueri berikut ini menggunakan kueri yang mirip untuk mendapatkan informasi tentang operasi tulis.

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)

Kueri di atas mereferensikan nama beberapa operasi karena lebih dari satu jenis operasi dapat dihitung sebagai operasi tulis. Untuk mempelajari selengkapnya tentang operasi mana yang dianggap sebagai operasi baca dan tulis, lihat harga Azure Blob Storage atau harga Azure Data Lake Storage.

Mengaudit aktivitas akun

Dalam banyak kasus, Anda harus mengaudit aktivitas akun penyimpanan Anda untuk menjamin keamanan dan kepatuhan. Operasi pada akun penyimpanan terbagi dalam dua kategori: Control Plane dan Data Plane.

Operasi control plane adalah permintaan Azure Resource Manager untuk membuat akun penyimpanan atau untuk memperbarui properti dari akun penyimpanan yang ada. Untuk informasi selengkapnya, lihat Azure Resource Manager.

Operasi data plane adalah operasi pada data dalam akun penyimpanan yang dihasilkan dari permintaan ke endpoint layanan penyimpanan. Misalnya, operasi lapisan data dijalankan ketika Anda mengunggah blob ke storage account atau mengunduh blob dari storage account. Untuk informasi lebih lanjut, lihat Azure Storage API.

Bagian ini menunjukkan kepada Anda bagaimana mengidentifikasi informasi "kapan", "siapa", "apa", dan "bagaimana" dari operasi control plane dan data plane.

Menampilkan operasi control plane

Operasi Resource Manager direkam pada log aktivitas Azure. Untuk melihat log aktivitas, buka akun penyimpanan Anda di portal Microsoft Azure, lalu pilih Log Aktivitas.

Log Aktivitas

Buka entri log apa pun dengan tujuan melihat JSON yang menjelaskan aktivitas tersebut. JSON berikut menunjukkan informasi "kapan", "apa", dan "bagaimana" tentang operasi control plane:

JSON Log Aktivitas

Ketersediaan informasi "siapa" tergantung pada metode autentikasi yang digunakan untuk melakukan operasi bidang kontrol. Jika otorisasi dilakukan oleh perwakilan keamanan Microsoft Entra, pengidentifikasi objek dari prinsip keamanan tersebut juga akan muncul dalam output JSON ini (Misalnya: "http://schemas.microsoft.com/identity/claims/objectidentifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"). Karena Anda mungkin tidak selalu melihat informasi terkait identitas lainnya seperti alamat email atau nama, pengenal objek selalu merupakan cara terbaik untuk mengidentifikasi prinsipal keamanan secara unik.

Anda dapat menemukan nama yang mudah diingat dari prinsip keamanan tersebut dengan mengambil nilai pengidentifikasi objek, dan mencari prinsip keamanan di halaman ID Microsoft Entra dari portal Azure. Cuplikan layar berikut menunjukkan hasil pencarian di ID Microsoft Entra.

Cari Microsoft Entra ID

Mengaudit operasi "data plane"

Operasi data plane direkam pada log sumber daya Azure untuk Storage. Anda dapat mengonfigurasi pengaturan Diagnostik untuk mengekspor log ke ruang kerja Analitik Log untuk pengalaman kueri asli.

Berikut adalah kueri Log Analytics yang mengambil informasi "kapan", "siapa", "apa", dan "bagaimana" di dalam daftar entri log.

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

Untuk bagian "kapan" dari audit Anda, bidang TimeGenerated menunjukkan kapan entri log direkam.

Untuk bagian "apa" dari audit Anda, bidang Uri menunjukkan apakah barang tersebut dimodifikasi atau dibaca.

Untuk bagian "bagaimana" dari audit Anda, bidang OperationName menunjukkan operasi mana yang dieksekusi.

Petunjuk / Saran

Misalnya, jika Anda menduga bahwa blob atau kontainer telah dihapus secara tidak sengaja, maka tambahkan where klausa yang hanya mengembalikan entri log di mana OperationName diatur ke Hapus blob atau Hapus Kontainer. Untuk bagian "siapa" dari audit Anda, AuthenticationType menunjukkan jenis autentikasi mana yang digunakan untuk mengajukan permintaan. Bidang ini dapat menampilkan salah satu jenis autentikasi yang didukung Azure Storage termasuk penggunaan kunci akun, token SAS, atau autentikasi Microsoft Entra.

Jika permintaan diotorisasi dengan menggunakan ID Microsoft Entra, Anda dapat menggunakan RequestObjectId bidang untuk mengidentifikasi "siapa". Kunci Bersama dan autentikasi SAS tidak menyediakan sarana untuk mengaudit identitas individu. Dalam kasus tersebut, kolom callerIPAddress dan userAgentHeader mungkin membantu Anda mengidentifikasi sumber operasi. Jika token SAS digunakan untuk mengotorisasi operasi, Anda dapat mengidentifikasi token tersebut, dan jika Anda telah memetakan token ke penerima token di akhir Anda, Anda dapat mengidentifikasi pengguna, organisasi, atau aplikasi mana yang telah melakukan operasi. Lihat Mengidentifikasi token SAS yang digunakan untuk mengotorisasi permintaan.

Mengidentifikasi prinsip keamanan yang digunakan untuk mengotorisasi permintaan

Jika permintaan diautentikasi dengan menggunakan ID Microsoft Entra, RequesterObjectId bidang menyediakan cara yang paling dapat diandalkan untuk mengidentifikasi prinsip keamanan. Anda dapat menemukan nama yang mudah diingat dari prinsip keamanan tersebut dengan mengambil nilai RequesterObjectId bidang , dan mencari prinsip keamanan di halaman ID Microsoft Entra dari portal Azure. Cuplikan layar berikut menunjukkan hasil pencarian di ID Microsoft Entra.

Cari Microsoft Entra ID

Dalam beberapa kasus, nama utama pengguna atau UPN mungkin muncul di log. Misalnya, jika prinsipal keamanan adalah pengguna Microsoft Entra, UPN kemungkinan akan muncul. Untuk jenis prinsip keamanan lainnya seperti identitas terkelola yang ditetapkan pengguna, atau dalam skenario tertentu seperti autentikasi lintas penyewa Microsoft Entra, UPN tidak akan muncul di log.

Kueri ini memperlihatkan semua operasi baca yang dilakukan oleh prinsip keamanan OAuth.

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

Kunci Bersama dan autentikasi SAS tidak menyediakan sarana untuk mengaudit identitas individu. Oleh karena itu, jika Anda ingin meningkatkan kemampuan Anda untuk mengaudit berdasarkan identitas, kami sarankan Anda beralih ke ID Microsoft Entra, dan mencegah kunci bersama dan autentikasi SAS. Untuk mempelajari cara mencegah Kunci Bersama dan autentikasi SAS, lihat Mencegah otorisasi Kunci Bersama untuk akun Azure Storage. Untuk mulai menggunakan ID Microsoft Entra, lihat Mengotorisasi akses ke blob menggunakan ID Microsoft Entra.

Mengidentifikasi token SAS yang digunakan untuk mengotorisasi permintaan

Anda dapat mengkueri operasi yang diotorisasi dengan menggunakan token SAS. Misalnya, kueri ini mengembalikan semua operasi tulis yang diotorisasi dengan menggunakan token SAS.

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

Untuk alasan keamanan, token SAS tidak muncul di log. Namun, hash SHA-256 dari tanda tangan token SAS akan muncul di AuthenticationHash bidang yang dikembalikan oleh kueri ini.

Jika Anda telah mendistribusikan beberapa token SAS, dan ingin mengetahui token SAS mana yang digunakan, Anda harus mengonversi bagian tanda tangan dari setiap token SAS Anda menjadi hash SHA-256, lalu membandingkan hash tersebut dengan nilai hash yang muncul di log.

Pertama dekode setiap string token SAS. Contoh berikut mendekode bagian tanda tangan dari string token SAS dengan menggunakan PowerShell.

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

Anda dapat menggunakan alat atau SDK apa pun untuk mengonversi tanda tangan yang telah didekodekan menjadi hash SHA-256 dari tanda tangan tersebut. Misalnya, pada sistem Linux, Anda dapat menggunakan perintah berikut:

echo -n "<Decoded SAS signature>" | python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()), end='');"  | sha256sum

Cara lain untuk mengonversi tanda tangan yang didekodekan adalah dengan meneruskan string yang didekodekan ke fungsi hash_sha256() sebagai bagian dari kueri saat Anda menggunakan Azure Data Explorer.

Token SAS tidak berisi informasi identitas. Salah satu cara untuk melacak aktivitas pengguna atau organisasi, adalah dengan menyimpan pemetaan pengguna atau organisasi ke berbagai hash token SAS.

Mengoptimalkan biaya untuk kueri yang jarang terjadi

Anda dapat mengekspor log ke Log Analytics untuk kemampuan kueri asli yang kaya. Saat Anda memiliki transaksi dalam jumlah besar di akun penyimpanan Anda, biaya penggunaan log dengan Log Analytics mungkin tinggi. Untuk informasi selengkapnya, lihat Harga Analitik Log Azure. Jika Anda hanya berencana untuk memeriksa log sesekali (misalnya, log untuk audit kepatuhan), Anda dapat mempertimbangkan untuk mengurangi total biaya dengan mengekspor log ke akun penyimpanan, lalu menggunakan solusi kueri tanpa server pada data log, misalnya Azure Synapse.

Dengan Azure Synapse, Anda dapat membuat kumpulan SQL tanpa server untuk meminta data log saat Anda membutuhkannya. Hal ini bisa menghemat biaya secara signifikan.

  1. Ekspor log ke akun penyimpanan. Untuk informasi selengkapnya, lihat Membuat pengaturan diagnostik.

  2. Membuat dan mengonfigurasi ruang kerja Synapse. Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat ruang kerja Synapse.

  3. Log kueri. Untuk informasi selengkapnya, lihat Mengkueri file JSON menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics.

    Berikut adalah sebuah contoh:

     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
    
    

Lihat juga