Wykonywanie zapytań dotyczących dzienników dla zasobów platformy Azure
W usłudze Azure Monitor Log Analytics zapytania są zwykle wykonywane w kontekście obszaru roboczego. Obszar roboczy może zawierać dane dla wielu zasobów, co utrudnia izolowanie danych dla określonego zasobu. Zasoby mogą dodatkowo wysyłać dane do wielu obszarów roboczych. Aby uprościć to środowisko, interfejs API REST umożliwia wykonywanie zapytań dotyczących zasobów platformy Azure bezpośrednio dla dzienników.
Format odpowiedzi
Zapytania dotyczące zasobów platformy Azure tworzą ten sam kształt odpowiedzi co zapytania przeznaczone dla obszaru roboczego usługi Log Analytics.
Format adresu URL
Rozważ zasób platformy Azure z w pełni kwalifikowanym identyfikatorem:
/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>
Zapytanie dotyczące dzienników tego zasobu względem punktu końcowego interfejsu API bezpośredniego spowoduje przejście do następującego adresu URL:
https://api.loganalytics.azure.com/v1/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/query
Zapytanie do tego samego zasobu za pośrednictwem usługi ARM będzie używać następującego adresu URL:
https://management.azure.com/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/providers/microsoft.insights/logs?api-version=2018-03-01-preview
Zasadniczo ten adres URL jest w pełni kwalifikowanym zasobem platformy Azure oraz dostawcą rozszerzenia: /providers/microsoft.insights/logs
.
Dostęp do tabel i kontrola dostępu oparta na rolach
Dostawca microsoft.insights
zasobów uwidacznia nowy zestaw operacji na potrzeby kontrolowania dostępu do dzienników na poziomie tabeli. Te operacje mają następujący format dla tabeli o nazwie tableName
.
microsoft.insights/logs/<tableName>/read
To uprawnienie można dodać do ról przy użyciu actions
właściwości , aby zezwolić określonym tabelom i notActions
właściwości na nie zezwalanie określonym tabelom.
Kontrola dostępu do obszaru roboczego
Zapytania dotyczące zasobów platformy Azure przejrzyją obszary robocze usługi Log Analytics jako możliwe źródła danych. Jednak administratorzy mogą zablokować dostęp do obszaru roboczego za pośrednictwem ról RBAC. Domyślnie interfejs API zwraca tylko wyniki z obszarów roboczych, do których użytkownik ma uprawnienia dostępu.
Administratorzy obszarów roboczych mogą używać zapytań dotyczących zasobów platformy Azure bez przerywania istniejącej kontroli dostępu opartej na rolach. Właściwość logiczna w obszarze roboczym umożliwia użytkownikom z uprawnieniami do odczytu dzienniki widoku dla określonego zasobu platformy Azure, ale nie wysyła zapytania do obszaru roboczego zawierającego te dzienniki.
Jest to akcja określania zakresu dostępu do tabel na poziomie obszaru roboczego:
microsoft.operationalinsights/workspaces/query/<tableName>/read
Odpowiedzi na błędy
Poniżej przedstawiono krótką listę typowych scenariuszy awarii podczas wykonywania zapytań dotyczących zasobów platformy Azure wraz z opisem zachowania objawowego.
Zasób platformy Azure nie istnieje
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"
}
}
}
Brak dostępu do zasobu
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"
}
}
}
Brak dzienników z zasobu lub brak uprawnień do obszaru roboczego zawierającego te dzienniki
W zależności od dokładnej kombinacji danych i uprawnień odpowiedź zawiera 200 bez danych wynikowych lub zgłasza błąd składniowy (błąd 4xx).
Dostęp częściowy
Istnieją pewne scenariusze, w których użytkownik może mieć częściowe uprawnienia dostępu do dzienników określonego zasobu. Dzieje się tak, jeśli brakuje użytkownika:
- Dostęp do obszaru roboczego zawierającego dzienniki dla zasobu platformy Azure.
- Dostęp do tabel odwołań w zapytaniu.
Widzą normalną odpowiedź ze źródłami danych, do których użytkownik nie ma uprawnień dostępu w trybie dyskretnym. Aby wyświetlić informacje o dostępie użytkownika do zasobu platformy Azure, źródłowych obszarach roboczych usługi Log Analytics i określonych tabelach, dołącz nagłówek Prefer: include-permissions=true
z żądaniami. Spowoduje to uwzględnienie sekcji w formacie JSON odpowiedzi podobnej do poniższego przykładu:
{
"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"
}
]
}
}
resources
Ładunek opisuje próbę wykonywania zapytań o dwie maszyny wirtualne. Maszyna wirtualna VM1 wysyła dane do obszaru roboczego WS1, a maszyna VM2 wysyła dane do dwóch obszarów roboczych: WS2 i WS3. Ponadto użytkownik nie ma uprawnień do wykonywania zapytań dotyczących SecurityEvent
tabel lub SecurityBaseline
dla zasobu.
dataSources
Ładunek filtruje wyniki dalej, opisując, które obszary robocze użytkownik może wykonywać zapytania. W tym miejscu użytkownik nie ma uprawnień do wykonywania zapytań w usłudze WS3, a inna tabela odfiltrowana z usługi WS1.
Aby wyraźnie określić, jakie dane zwróci takie zapytanie:
- Dzienniki maszyny wirtualnej VM1 w programie WS1 z wyłączeniem tabel. Niestandardowy z obszaru roboczego.
- Dzienniki maszyn wirtualnych VM2, z wyłączeniem zabezpieczeńEvent i SecurityBaseline, w programie WS2.