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

如何用REST API生成XRay漏洞报告并筛选最新镜像?

解决方案:筛选XRay漏洞报告中各文件夹的最新版本镜像

XRay的漏洞报告API本身没有直接筛选“文件夹下最新版本镜像”的参数,需要分两步实现:先通过Artifactory API获取每个文件夹下的最新镜像标签,再将这些指定镜像作为资源传入报告请求。

步骤1:获取每个文件夹的最新镜像标签

利用Artifactory的Docker仓库标签列表API,逐个查询每个文件夹(镜像仓库名)的所有标签,筛选出最新版本。

单个文件夹查询示例

以folder1为例,执行以下命令获取其所有标签并提取最新版本(假设版本号为递增的versionX格式):

curl -u <user>:<password> https://artifactory.<org>/api/docker/docker-prod-local/v2/folder1/tags/list | jq -r '.tags | sort | last'

返回结果即为folder1下的最新版本(如version3)。

批量遍历所有文件夹(脚本示例)

如果文件夹数量较多,可以用shell脚本自动遍历并收集所有最新镜像:

#!/bin/bash
USER="<user>"
PASSWORD="<password>"
ARTIFACTORY_URL="https://artifactory.<org>"
REPO="docker-prod-local"
FOLDERS=("folder1" "folder2" "folder3")

# 初始化镜像列表
IMAGE_LIST=()

for FOLDER in "${FOLDERS[@]}"; do
    # 获取该文件夹的最新tag
    LATEST_TAG=$(curl -u "$USER:$PASSWORD" "$ARTIFACTORY_URL/api/docker/$REPO/v2/$FOLDER/tags/list" | jq -r '.tags | sort | last')
    # 拼接完整镜像路径
    IMAGE_LIST+=("\"$REPO/$FOLDER:$LATEST_TAG\"")
done

# 生成report.json内容
cat > report-latest.json << EOF
{
    "name": "docker-prod-local-latest-versions",
    "resources": {
        "dockerImages": [
            $(IFS=, ; echo "${IMAGE_LIST[*]}")
        ]
    },
    "filters": {
        "severities": [
            "Critical",
            "High"
        ]
    }
}
EOF

步骤2:用指定镜像生成XRay漏洞报告

使用修改后的report-latest.json(包含所有文件夹的最新镜像)执行原curl命令:

curl -u <user>:<password> https://artifactory.<org>/xray/api/v1/reports/vulnerabilities -H 'Content-Type: application/json' -d @report-latest.json

注意事项

  • 如果你的版本号是语义化版本(如v1.2.3),需要调整排序逻辑,可使用jq的sort_by结合版本号解析函数来正确排序。
  • 确保你的Artifactory账号拥有docker-prod-local仓库的读取权限,以及XRay报告的生成权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:42:43