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

如何配置Trivy对OpenShift内部镜像仓库的认证以完成镜像扫描?

Trivy扫描OpenShift内部镜像仓库认证问题解决方案

问题场景

流水线中使用Trivy扫描镜像,此前运行正常,近期需要扫描OpenShift内部镜像仓库的ImageStream镜像,执行扫描命令后出现认证失败报错,关键错误信息:

GET https://openshiftregistry/v2/namespace/imagestream/manifests/tag: UNAUTHORIZED: authentication required; [map[Action:pull Class: Name:namespace/imagestream Type:repository]]

同时提示本地容器runtime(Docker/Podman/containerd)不可用。

当前使用的Trivy命令:

trivy image --ignore-unfixed --format template --template "path for output" --output trivy_image_report.html --skip-update --offline-scan $image

解决方案

Trivy支持读取Docker格式的认证配置文件访问私有镜像仓库,OpenShift内部仓库的认证可通过以下步骤配置:

1. 生成Docker认证配置文件

OpenShift内部镜像仓库依赖OAuth2 token认证,可通过两种方式生成认证文件:

  • 流水线内自动获取(推荐):若流水线运行在OpenShift集群内,默认ServiceAccount具备镜像拉取权限,直接用其token生成配置:
    # 替换为你的OpenShift镜像仓库地址,例如 openshift-registry.default.svc:5000
    REGISTRY="openshiftregistry"
    # 读取ServiceAccount token
    TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
    # 生成临时Docker配置文件
    cat > /tmp/docker-config.json <<EOF
    {
      "auths": {
        "$REGISTRY": {
          "auth": "$(echo -n "oauth2accesstoken:$TOKEN" | base64 -w 0)"
        }
      }
    }
    EOF
    
  • 手动登录生成:若在外部环境执行,先通过oc login登录OpenShift集群,此时~/.docker/config.json会自动添加对应仓库的认证条目,直接复用该文件即可。

2. 让Trivy读取认证配置

设置环境变量指定Docker配置文件路径,Trivy会自动加载其中的认证信息:

export DOCKER_CONFIG=/tmp

3. 优化扫描命令(解决容器runtime不可用问题)

报错提示本地容器daemon不可用,添加--remote参数可强制Trivy通过HTTP/HTTPS直接拉取镜像,不依赖本地容器runtime:

trivy image --remote --ignore-unfixed --format template --template "path for output" --output trivy_image_report.html --skip-update --offline-scan $image

额外注意事项

  • 确保$image变量是OpenShift内部仓库的完整镜像路径,例如openshift-registry.default.svc:5000/your-namespace/your-imagestream:your-tag,而非仅ImageStream名称。
  • 离线扫描模式下,需提前确保Trivy已下载对应镜像的漏洞数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:35:15