Ajánlott eljárások az Azure Blob Storage monitorozásához
Ez a cikk a gyakori tárolási monitorozási forgatókönyvek gyűjteményét tartalmazza, és az ajánlott eljárásokkal kapcsolatos útmutatást nyújt az ezek végrehajtásához.
Identify storage accounts with no or low use
A Storage Elemzések egy irányítópult az Azure Storage-metrikák és -naplók tetején. A Storage Elemzések használatával megvizsgálhatja az összes fiók tranzakciós mennyiségét és kapacitását. Ezek az információk segíthetnek eldönteni, hogy mely fiókokat szeretné kivonni. A Storage Elemzések konfigurálásához lásd: A tárolási szolgáltatás monitorozása az Azure Monitor Storage-elemzésekkel.
Tranzakciómennyiség elemzése
Az Azure Monitor Storage Elemzések nézetében növekvő sorrendbe rendezheti a fiókokat a Tranzakciók oszlop használatával. Az alábbi képen egy alacsony tranzakciómennyiségű fiók látható a megadott időszakban.
A fiókhivatkozásra kattintva további információkat tudhat meg ezekről a tranzakciókról. Ebben a példában a legtöbb kérés a Blob Storage szolgáltatáshoz történik.
Annak megállapításához, hogy milyen típusú kérelmeket hajtanak végre, részletezze a Tranzakciók API-névdiagram alapján.
Ebben a példában minden kérés felsorolja a fióktulajdonságok adatait tartalmazó műveleteket vagy kéréseket. Nincsenek olvasási és írási tranzakciók. Ez azt eredményezheti, hogy a fiókot nem használják jelentős mértékben.
Használt kapacitás elemzése
Az Azure Monitor Storage Elemzések nézetÉnek Kapacitás lapján növekvő sorrendbe rendezheti a fiókokat a használt kapacitásoszlop használatával. Az alábbi képen egy olyan fiók látható, amelynek kapacitása kisebb, mint a többi fiók.
A használt kapacitáshoz társított blobok vizsgálatához használhatja a Storage Explorert. Nagy számú blob esetén érdemes lehet blobleltár-szabályzattal létrehozni egy jelentést.
Tároló használatának monitorozása
Ha az ügyfél adatait tároló alapján particionálja, akkor nyomon követheti, hogy az egyes ügyfelek mennyi kapacitást használnak. Az Azure Storage blobleltárával leltározhatja a méretadatokat tartalmazó blobokat. Ezután összesítheti a méretet és a darabszámot a tároló szintjén. Példa: Blobok számának és teljes méretének kiszámítása tárolónként az Azure Storage-leltár használatával.
A forgalmat a tároló szintjén is kiértékelheti a naplók lekérdezésével. A Log Analitikus lekérdezések írásáról további információt a Log Analyticsben talál. A tárolási naplók sémájáról további információt az Azure Blob Storage monitorozási adatreferenciájában talál.
Az alábbi lekérdezés beolvassa az olvasási tranzakciók számát és az egyes tárolókon beolvasott bájtok számát.
StorageBlobLogs
| where OperationName == "GetBlob"
| extend ContainerName = split(parse_url(Uri).Path, "/")[1]
| summarize ReadSize = sum(ResponseBodySize), ReadCount = count() by tostring(ContainerName)
Az alábbi lekérdezés egy hasonló lekérdezést használ az írási műveletek információinak lekéréséhez.
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)
A fenti lekérdezés több művelet nevére hivatkozik, mert egynél több művelet is írási műveletnek számíthat. Ha többet szeretne megtudni arról, hogy mely műveletek minősülnek olvasási és írási műveleteknek, tekintse meg az Azure Blob Storage díjszabását vagy az Azure Data Lake Storage díjszabását.
Audit account activity
Sok esetben a tárfiókok tevékenységeit kell naplóznia a biztonság és a megfelelőség érdekében. A tárfiókokon végzett műveletek két kategóriába sorolhatók: vezérlősík és adatsík.
A vezérlősík-művelet bármely Azure Resource Manager-kérés, amely egy tárfiók létrehozására vagy egy meglévő tárfiók tulajdonságának frissítésére kéri. További információ: Azure Resource Manager.
Az adatsík-művelet a tárfiók adatain végzett olyan művelet, amely a tárolási szolgáltatás végpontjára irányuló kérésből ered. Az adatsík-műveletet például akkor hajtja végre a rendszer, ha feltölt egy blobot egy tárfiókba, vagy letölt egy blobot egy tárfiókból. További információ: Azure Storage API.
A szakasz bemutatja, hogyan azonosíthatja a vezérlő- és adatsík-műveletek "mikor", "ki", "what" és "how" adatait.
A vezérlősík műveleteinek naplózása
A Resource Manager-műveleteket az Azure-tevékenységnapló rögzíti. A tevékenységnapló megtekintéséhez nyissa meg a tárfiókot az Azure Portalon, majd válassza a Tevékenységnapló lehetőséget.
Nyisson meg minden naplóbejegyzést a tevékenységet leíró JSON megtekintéséhez. A következő JSON egy vezérlősík-művelet "mikor", "what" és "how" információját mutatja be:
A "who" információk elérhetősége a vezérlősík-művelet végrehajtásához használt hitelesítési módszertől függ. Ha az engedélyezést egy Microsoft Entra biztonsági tag végezte el, az adott biztonsági tag objektumazonosítója is megjelenik ebben a JSON-kimenetben (például: "http://schemas.microsoft.com/identity/claims/objectidentifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
). Mivel előfordulhat, hogy nem mindig jelenik meg más identitással kapcsolatos információ, például e-mail-cím vagy név, az objektumazonosító mindig a legjobb módszer a biztonsági tag egyedi azonosítására.
A biztonsági tag rövid nevét az objektumazonosító értékének figyelembe vételével és a biztonsági tag megkeresésével találja meg az Azure Portal Microsoft Entra ID lapján. Az alábbi képernyőképen egy keresési eredmény látható a Microsoft Entra-azonosítóban.
Adatsík-műveletek naplózása
Az adatsík-műveletek a Storage Azure-erőforrásnaplóiban vannak rögzítve. A diagnosztikai beállítás konfigurálható úgy, hogy naplókat exportáljon a Log Analytics-munkaterületre natív lekérdezési élmény érdekében.
Íme egy Log Analytics-lekérdezés, amely lekéri a "mikor", a "who", a "what" és a "how" adatokat a naplóbejegyzések listájában.
StorageBlobLogs
| where TimeGenerated > ago(3d)
| project TimeGenerated, AuthenticationType, RequesterObjectId, OperationName, Uri
A napló "mikor" részében a TimeGenerated
mező azt mutatja, hogy mikor lett rögzítve a naplóbejegyzés.
Az audit "what" része esetén a Uri
mező azt mutatja, hogy az elem módosult vagy beolvasva lett.
Az audit "how" részében a OperationName
mező azt mutatja, hogy melyik műveletet hajtották végre.
Tipp.
Ha például azt gyanítja, hogy egy blobot vagy tárolót véletlenül töröltek, adjon hozzá egy where
záradékot, amely csak olyan naplóbejegyzéseket ad vissza, amelyekben a blob törlése vagy a OperationName
tároló törlése beállítás van beállítva.
Az audit "who" részében látható, AuthenticationType
hogy milyen típusú hitelesítést használtak a kérések teljesítéséhez. Ez a mező megjelenítheti az Azure Storage által támogatott hitelesítési típusokat, beleértve a fiókkulcsok, SAS-jogkivonatok vagy Microsoft Entra-hitelesítés használatát.
Ha a kérés a Microsoft Entra-azonosítóval van engedélyezve, a RequestObjectId
mezővel azonosíthatja a "ki" azonosítót. A megosztott kulcs és SAS-hitelesítés nem biztosít lehetőséget az egyéni identitások naplózására. Ezekben az esetekben a callerIPAddress
mezők segíthetnek userAgentHeader
a művelet forrásának azonosításában. Ha SAS-jogkivonatot használtak egy művelet engedélyezéséhez, azonosíthatja a jogkivonatot, és ha a jogkivonatokat a jogkivonat címzettjeihez rendelte le a végén, meghatározhatja, hogy melyik felhasználó, szervezet vagy alkalmazás hajtotta végre a műveletet. Lásd : A kérelem engedélyezéséhez használt SAS-jogkivonat azonosítása.
A kérés engedélyezéséhez használt biztonsági tag azonosítása
Ha egy kérés hitelesítése a Microsoft Entra-azonosítóval történt, a RequesterObjectId
mező biztosítja a legmegbízhatóbb módot a biztonsági tag azonosítására. A biztonsági tag rövid nevét a mező értékének RequesterObjectId
figyelembe vételével és a biztonsági tag megkeresésével találja meg az Azure Portal Microsoft Entra ID oldalán. Az alábbi képernyőképen egy keresési eredmény látható a Microsoft Entra-azonosítóban.
Bizonyos esetekben előfordulhat, hogy a naplókban egy egyszerű felhasználónév vagy egyszerű felhasználónév jelenik meg. Ha például a biztonsági tag Egy Microsoft Entra-felhasználó, az UPN valószínűleg megjelenik. Más típusú biztonsági tagok, például a felhasználó által hozzárendelt felügyelt identitások, vagy bizonyos esetekben, például a Microsoft Entra-bérlők közötti hitelesítés esetén az UPN nem jelenik meg a naplókban.
Ez a lekérdezés az OAuth biztonsági tagok által végrehajtott összes olvasási műveletet megjeleníti.
StorageBlobLogs
| where TimeGenerated > ago(3d)
and OperationName == "GetBlob"
and AuthenticationType == "OAuth"
| project TimeGenerated, AuthenticationType, RequesterObjectId, OperationName, Uri
A megosztott kulcs és SAS-hitelesítés nem biztosít lehetőséget az egyéni identitások naplózására. Ezért ha javítani szeretné az identitáson alapuló naplózási képességet, javasoljuk, hogy váltson a Microsoft Entra-azonosítóra, és tiltsa meg a megosztott kulcs- és SAS-hitelesítést. A megosztott kulcs és SAS-hitelesítés megelőzésének módjáról az Azure Storage-fiók megosztott kulcsának engedélyezésének megakadályozása című témakörben olvashat. A Microsoft Entra ID használatának megkezdéséhez lásd : Blobok hozzáférésének engedélyezése a Microsoft Entra ID használatával.
A kérelem engedélyezéséhez használt SAS-jogkivonat azonosítása
AZ SAS-jogkivonattal engedélyezett műveletekről kérdezhet le. Ez a lekérdezés például az összes olyan írási műveletet visszaadja, amelyet SAS-jogkivonat használatával engedélyeztek.
StorageBlobLogs
| where TimeGenerated > ago(3d)
and OperationName == "PutBlob"
and AuthenticationType == "SAS"
| project TimeGenerated, AuthenticationType, AuthenticationHash, OperationName, Uri
Biztonsági okokból az SAS-jogkivonatok nem jelennek meg a naplókban. Az SAS-jogkivonat SHA-256 kivonata azonban megjelenik a AuthenticationHash
lekérdezés által visszaadott mezőben.
Ha több SAS-jogkivonatot osztott ki, és tudni szeretné, hogy mely SAS-jogkivonatokat használja, az egyes SAS-jogkivonatokat SHA-256 kivonattá kell konvertálnia, majd ezt a kivonatot a naplókban megjelenő kivonatértékhez kell hasonlítani.
Először dekódolja az egyes SAS-jogkivonat-sztringeket. Az alábbi példa egy SAS-jogkivonat-sztringet dekódol a PowerShell használatával.
[uri]::UnescapeDataString("<SAS token goes here>")
Ezután átadhatja ezt a sztringet a Get-FileHash PowerShell-parancsmagnak. Példa: 4. példa: Sztring kivonatának kiszámítása.
Másik lehetőségként a dekódolt sztringet átadhatja a hash_sha256() függvénynek egy lekérdezés részeként az Azure Data Explorer használatakor.
Az SAS-jogkivonatok nem tartalmaznak identitásadatokat. A felhasználók vagy szervezetek tevékenységeinek nyomon követésének egyik módja a felhasználók vagy szervezetek különböző SAS-jogkivonatokra való leképezése.
A ritkán használt lekérdezések költségeinek optimalizálása
A logokat a Log Analyticsbe exportálhatja a natív lekérdezési képességek érdekében. Ha a tárfiókon jelentős tranzakciók vannak, a naplók Log Analytics-lel való használatának költsége magas lehet. További információkért tekintse meg az Azure Log Analytics díjszabását. Ha csak alkalmanként szeretne naplókat lekérdezni (például a megfelelőségi naplózás lekérdezési naplóit), fontolja meg a teljes költség csökkentését a naplók tárfiókba való exportálásával, majd egy kiszolgáló nélküli lekérdezési megoldás használatával a naplóadatokon, például az Azure Synapse-on.
Az Azure Synapse használatával kiszolgáló nélküli SQL-készletet hozhat létre a naplóadatok lekérdezéséhez, ha szükséges. Ez jelentősen csökkentheti a költségeket.
Naplók exportálása tárfiókba. További információ: Diagnosztikai beállítás létrehozása.
Synapse-munkaterület létrehozása és konfigurálása. További információ : Rövid útmutató: Synapse-munkaterület létrehozása.
Query logs. További információ: JSON-fájlok lekérdezése kiszolgáló nélküli SQL-készlet használatával az Azure Synapse Analyticsben.
Here's an example:
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