使用Azure API格式获取应用程序见解是否可以进行“跨应用程序查询”?

时间:2019-08-20 11:35:15

标签: azure azure-application-insights

我正在尝试使用Azure API format来查询Application Insights,以检索多个应用程序上的数据。我可以成功地对任何没有联接的应用程序进行查询

我以前使用documentation成功执行“跨应用程序查询”之后,使用了公共API格式。但是,在Azure API架构下,一旦我将第二个应用程序添加到查询中(使用documentation中所述的隐式或显式机制),就会收到错误消息,类型为InsufficientAccessError,并显示以下消息:提供的凭据没有足够的权限来执行请求的操作”。

如果有足够的权限单独访问任何一个表,我希望有足够的空间进行联接。进行这些查询是否需要单独的权限,或者API本身存在问题?


作为参考,Azure AD应用程序具有以下权限:

  • user_impersonation
  • Directory.Read.All
  • Group.Read.All
  • User.Read
  • User.ReadBasic.All
  • User.ReadWrite

发出请求的用户在所有相关应用程序上都拥有所有者角色。

最终请求具有JSON正文(并填入空白):

{
  "query": "requests \n| summarize avgRequestDuration=avg(duration) by bin(timestamp, 1h)",
  "applications": [
    "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/microsoft.operationalinsights/components/<applicationName>"
  ],
  "timespan": "P1D"
}

编辑:我已经尝试使用文档中提到的不同形式的资源标识符来进行此查询,包括推荐的“ /providers/microsoft.operationalinsights/applications/”和“ /providers/microsoft.operationalinsights/components/”

1 个答案:

答案 0 :(得分:0)

基于我发现的几件事,我相信不可能以Azure API URL格式进行跨资源查询。

  1. 所有尝试向用户添加不同角色并尝试权限的尝试都找不到有效的方法。

  2. Go SDK使用Azure API URL格式,不允许跨资源查询,.NET SDK使用Public API URL格式,并且允许跨资源查询,指示功能集对于这两个API。

我很高兴被证明是错误的,或者希望得到更好的参考证明是正确的。