Compartir vía


Consulta de registros para recursos de Azure

En Azure Monitor Log Analytics, las consultas normalmente se ejecutan en el contexto de un área de trabajo. Un área de trabajo puede contener datos para muchos recursos, lo que dificulta el aislamiento de los datos de un recurso determinado. Además, los recursos pueden enviar datos a varias áreas de trabajo. Para simplificar esta experiencia, la API REST permite consultar los recursos de Azure directamente para sus registros.

Formato de respuesta

Las consultas de recursos de Azure generan la misma forma de respuesta que las consultas destinadas a un área de trabajo de Log Analytics.

Formato de dirección URL

Considere la posibilidad de usar un recurso de Azure con un identificador completo:

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

Una consulta para los registros de este recurso en el punto de conexión de LA API directa iría a la siguiente dirección URL:

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

Una consulta al mismo recurso a través de ARM usaría la siguiente dirección URL:

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

Básicamente, esta dirección URL es el recurso completo de Azure más el proveedor de extensiones: /providers/microsoft.insights/logs.

Acceso a tablas y control de acceso basado en rol

El proveedor de recursos microsoft.insights expone un nuevo conjunto de operaciones para controlar el acceso a los registros en el nivel de tabla. Estas operaciones tienen el siguiente formato para una tabla denominada tableName.

microsoft.insights/logs/<tableName>/read 

Este permiso se puede agregar a los roles mediante la propiedad actions para permitir que las tablas especificadas y la propiedad notActions no permitan las tablas especificadas.

Control de acceso al área de trabajo

Las consultas de recursos de Azure examinan las áreas de trabajo de Log Analytics como posibles orígenes de datos. Sin embargo, los administradores pueden bloquear el acceso al área de trabajo a través de roles de RBAC. De forma predeterminada, la API solo devuelve resultados de áreas de trabajo a las que el usuario tiene permisos de acceso.

Los administradores del área de trabajo pueden usar consultas de recursos de Azure sin interrumpir RBAC existente. Una propiedad booleana en el área de trabajo permite a los usuarios con permisos de lectura ver los registros de un recurso de Azure específico, pero no consultar el área de trabajo que contiene esos registros.

Esta es la acción para el ámbito del acceso a tablas en el nivel de área de trabajo:

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

Respuestas de errores

Esta es una breve lista de escenarios de error comunes al consultar recursos de Azure junto con una descripción del comportamiento sintomático.

El recurso de Azure no 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" 
        }
    }
}

Sin acceso a los recursos

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

Sin registros del recurso o sin permiso para el área de trabajo que contiene esos registros

Dependiendo de la combinación precisa de datos y permisos, la respuesta contiene 200 sin datos resultantes o produce un error de sintaxis (error 4xx).

Acceso parcial

Hay algunos escenarios en los que un usuario puede tener permisos parciales para acceder a los registros de un recurso determinado. Este es el caso si falta el usuario:

  • Acceso al área de trabajo que contiene registros para el recurso de Azure.
  • Acceso a las tablas de referencia en la consulta.

Ven una respuesta normal, con orígenes de datos que el usuario no tiene permisos para tener acceso filtrado de forma silenciosa. Para ver información acerca del acceso de un usuario a un recurso de Azure, las áreas de trabajo subyacentes de Log Analytics y las tablas específicas, incluya el encabezado Prefer: include-permissions=true con solicitudes. Esto hace que el JSON de respuesta incluya una sección como en el ejemplo siguiente:

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

La carga resources describe un intento de consultar dos máquinas virtuales. VM1 envía datos al área de trabajo WS1, mientras que VM2 envía datos a dos áreas de trabajo: WS2 y WS3. Además, el usuario no tiene permiso para consultar las tablas SecurityEvent o SecurityBaseline para el recurso.

La carga dataSources filtra aún más los resultados mediante la descripción de las áreas de trabajo que el usuario puede consultar. Aquí, el usuario no tiene permisos para consultar WS3 y otra tabla filtrada de WS1.

Para decir claramente qué datos devolvería una consulta de este tipo:

  • Registros de VM1 en WS1, excepto tablas. Personalizado desde el área de trabajo.
  • Registros de VM2, excepto SecurityEvent y SecurityBaseline, en WS2.