率这篇文章

日志分析是Azure门户中的一个极好的工具,它提供了查询Azure监视器事件的能力。它提供了使用KQL (Kusto查询语言)快速创建查询的能力。但是,一旦创建了查询,您可能希望通过自动化运行该查询,而不需要每次获取关联的报表数据时都使用Azure门户。

在这篇文章中我详述了;

  • 创建日志分析工作区
  • 启用API访问
  • 使用带有PowerShell的REST API查询日志分析
  • 将数据输出到csv

创建一个工作区

我们希望为日志和查询创建一个工作区。我在Azure门户中使用Azure Cloud Shell创建了我的版本。我正在使用现有的资源组。如果您希望它在新的资源组中,可以通过门户或通过使用New-AzResourceGroup

$rg name='MyLogAnalytics Reporting RG'$location='Australiaast'New-AzoOperationingSightsWorkspace-ResourceGroupName$rgname-Name Azure Active Directory日志-location$location-SKU可用

将创建工作区。

创建loganalytics workspace.png

接下来,我们需要将日志放入我们的工作区。在Azure门户在下面Azure Active Directory= >监测= >诊断设置选择+添加诊断设置并配置工作区以获取符号日志AuditLogs.

API访问

为了通过API访问日志分析工作区,我们需要创建一个Azure AD应用程序并将其权限分配给日志分析API。我已经有了一个我用来查询审计日志的应用程序,所以我将日志分析添加到它中。

在Azure广告应用程序中选择添加权限= >我的组织使用的API类型日志分析= >选择日志分析API= >应用程序权限= >Data.Read= >添加权限

最后选择授予管理员同意(针对您的订阅)注意日志分析API端点的API URI(westus2.api.loganalytics.io版本)如下图所示。

API使用kql访问日志分析

在Azure AD应用程序的证书和机密下,创建一个客户端机密并记录该机密以在脚本中使用。

Azure广告应用程序机密.png

将日志分析工作区链接到Azure AD应用程序

在我们之前创建的日志分析工作区中,我们需要链接我们的Azure AD应用程序,以便它具有从日志分析中读取数据的权限。

在日志分析工作区上选择访问控制(我)= >添加= >角色=读者然后选择Azure广告应用程序=>节约

将日志分析工作区链接到Azure AD Application.PNG

实际上,当我遇到几个实例时,我返回并分配了对Azure AD应用程序的Log Analytics Reader访问权限InsufficientAccessError-提供的凭据没有足够的权限执行请求的操作

API使用kql访问日志分析-log analytics reader.png

工作区ID

为了通过REST API使用KQL查询日志分析,您需要您的日志分析工作区ID。在Azure Portal中搜索日志分析,然后选择您希望通过REST API查询的日志分析工作区,选择Properties并复制工作区ID。

用于rest api query.png的workspaceid

通过REST API查询日志分析

设置和配置完成后,我们现在可以通过RESTAPI查询日志分析。我在用我的OAuth2提出请求的快速启动方法。对于第一个身份验证请求,请使用获得阿祖里亚认证和授权申请的功能。随后的身份验证事件可以使用存储的刷新令牌来使用获取新令牌函数。下面的脚本包含oAuth AuthN/AuthZ进程的参数。

#函数函数获取authcode…}函数get azureauthn($resource)…}函数get newtokens…}#authn get azureauthn($resource)未来的调用只能使用get newtokens函数get newtokens刷新令牌。

要调用其余的API,我们使用之前得到的工作区ID,我们的日志分析API端点的URI,一个KQL查询,我们将其转换为JSON,然后我们可以调用它并获取数据。

$logAnalyticsWorkspace=“d03e10fc-d2a5-4c43-b128-a067efake”$logAnalyticsBaseuri=“https://westus2.api.logAnalytics.io/v1/workspaces”$logquery=“auditlogs”其中sourcesystem=`“azure ad`”|项目标识,生成时间,结果描述|限制50"$logQueryBody=@“查询”=$logquery convertto json$result=invoke restmethod-method post-uri“$($loganalyticsbaseuri)/$($loganalyticswarkspace)/查询”-headers@authorization=“持有人$($global:accesstoken)”;“内容类型”= "application/json"} -Body $logQueryBody

下面是一个示例脚本,在应用程序查询日志分析并将数据输出到CSV时对Azure进行身份验证。

总结

如果您需要使用KQL的功能以编程方式从日志分析获取数据,利用RESTAPI是一种很好的方法。使用一点PowerShell魔力,我们可以将结果数据输出到csv。如果您刚刚开始使用KQL查询这份文件是一个很好的开始。

将日志分析输出到csv.png

类别:
身份和访问管理, PowerShell, 安全性

留下一个回复

留下一个回复

订阅
通知
跟着我们!

克劳德解决方案博客-关注我们!