如何通过日志查询或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查询来获取结果,步骤如下:
- 先确认Key Vault的诊断设置是否正确配置:
Get-AzKeyVaultDiagnosticSetting -ResourceGroupName "你的资源组名称" -VaultName "你的Key Vault名称"
- 准备查询参数,执行查询:
# 替换成你的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
相关产品推荐
相关产品推荐

