You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过日志查询或Az PowerShell命令获取访问Azure Key Vault的托管标识应用列表及指定时间段内的请求次数?

当然可以!下面我会分享两种实用方法,帮你获取向Azure Key Vault发起请求的托管标识列表,还能统计指定时间段内的请求次数——都是我日常运维里常用的手段:

方法一:Azure Monitor日志查询(最灵活,首推)

首先得确保你的Key Vault已经开启了诊断设置,把AuditEvent类别的日志推送到Log Analytics工作区。要是还没配置,直接去Key Vault的「诊断设置」页面,新增一个设置,目标选Log Analytics工作区,勾选AuditEvent就行。

配置好之后,直接在Log Analytics里运行下面的Kusto查询,就能拿到带请求次数的托管标识列表:

// 获取指定时间段内的托管标识请求统计
AuditEvent
| where TimeGenerated between (datetime(2024-01-01 00:00:00)..datetime(2024-01-31 23:59:59))
| where OperationName startswith "Vault" // 过滤Key Vault相关操作,可按需调整
| extend IdentityClientId = tostring(Identity.ClientId)
| extend IdentityDisplayName = tostring(Identity.DisplayName)
| where IdentityClientId != "" // 只保留托管标识发起的请求
| summarize RequestCount = count() by IdentityClientId, IdentityDisplayName
| sort by RequestCount desc

这里可以根据你的需求灵活修改:

  • 把TimeGenerated里的时间区间换成你需要的时间段
  • 要是只想看特定操作(比如读取密钥),就把OperationName startswith "Vault"改成OperationName == "Get Key"
  • 结果会按请求次数从多到少排序,清晰看到哪个标识访问最频繁

如果只需要所有唯一的托管标识列表,简化查询即可:

AuditEvent
| where TimeGenerated between (datetime(2024-01-01)..datetime(2024-01-31))
| extend IdentityClientId = tostring(Identity.ClientId)
| extend IdentityDisplayName = tostring(Identity.DisplayName)
| where IdentityClientId != ""
| distinct IdentityClientId, IdentityDisplayName
方法二:Az PowerShell命令

要是你习惯用PowerShell自动化操作,也可以通过调用Log Analytics查询来获取结果,步骤如下:

  1. 先确认Key Vault的诊断设置是否正确配置:
Get-AzKeyVaultDiagnosticSetting -ResourceGroupName "你的资源组名称" -VaultName "你的Key Vault名称"
  1. 准备查询参数,执行查询:
# 替换成你的Log Analytics工作区ID
$workspaceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# 自定义查询语句,可按需修改时间段和过滤条件
$query = @"
AuditEvent
| where TimeGenerated between (datetime(2024-01-01)..datetime(2024-01-31))
| extend IdentityClientId = tostring(Identity.ClientId)
| extend IdentityDisplayName = tostring(Identity.DisplayName)
| where IdentityClientId != ""
| summarize RequestCount = count() by IdentityClientId, IdentityDisplayName
| sort by RequestCount desc
"@

# 执行查询并输出格式化结果
$result = Invoke-AzOperationalInsightsQuery -WorkspaceId $workspaceId -Query $query
$result.Results | Format-Table IdentityClientId, IdentityDisplayName, RequestCount -AutoSize

运行后就能在PowerShell窗口直接看到规整的统计结果了。

最后提醒一句:如果你的Key Vault还没开启诊断日志,得先完成这一步,不然是拿不到历史请求数据的哦!

内容的提问来源于stack exchange,提问作者psycho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 07:14:06