Dotazování protokolů pro prostředky Azure
V Azure Monitor Log Analytics se dotazy obvykle spouštějí v kontextu pracovního prostoru. Pracovní prostor může obsahovat data pro mnoho prostředků, což znesnadňuje izolaci dat pro konkrétní prostředek. Prostředky mohou navíc odesílat data do více pracovních prostorů. Pro zjednodušení tohoto prostředí rozhraní REST API umožňuje dotazování prostředků Azure přímo pro jejich protokoly.
Formát odpovědi
Dotazy na prostředky Azure vytvářejí stejný tvar odpovědi jako dotazy, které cílí na pracovní prostor služby Log Analytics.
Formát adresy URL
Zvažte prostředek Azure s plně kvalifikovaným identifikátorem:
/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>
Dotaz na protokoly tohoto prostředku vůči přímému koncovému bodu rozhraní API by šel na následující adresu URL:
https://api.loganalytics.azure.com/v1/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/query
Dotaz na stejný prostředek prostřednictvím ARM by použil následující adresu URL:
https://management.azure.com/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/providers/microsoft.insights/logs?api-version=2018-03-01-preview
V podstatě je tato adresa URL plně kvalifikovaným prostředkem Azure a poskytovatelem rozšíření: /providers/microsoft.insights/logs
.
Přístup k tabulce a řízení přístupu na základě role
Poskytovatel microsoft.insights
prostředků zveřejňuje novou sadu operací pro řízení přístupu k protokolům na úrovni tabulky. Tyto operace mají následující formát tabulky s názvem tableName
.
microsoft.insights/logs/<tableName>/read
Toto oprávnění lze přidat do rolí pomocí actions
vlastnosti, aby se povolily zadané tabulky a notActions
vlastnost zakázat zadané tabulky.
Řízení přístupu k pracovním prostorům
Dotazy na prostředky Azure se dívají na pracovní prostory služby Log Analytics jako možné zdroje dat. Správci ale můžou uzamknout přístup k pracovnímu prostoru prostřednictvím rolí RBAC. Ve výchozím nastavení rozhraní API vrací pouze výsledky z pracovních prostorů, ke které má uživatel oprávnění pro přístup.
Správci pracovního prostoru můžou používat dotazy na prostředky Azure bez přerušení stávajícího řízení přístupu na základě role. Logická vlastnost pracovního prostoru umožňuje uživatelům s oprávněními ke čtení zobrazit protokoly pro konkrétní prostředek Azure, ale ne dotazovat se na pracovní prostor, který tyto protokoly obsahuje.
Toto je akce pro přístup k tabulkám na úrovni pracovního prostoru:
microsoft.operationalinsights/workspaces/query/<tableName>/read
Chybové odpovědi
Tady je stručný přehled běžných scénářů selhání při dotazování prostředků Azure spolu s popisem symptomatického chování.
Prostředek Azure neexistuje.
HTTP/1.1 404 Not Found
{
"error": {
"message": "The resource /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/test-rg/providers/microsoft.storage/storageaccounts/exampleResource was not found",
"code": "ResourceNotFoundError"
}
}
}
Žádný přístup k prostředku
HTTP/1.1 403 Forbidden
{
"error": {
"message": "The provided credentials have insufficient access to perform the requested operation",
"code": "InsufficientAccessError",
"innererror": {
"code": "AuthorizationFailedError",
"message": "User '92eba38a-70da-42b0-ab83-ffe82cce658f' does not have access to read logs for this resource"
}
}
}
Žádné protokoly z prostředku nebo žádná oprávnění k pracovnímu prostoru obsahujícímu tyto protokoly
V závislosti na přesné kombinaci dat a oprávnění odpověď obsahuje hodnotu 200 bez výsledných dat nebo vyvolá chybu syntaxe (chyba 4xx).
Částečný přístup
Existuje několik scénářů, kdy uživatel může mít částečná oprávnění pro přístup k protokolům konkrétního prostředku. To je případ, kdy uživatel chybí:
- Přístup k pracovnímu prostoru obsahujícímu protokoly pro prostředek Azure
- Přístup k odkazům na tabulky v dotazu
Uvidí normální odpověď se zdroji dat, ke kterým uživatel nemá oprávnění k tichému odfiltrování. Pokud chcete zobrazit informace o přístupu uživatele k prostředku Azure, podkladovým pracovním prostorům služby Log Analytics a ke konkrétním tabulkám, zahrňte hlavičku Prefer: include-permissions=true
s požadavky. To způsobí, že JSON odpovědi bude obsahovat oddíl podobný následujícímu příkladu:
{
"permissions": {
"resources": [
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.Compute/virtualMachines/VM1",
"dataSources": [
"/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS1"
]
},
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.Compute/virtualMachines/VM2",
"denyTables": [
"SecurityEvent",
"SecurityBaseline"
],
"dataSources": [
"/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS2",
"/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS3"
]
}
],
"dataSources": [
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS1",
"denyTables": [
"Tables.Custom"
]
},
{
"resourceId": "/subscriptions/<id>/resourceGroups<id>/providers/Microsoft.OperationalInsights/workspaces/WS2"
}
]
}
}
Datová resources
část popisuje pokus o dotazování dvou virtuálních počítačů. VM1 odesílá data do pracovního prostoru WS1, zatímco VM2 odesílá data do dvou pracovních prostorů: WS2 a WS3. Uživatel navíc nemá oprávnění k dotazování na SecurityEvent
prostředky nebo SecurityBaseline
tabulky.
Datová dataSources
část filtruje výsledky dále popisem pracovních prostorů, které může uživatel dotazovat. V této části uživatel nemá oprávnění k dotazování WS3 a jiná tabulka vyfiltrovaná z WS1.
Pokud chcete jasně uvést, jaká data by takový dotaz vrátil:
- Protokoly pro virtuální počítač 1 ve WS1 s výjimkou tabulek Vlastní z pracovního prostoru.
- Protokoly pro virtuální počítač 2 s výjimkou SecurityEvent a SecurityBaseline ve WS2