如何获取Azure Artifact Feed包下载者的用户详情及IP地址?
获取Azure Artifacts Feed包下载的用户及IP详情
方法1:Azure Monitor日志查询
- 先确认Azure DevOps组织已开启诊断设置,将
Package类别的日志发送到Log Analytics工作区。未配置的话,前往组织设置的「诊断」页面完成配置。 - 进入Log Analytics工作区,用Kusto查询提取下载记录:
AzureDevOpsPackageEvents | where OperationName == "PackageDownload" | project TimeGenerated, UserName, UserId, IpAddress, PackageId, PackageVersion, FeedName | sort by TimeGenerated desc - 查询结果可直接导出为CSV或表格,包含下载时间、用户信息、IP地址、包及Feed详情。
方法2:Azure DevOps审计日志REST API
之前端点无效大概率是选错了接口,正确的包下载事件需调用审计日志API:
- 端点格式:
GET https://auditservice.dev.azure.com/{organization}/_apis/audit/auditlog?api-version=7.1-preview.1&category=PackageManagement - 可添加过滤参数(如指定Feed ID或操作类型
PackageDownload),响应中会包含actor(用户信息)和ipAddress字段。 - PowerShell调用示例:
$orgName = "你的组织名" $patToken = "具备Audit Logs读取权限的PAT令牌" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($patToken)")) $response = Invoke-RestMethod -Uri "https://auditservice.dev.azure.com/$orgName/_apis/audit/auditlog?api-version=7.1-preview.1&category=PackageManagement" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Get $downloadEvents = $response.value | Where-Object { $_.operationName -eq "PackageDownload" } $downloadEvents | Select-Object @{Name="时间";Expression={$_.activityDate}}, @{Name="用户名";Expression={$_.actor.displayName}}, @{Name="IP地址";Expression={$_.ipAddress}}, @{Name="包ID";Expression={$_.details.PackageId}}, @{Name="Feed名称";Expression={$_.details.FeedName}}
方法3:Azure DevOps门户直接查看
- 登录Azure DevOps组织,进入组织设置 -> 审计页面。
- 筛选器中选择「类别」为
Package Management、「操作」为PackageDownload,即可查看所有包下载记录,支持导出为CSV。
注意事项
- 需具备组织管理员权限或
Audit Logs Reader角色,才能访问审计日志及相关API。 - 审计日志默认保留90天,如需更长存储周期,需配置诊断设置将日志归档至存储账户。
内容的提问来源于stack exchange,提问作者Codingnewbie
相关产品推荐
相关产品推荐

