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 ich dzienników.

Format odpowiedzi

Zapytania zasobów platformy Azure generują taki sam kształt odpowiedzi , jak 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 bezpośredniego punktu końcowego interfejsu API 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 właściwości "actions", aby zezwolić określonym tabelom i właściwości "notActions" na nie zezwalanie określonym tabelom.

Kontrola dostępu do obszaru roboczego

Obecnie 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 obszaru roboczego mogą chcieć korzystać z zapytań zasobów platformy Azure bez przerywania istniejącej kontroli dostępu opartej na rolach, tworząc scenariusz, w którym użytkownik może mieć dostęp do odczytu dzienników dla zasobu platformy Azure, ale może nie mieć uprawnień do wykonywania zapytań dotyczących obszaru roboczego zawierającego te dzienniki. Zasób administratorów obszaru roboczego, aby wyświetlić dzienniki za pośrednictwem właściwości logicznej w obszarze roboczym. Dzięki temu użytkownicy mogą uzyskiwać dostęp do dzienników odnoszących się do docelowego zasobu platformy Azure w określonym obszarze roboczym, o ile użytkownik ma dostęp do odczytu dzienników dla docelowego zasobu platformy Azure.

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 znajduje się krótka lista 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/7fd50ca7-1e78-4144-ab9c-0ec2faafa046/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ź będzie zawierać wartość 200 bez danych wynikowych lub zgłosi 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. Gdy brakuje użytkownika:

  • Dostęp do obszaru roboczego zawierającego dzienniki dla zasobu platformy Azure
  • Dostęp do odwołań do tabel w zapytaniu

Zobaczy on 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 do żądań. Spowoduje to dołączenie sekcji w formacie JSON odpowiedzi w następujący sposób:

    { 
        "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 zapytania o dwie maszyny wirtualne. Maszyna WIRTUALNa VM1 wysyła dane do obszaru roboczego WS1, a maszyna WIRTUALNa VM2 wysyła dane do dwóch obszarów roboczych: WS2 i WS3. Ponadto użytkownik nie ma uprawnień do wykonywania zapytań SecurityEvent dotyczących 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 i dodatkowej tabeli odfiltrowanej 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.Custom z obszaru roboczego.
  • Dzienniki dla maszyny wirtualnej VM2, z wyłączeniem zabezpieczeńEvent i SecurityBaseline, w programie WS2.