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

基于Google Artifact Registry与Jenkins阻止高危/严重漏洞容器部署

最佳实现方案

前提条件

  • 已为Google Artifact Registry中的目标容器仓库启用漏洞扫描功能(默认新仓库自动启用,旧仓库需手动开启)。
  • Jenkins服务器已配置GCP服务账号权限,允许调用Artifact Registry的漏洞扫描API(需包含artifactregistry.repositories.listVulnerabilities权限)。

实现步骤

1. 完成GCP身份验证

在流水线执行漏洞检查前,先通过服务账号完成GCP身份认证:

stage('Authenticate to GCP') {
    steps {
        script {
            withCredentials([file(credentialsId: 'gcp-service-account-key', variable: 'GCP_KEY_FILE')]) {
                sh 'gcloud auth activate-service-account --key-file=${GCP_KEY_FILE}'
                sh 'gcloud config set project YOUR_GCP_PROJECT_ID'
            }
        }
    }
}

2. 检查镜像高危/严重漏洞

使用gcloud命令查询指定镜像的漏洞信息,筛选出高危(HIGH)和严重(CRITICAL)级别的漏洞,若存在则终止流水线:

stage('Check Critical Vulnerabilities') {
    steps {
        script {
            def imageFullPath = 'us-central1-docker.pkg.dev/YOUR_PROJECT/YOUR_REPO/YOUR_IMAGE:YOUR_TAG'
            // 获取高危/严重漏洞ID列表
            def highRiskVulns = sh(
                script: "gcloud artifacts docker images list-vulnerabilities ${imageFullPath} --filter='severity=(HIGH,CRITICAL)' --format='value(vulnerability.id)'",
                returnStdout: true
            ).trim()
            
            if (highRiskVulns) {
                echo "发现高危/严重漏洞:${highRiskVulns}"
                error "存在高危或严重级别漏洞,终止部署"
            } else {
                echo "未检测到高危/严重级别漏洞,继续部署流程"
            }
        }
    }
}

3. 嵌入流水线流程

将上述漏洞检查步骤放在镜像推送完成后、K8s部署步骤之前,确保只有通过安全校验的镜像才能进入部署阶段。

额外优化建议

  • 缓存扫描结果:同一镜像标签重复构建时,可跳过重复扫描以提升效率。
  • 漏洞白名单:对已知且无法修复的低影响高危漏洞,可通过--filter排除特定漏洞ID,避免误拦截。
  • 保存审计报告:将完整漏洞扫描结果保存为Jenkins构建产物,方便后续安全审计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:15:47