CI/CD接入

最近更新时间:2025-11-11 11:37:42

我的收藏

功能概述

容器安全服务 CI/CD 接入功能可以将镜像安全扫描集成到您的 CI/CD 流程中,该功能可在项目构建阶段对生成的镜像进行深度安全检测,识别潜在风险并给出可操作的修复建议,从而实现安全漏洞的早期发现与修复,有效降低软件供应链安全风险。

技术原理

CI/CD 镜像扫描无需将镜像资产同步到容器安全服务,仅需要将 CI/CD 镜像扫描插件集成到 Jenkins 或 GitHub 的项目构建任务中。当您在 Jenkins 工具或 GitHub 中构建项目时,会同时触发镜像安全扫描任务,扫描指定镜像中是否存在安全风险。扫描结果统一在仓库镜像页面中展示,便于查看和处理镜像中存在的安全风险。

适用场景

本功能适用于以下常见的 CI/CD 环境:

使用限制

CI/CD 镜像安全扫描每个镜像消耗一次扫描次数,重复扫描将重复消耗,需确保扫描次数充足。

配置要求

为保障扫描性能,请确保您的 CI/CD 扫描服务器满足以下最低配置要求:
配置项
最低配置
推荐配置
CPU
1核
4核
内存
2 GB
8 GB
硬盘
60 GB
100 GB
网络
可访问公网,能够连通腾讯云公开 CCR。
可访问公网,上行带宽 ≥ 10 Mbps,能够稳定连通腾讯云服务端点。

操作步骤

获取接入 Token

1. 登录 容器安全控制台,进入策略管理 > CI/CD接入
2. 在 CI/CD 接入页面,单击生成接入Token

3. 输入 CI/CD 名称,选择扫描结果存储时长,单击创建Token,系统会生成一个 64 位字符的 Token 到 CI/CD 接入列表中,后续可复制该 Token 配置到 Jenkins 或 GitHub 中。


集成插件

在 Jenkins 或 GitHub 中集成腾讯云 CI/CD 镜像扫描插件。
Jenkins-Freestyle 模式
Jenkins-Pipeline 模式
GitHub Actions 模式

Jenkins 版本要求

Jenkins 版本要求:1.625.3及以上版本。

下载插件

1. 登录容器安全控制台,进入 策略管理 > CI/CD接入
2. 在 CI/CD 接入页面,单击右上角显示功能使用说明,单击下载 Jenkins 插件,容器安全服务的 CI/CD 镜像扫描插件会以 hpi 格式下载到本地,插件名称为cicd-scanner.hpi。

部署插件

1. 登录 Jenkins 工具,进入管理 Jenkins > 系统配置 > 插件

2. 在插件页面,单击高级设置,在部署插件区域,单击选择文件,上传已下载到本地的 Jenkins 插件,单击部署

3. 安装完成后,可在已安装插件标签页中确认插件是否成功安装。
4. 插件安装完成后,需要重启 Jenkins 服务才能生效。
5. 登录 Jenkins 工具,定位到要配置镜像安全扫描的项目,单击 Jenkins-Freestyle 模式的项目名称
6. 在左侧导航栏,单击配置,在 Build Steps 区域,单击增加构建步骤,下拉菜单选中 CI/CD Scanner(Tencent)。在 CI/CD Scanner(Tencent) 区域配置接入 Token 和期望扫描的镜像 ID,具体参数配置请参见 配置参数,单击保存,完成 CI/CD 插件与 Jenkins 模式的集成。

1. 登录 Jenkins 工具。
2. 定位到要配置镜像安全扫描的项目,单击 Jenkins-Pipeline 模式的项目名称
3. 在左侧导航栏,单击配置
4. 在流水线区域,完成和 Jenkins-Freestyle 模式一样的配置,具体参数配置请参见 配置参数,以下为您提供了 Jenkinsfile 的声明式和脚本化的流水线语法样例作为参考,您可以选择一种语法样例完成配置。
脚本式 Pipeline 样例
node {
stage('Run docker') {
// 单行 docker 命令
sh 'docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --network=host ccr.ccs.tencentyun.com/yunjing_agent/cicdscanner:latest --token=$token --imageId=$imageId'
}
}
声明式 Pipeline 样例
pipeline {
agent any
environment {
IMAGE_ID = '$IMAGE'
TOKEN = '$TOKEN'
REGISTRY_URL = null
REGISTRY_USERNAME = null
REGISTRY_PWD = null
}
stages {
stage('Run docker') {
steps {
sh 'docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --network=host ccr.ccs.tencentyun.com/yunjing_agent/cicdscanner:latest --token=env.TOKEN --imageId=env.IMAGE_ID'
}
}
}
}
非 Jenkins 流水线工具均可参考 GitHub Actions 模式接入指引,此处以 GitHub Actions 模式为例。
1. 登录 GitHub,单击右上角头像,在下拉菜单中选中 Repositories
2. 在 Repositories 页签下,单击您要集成 CI/CD 插件的 repository
3. 单击 Actions 页签,在 All workflows 列表中,定位到要集成 CI/CD 插件的 workflows 流水线文件,单击其 Actor 列的···,在下拉菜单中,选择 View workflow file
4. 在 Workflow file for this run 中按照以下样例中 Scan image by cicd-scanner 步骤进行镜像扫描配置,将 ${{ secrets.CICD_TOKEN }} 替换成生成的 token,${{ env.REPO_TAG }} 替换为期望扫描的镜像,具体参数配置请参见 配置参数
name: Docker build and scan security issue by cicd-scanner

on:
push:
branches: [main]
pull_request:
branches: [main]

env:
REPO_TAG: "your_docker_image_repo:your_docker_image_tag"

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Build the Docker image
run: docker build . --file Dockerfile --tag ${{ env.REPO_TAG }}

- name: Scan image by cicd-scanner
run: |
docker run --rm \\
-v /var/run/docker.sock:/var/run/docker.sock \\
--network=host \\
ccr.ccs.tencentyun.com/yunjing_agent/cicdscanner:latest \\
--token=${{ secrets.CICD_TOKEN }} \\
--imageId=${{ env.REPO_TAG }}

配置参数

在 Jenkins 或 GitHub 中配置扫描参数,请参考下表:
参数
必/选填
说明
本地镜像示例
仓库镜像示例
Token
*必填
容器安全服务 CI/CD镜像扫描插件的接入Token。
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
imageId
*必填
输入需要扫描的镜像 ID 或imageName:imageTag,如果是仓库镜像,也可填写完整的 URL。
7cc39f89fa58 或 ubuntu:21.04
xxxx.tencentcloudcr.com/tcss/mybuild:v1 或 mybuild:v1
registryUrl
选填
镜像仓的 URL。
/
xxxx.tencentcloudcr.com/tcss
registryUsername
选填
镜像仓登录用户名。
/
admin
registryPwd
选填
镜像仓登录密码。
/
password
说明:
当扫描远程仓库镜像时,registryUrl、registryUsername、registryPwd 参数必填。

执行扫描

集成配置完成后,您在构建项目时,会同步执行镜像安全扫描任务,扫描您项目的镜像是否存在安全风险。

查看结果

1. 登录容器安全控制台,进入策略管理 > CI/CD接入
2. 在 CI/CD 接入列表中,针对您关注的 Token,单击查看镜像风险,即可跳转到仓库镜像页面查看指定Token的镜像扫描结果。


3. 在仓库镜像页面中,可取消实例名称(此处指CI/CD名称)的搜索过滤,查看所有 CI/CD 的镜像扫描结果。
4. 定位到存在安全风险的镜像,单击详情,进入镜像详情页面,查看该镜像中存在的安全漏洞、木马病毒、风险信息。