容器镜像签名验证
插件简介
容器镜像签名验证插件(swr-cosign)提供镜像验签功能,可以对镜像文件进行数字签名验证,以确保镜像文件的完整性和真实性,有效地防止软件被篡改或植入恶意代码,保障用户的安全。
约束与限制
- 使用镜像验签功能依赖容器镜像仓库企业版,请先创建一个企业版仓库。
安装插件
- 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到容器镜像签名验证,单击“安装”。
- 在安装插件页面,根据需求选择“规格配置”。
- 选择“系统预置规格”时,您可根据集群规模选择“小规格”或“大规格”,系统会根据不同的预置规格配置插件的实例数及资源配额,具体配置值请以控制台显示为准。
“小规格”为单实例部署,适用于并发下载不同镜像数量小于50的集群;“大规格”为双实例部署,具有高可用能力,适用于并发下载不同镜像数量小于300的集群。
- 选择“自定义规格”时,您可根据需求调整插件实例数和资源配额。实例数为1时插件不具备高可用能力,当插件实例所在节点异常时可能导致插件功能无法正常使用,请谨慎选择。
- 选择“系统预置规格”时,您可根据集群规模选择“小规格”或“大规格”,系统会根据不同的预置规格配置插件的实例数及资源配额,具体配置值请以控制台显示为准。
- 设置插件支持的“参数配置”。
表1 swr-cosign插件参数配置 参数
参数说明
KMS密钥
选择一个密钥,仅支持 EC_P256、EC_P384、SM2 类型的密钥。
您可以前往密钥管理服务新增密钥。
验签镜像
验签镜像地址通过正则表达式进行匹配,例如填写docker.io/**表示对docker.io镜像仓库的镜像进行验签。如需对所有镜像验签,请填写**。
- 单击“安装”。
待插件安装完成后,选择对应的集群,然后单击左侧导航栏的“插件中心”,可筛选“已安装插件”查看相应的插件。
组件说明
容器组件 |
说明 |
资源类型 |
---|---|---|
swr-cosign |
swr-cosign负责对镜像文件进行数字签名验证,以保证镜像文件未被篡改。 |
Deployment |
使用说明
- 参考安装插件中的步骤,在集群中安装插件,并设置KMS密钥和验签镜像地址。
- 为需要标签的命名空间加上标签。
- 在集群控制台左侧导航栏单击“命名空间”。
- 找到需要验签的命名空间,单击操作列的“更多>标签管理”。
- 新增一个标签,键值填写如下:
- 键:policy.sigstore.dev/include
- 值:true
- 单击“确定”。
- 测试镜像验签功能是否生效。
- 在集群控制台左侧导航栏单击“工作负载”。
- 单击右上角“创建工作负载”。
- 选择已添加标签的命名空间,并填写未经签名的镜像地址,其余参数请参考创建无状态负载(Deployment)按需填写。
- 单击“创建工作负载”。
未经签名的镜像将被拦截,提示如下:
admission webhook "policy.sigstore.dev" denied the request: validation failed: failed policy: cip-key-secret-match: spec.template.spec.containers[0].image ...
- 为镜像添加签名。
- 登录SWR企业仓库,进入一个已有的仓库实例。
- 在左侧导航栏中单击“安全可信>镜像签名”,创建一个签名规则。
- 规则名称:为签名规则命名。
- 组织:选择一个容器镜像组织。
- 规则范围:
- 镜像:选择需要签名的镜像。您也可以通过正则表达式匹配多个镜像。
- 版本:选择镜像版本,若不填或填写**则表示匹配该镜像的所有版本。
- 签名方式:选择KMS方式。
- 签名Key:选择一个KMS密钥,该密钥需要与安装插件时的密钥相同。
- 触发模式:
- 手动:创建完成签名规则后,需要手动执行规则来对镜像进行签名。
- 事件触发+手动:可通过事件触发签名动作,也可以手动执行规则对镜像进行签名。
- 规则描述:填写规则的描述信息。
- 签名规则创建完成后,单击操作列的“执行”,对所选镜像进行签名。
- 签名成功后,在左侧导航栏中单击“制品仓库>镜像仓库”,单击该镜像名称查看镜像详情。该镜像已存在签名附件。
- 重新回到CCE控制台,使用该镜像创建工作负载,创建测试镜像是否可以成功创建。
版本记录
插件版本 |
支持的集群版本 |
更新特性 |
---|---|---|
1.0.2 |
v1.23 v1.25 v1.27 |
支持v1.27集群 |
1.0.1 |
v1.23 v1.25 |
支持镜像验签 |