Compartilhar via


Consultar logs de recursos do Azure

No Log Analytics do Azure Monitor, as consultas normalmente são executadas no contexto de um workspace. Um workspace pode conter dados para muitos recursos, o que dificulta isolar os dados de um recurso específico. Os recursos também podem enviar dados para vários workspaces. Para simplificar essa experiência, a API REST permite consultar recursos do Azure diretamente para seus respectivos logs.

Formato da resposta

As consultas de recursos do Azure produzem a mesma forma de resposta das consultas destinadas a um workspace do Log Analytics.

Formato de URL

Considere um recurso do Azure com um identificador totalmente qualificado:

/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>

Uma consulta dos logs desse recurso em relação ao ponto de extremidade direto da API levaria à seguinte URL:

https://api.loganalytics.azure.com/v1/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/query

Uma consulta ao mesmo recurso por meio do ARM usaria a seguinte URL:

https://management.azure.com/subscriptions/<sid>/resourceGroups/<rg>/providers/<providerName>/<resourceType>/<resourceName>/providers/microsoft.insights/logs?api-version=2018-03-01-preview

Basicamente, essa URL é formada pelo recurso totalmente qualificado do Azure mais o provedor de extensão: /providers/microsoft.insights/logs.

Acesso à tabela e RBAC

O provedor de recursos microsoft.insights expõe um novo conjunto de operações para controlar o acesso aos logs no nível da tabela. Essas operações têm o formato a seguir em uma tabela chamada tableName.

microsoft.insights/logs/<tableName>/read 

Essa permissão pode ser adicionada às funções usando a propriedade actions para permitir tabelas especificadas e a propriedade notActions para não permitir tabelas especificadas.

Controle de acesso do workspace

As consultas de recursos do Azure pesquisam os workspaces do Log Analytics como possíveis fontes de dados. No entanto, os administradores podem bloquear o acesso ao espaço de trabalho por meio de funções do RBAC. Por padrão, a API retorna apenas os resultados dos workspaces que o usuário tem permissões de acessar.

Os administradores do espaço de trabalho podem usar consultas de recursos do Azure sem interromper o RBAC existente. Uma propriedade booliana no espaço de trabalho permite que os usuários com permissões de leitura exibam logs para um recurso específico do Azure, mas não consultam o espaço de trabalho que contém esses logs.

É esta a ação para obter o escopo do acesso a Tabelas no nível do workspace:

microsoft.operationalinsights/workspaces/query/<tableName>/read

Respostas de erro

Aqui está uma breve lista de cenários de falha comuns ao consultar recursos do Azure, juntamente com uma descrição dos sintomas de comportamento.

O recurso do Azure não existe

    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" 
        }
    }
}

Sem acesso ao recurso

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"
        }
    } 
}

Não há logs deste recurso, ou não há permissão de acesso ao workspace que contém esses logs

A depender da combinação exata de dados e permissões, a resposta contém um 200 sem dados resultantes ou exibe um erro de sintaxe (erro 4xx).

Acesso parcial

Há alguns cenários em que um usuário pode ter permissões parciais de acesso aos logs de um recurso específico. Esse será o caso se o usuário estiver ausente:

  • Acesso ao espaço de trabalho que contém os logs do recurso do Azure.
  • Acesso à referência das tabelas na consulta.

Eles visualizam uma resposta normal, com fontes de dados que o usuário não tem permissões para acessar silenciosamente filtradas. Para ver informações sobre o acesso de um usuário a um recurso do Azure, os workspaces subjacentes do Log Analytics e tabelas específicas, inclua o cabeçalho Prefer: include-permissions=true com solicitações. Isso faz com que o JSON de resposta inclua uma seção como o exemplo a seguir:

{ 
    "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" 
            } 
        ] 
    } 
}

O payload resources descreve uma tentativa de consultar duas VMs. A VM1 envia dados para o workspace WS1, enquanto a VM2 envia dados para dois workspaces: WS2 e WS3. Além disso, o usuário não tem permissão para consultar as tabelas SecurityEvent ou SecurityBaseline do recurso em questão.

O payload dataSources filtra ainda mais os resultados ao descrever os workspaces que o usuário pode consultar. Aqui, o usuário não tem permissões para consultar o WS3 e outra tabela filtrada do WS1.

Aqui estão listados claramente os dados que essa consulta retornaria:

  • Logs para VM1 no WS1, excluindo Tabelas. Personalizado do espaço de trabalho.
  • Logs da VM2, exceto SecurityEvent e SecurityBaseline, no WS2.