sonatype/nexus-iq-clinexus-iq-cli是基于Sonatype IQ CLI的Docker镜像,用于对挂载工作区中的文件执行组件智能评估。该镜像通过与Sonatype IQ Server交互,实现组件策略合规性检查,并生成评估报告。主要用途包括组件安全扫描、策略评估及合规性验证,支持集成到CI/CD流程中实现自动化检查。
bashdocker run sonatype/nexus-iq-cli /sonatype/evaluate [选项] <待扫描文件或目录>
将主机mycontent目录挂载为容器/target,评估结果输出到主机myresults目录:
bashdocker run -v mycontent:/target -v myresults:/sonatype/reports sonatype/nexus-iq-cli /sonatype/evaluate \ -s [***] \ -a user:password \ -i WEBAPP \ /target/our-web-app.war
若目标路径包含空格,需使用单引号包裹并转义空格:
bashdocker run ... '/target\ folder/our-web-app.war'
| 选项 | 描述 | 示例 |
|---|---|---|
-s, --server-url <http[s]://...> | IQ Server的URL地址 | -s [***] |
-a, --authentication <username:password> | IQ Server认证凭据 | -a admin:password123 |
-i, --application-id <app ID> | IQ Server上的应用公开ID | -i MY-WEB-APP |
| 选项 | 描述 | 默认值 | 示例 |
|---|---|---|---|
-t, --stage <stage> | 分析阶段,可选值:develop、source、build、stage-release、release、operate | build | -t release |
-O, --organization-id <organization ID> | IQ Server组织ID(用于自动创建应用) | 无 | -O ORG123 |
-r, --result-file </path/to/file.json> | 策略评估结果JSON文件路径 | 无 | -r /sonatype/reports/result.json |
-w, --fail-on-policy-warnings | 策略警告时触发失败 | false | -w |
-e, --ignore-system-errors | 忽略系统错误(IO、网络等) | false | -e |
-E, --ignore-scanning-errors | 忽略扫描错误(损坏文件等) | false | -E |
-p, --proxy <host[:port]> | 代理服务器地址 | 无 | -p proxy.example.com:8080 |
-U, --proxy-user <username:password> | 代理服务器认证凭据 | 无 | -U proxyuser:proxypass |
-X, --debug | 启用调试日志(可能泄露敏感信息) | false | -X |
-h, --help | 显示帮助信息 | false | -h |
-ra, --reachability | 运行可达性分析 | 无 | -ra |
-rn, --reachability-namespaces <namespace> | 指定可达性分析命名空间(可多次指定) | 无 | -rn com.example -rn org.springframework |
通过设置GIT_DIR环境变量,可收集Git信息(提交哈希、仓库URL)并发送至IQ Server。需确保挂载的工作区包含.git目录。
示例:
bashdocker run --env GIT_DIR=/target/.git -v $(pwd):/target sonatype/nexus-iq-cli /sonatype/evaluate \ -s [***] \ -a user:password \ -i iq-application \ '/target/**/*.jar'
支持扫描本地Docker镜像或远程仓库镜像(公共/私有),需挂载Docker守护进程套接字(/var/run/docker.sock)。
| 环境变量 | 描述 | 适用场景 |
|---|---|---|
NEXUS_CONTAINER_IMAGE_REGISTRY_USER | 私有镜像仓库用户名 | 扫描私有仓库镜像时 |
NEXUS_CONTAINER_IMAGE_REGISTRY_PASSWORD | 私有镜像仓库密码 | 扫描私有仓库镜像时 |
扫描本地Docker镜像
bashdocker run --rm \ -v ~/sonatype/reports:/sonatype/reports \ -v /var/run/docker.sock:/var/run/docker.sock \ sonatype/nexus-iq-cli /sonatype/evaluate \ -s [***] \ -a user:password \ -i app-name \ container:alpine:3.6
扫描远程私有镜像
bashdocker run --rm \ -v ~/sonatype/reports:/sonatype/reports \ -v /var/run/docker.sock:/var/run/docker.sock \ -e NEXUS_CONTAINER_IMAGE_REGISTRY_USER=registry-user \ -e NEXUS_CONTAINER_IMAGE_REGISTRY_PASSWORD=registry-pass \ sonatype/nexus-iq-cli /sonatype/evaluate \ -s [***] \ -a user:password \ -i app-name \ container:[***]
需额外挂载/tmp目录:
bashdocker run --rm \ -v ~/sonatype/reports:/sonatype/reports \ -v /tmp:/tmp \ -v /var/run/docker.sock:/var/run/docker.sock \ sonatype/nexus-iq-cli /sonatype/evaluate \ -s [***] \ -a user:password \ -i app-name \ container:alpine:3.6
自定义挂载路径可通过NEXUS_CONTAINER_SCANNING_MOUNT_PATH环境变量配置:
bashdocker run --rm \ -e NEXUS_CONTAINER_SCANNING_MOUNT_PATH=/custom/tmp \ -v /custom/tmp:/custom/tmp \ ...
注意:Docker镜像扫描功能暂不支持Windows系统。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务