Udostępnij za pośrednictwem


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.