更新时间:2025-09-04 GMT+08:00
分享

镜像签名

操作场景

容器镜像服务企业版支持使用数据加密服务(DEW)中创建的密钥对镜像进行签名,保障镜像分发部署过程中的一致性,避免中间人攻击和非法镜像更新及运行。支持命名空间级别的自动镜像签名,容器镜像上传后都会根据签名规则自动签名。在使用镜像签名功能时,请先在数据加密服务(DEW)中创建非对称密钥,然后创建签名规则,设置参数。之后根据规则设置的触发模式完成手动或者自动签名。

约束与限制

  • 镜像验签功能仅支持V1.23及以上集群版本
  • 当前支持密钥算法类型见表1
  • 单个仓库最多同时支持100000 tag,单个仓库的签名速度为1分钟300个tag本;验签插件安装后,验签速度为1分钟300个镜像版本。

创建非对称密钥

  1. 登录数据加密服务控制台。
  2. 在左侧导航栏选择“密钥管理”,单击右上角的“创建密钥”
  3. “创建密钥”对话框中配置参数,然后单击“确定”

    镜像签名功能需要非对称密钥算法的支持,创建密钥时,密钥算法需选择ECC或SM2类型,密钥用途选择SIGN_VERIFY,详情请见表1。其他参数根据需要进行配置。详细配置可参见创建密钥

    表1 容器镜像服务支持的密钥算法类型

    密钥类型

    算法类型

    密钥规格

    说明

    用途

    非对称密钥

    ECC

    • EC_P256
      • ECDSA_SHA_256
    • EC_P384
      • ECDSA_SHA_384

    椭圆曲线密码,使用NIST推荐的椭圆曲线

    数字签名

    非对称密钥

    SM2

    SM2

    国密SM2非对称密钥

    小量数据的加解密或数字签名。

创建签名规则

  1. 登录容器镜像服务控制台,在页面左上角切换Region到您所在的Region。然后单击仓库名称进入仓库详情页面。
  2. 在左侧导航栏选择“ 镜像签名”
  3. 在右上角单击“创建签名规则”
  4. 填写具体规则。

    表2 参数说明

    参数名称

    说明

    示例

    规则名称

    镜像签名规则的名称。

    SignatureRule

    命名空间

    选择要签名的镜像所在的命名空间。

    library

    规则范围

    镜像:镜像名称,默认使用正则表达式。单击可手动选择镜像。

    正则表达式规则可填写如nginx-*、{repo1, repo2} 等,其中:

    • *:匹配不包含路径分隔符“/”的任何字段。
    • **:匹配包含路径分隔符“/”的任何字段。
    • ?:匹配任何单个非“/”的字符。
    • {选项1, 选项2, ...}:同时匹配多个选项。匹配上其中一个即可。

    版本:镜像的版本,同样使用正则表达式,匹配规则与镜像名称相同。

    nginx-*:表示匹配“nginx-”开头的镜像。

    签名方式

    当前支持使用KMS签名。

    KMS

    签名Key

    选择在创建非对称密钥中创建的密钥。请注意以下几点:

    • 非支持算法的无法选择;
    • 密钥用途非SIGN_VERIFY的无法选择;
    • 密钥状态非“启用”的无法选择

    key1

    触发模式

    • 手动:手动触发,规则创建完成后需要您手动单击执行。
    • 事件触发 + 手动:事件触发指当有新镜像上传到仓库且符合匹配规则时触发镜像签名。

    事件触发 + 手动

    规则描述

    规则的描述信息。

    -

    图1 创建签名规则

  5. 单击“确定”完成规则创建。

签名功能生效验证

登录容器镜像服务SWR控制台,进入“企业版”,单击仓库名称进入仓库实例,单击“镜像签名”创建签名规则并执行。执行成功之后进入“镜像仓库”,查看镜像签名选择的镜像可以发现“镜像制品”下面的存在附件,该附件即该镜像的签名文件。

相关文档