容器镜像服务ACR(Alibaba Cloud Container Registry)支持镜像加签功能,保障镜像从分发到部署的全链路一致性,避免中间人攻击和非法镜像的更新及运行。ACR支持命名空间级别的自动加签,每次推送容器镜像后都会匹配加签规则自动加签,保障您的容器镜像内容可信。

前提条件

创建非对称密钥

  1. 密钥管理服务控制
  2. 在页面左上角的地域下拉列表,选择密钥所在的地域。
  3. 在控制台左侧导航栏,单击用户主密钥,然后单击创建密钥
  4. 创建密钥对话框配置参数,然后单击确定
    容器签名功能需要非对称密钥算法的支持,创建KMS密钥时,密钥类型需选择EC或RSA,密钥用途需选择SIGN或VERIFY。其他参数配置请参见 创建密钥

授权容器镜像服务使用KMS密钥

为了让ACR可以读取到您账号下的非对称密钥,需要在您的账号上配置以下RAM策略。

  1. 登录RAM控制台
  2. 在控制台左侧导航栏中选择 RAM角色管理
  3. RAM角色管理页面创建AliyunContainerRegistryKMSRole角色。
    1. RAM角色管理页面单击创建RAM角色
    2. 选择类型配置向导中选择当前可信实体类型,然后单击下一步
    3. 配置角色中设置角色名称为AliyunContainerRegistryKMSRole,并选择云账号,然后单击完成
  4. 修改信任策略。
    1. RAM角色管理页面找到AliyunContainerRegistryKMSRole,单击RAM角色名称列下的AliyunContainerRegistryKMSRole。
    2. 单击信任策略管理页签,然后单击修改信任策略
    3. 修改信任策略面板修改信任策略,然后单击确定
      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "cr.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
  5. 新建AliyunContainerRegistryKMSRolePolicy策略。
    1. 在控制台左侧导航栏中,单击权限策略管理
    2. 权限策略管理页面单击创建权限策略
    3. 新建自定义权限策略页面设置策略名称为AliyunContainerRegistryKMSRolePolicy,配置模式脚本配置,在文本框中输入策略内容,然后单击确定
      说明 您需要根据实际情况替换 regionaccountid
      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "kms:*"
                  ],
                  "Resource": "acs:kms:${region}:${accountid}:*"
              }
          ],
          "Version": "1"
      }
  6. 在左侧导航栏中,选择 RAM角色管理,在角色列表中,找到AliyunContainerRegistryKMSRole 角色。
  7. 单击右侧操作列中的添加权限
  8. 在权限类型中选择自定义策略,找到并选择AliyunContainerRegistryKMSRolePolicy ,单击确定,完成添加。给RAM角色添加权限

配置证明者及验签策略

  1. 登录云安全中心
  2. 在云安全中心控制台,选择左侧操作栏中的安全防范 > 容器签名,创建证明者并关联相应的KMS密钥,用于容器镜像加签。
  3. 可选:新增验签策略,将证明者关联到对应的ACK集群。更多信息,请参见容器签名

配置镜像自动加签规则

  1. 登录容器镜像服务控制台
  2. 在顶部菜单栏,选择所需地域。
  3. 在左侧导航栏,选择实例列表
  4. 实例列表页面单击目标企业版实例。
  5. 在企业版实例管理页面左侧导航栏选择安全可信 > 镜像加签。单击添加加签规则
  6. 密钥配置的配置向导中选择在安全中心创建的证明者关联KMS Key。然后单击下一步
  7. 加签配置的配置向导中设置参数,然后单击创建加签规则
    说明 设置加签规则仅对该命名空间下所有新上传的镜像进行加签操作,存量的镜像不做加签操作。
    加签类型:
    • 默认:加签范围有镜像Digest和镜像版本信息,默认模式适用于当前实例下镜像数据的验签。
    • 极简:加签范围仅有镜像Digest部分,不依赖镜像版本的信息。极简模式适用于跨实例镜像同步场景,镜像版本会变更时对应镜像数据的验签。
    • 加签算法:提供两种可选加签算法RSA_PSS_SHA_256或者RSA_PKCS1_SHA_256
    • 加签范围:目前支持命名空间级别自动加签,选择需要自动加签的命名空间。
    • 触发方式:默认支持自动触发,每次推送镜像后,会自动触发加签。

镜像验签

关于镜像验签请参见使用kritis-validation-hook进行容器镜像签名验证

说明
  • 支持在容器服务Kubernetes版集群中使用组件进行自动验签,设置相应策略在验签失败时阻断镜像部署,推荐此方法。
  • 支持客户基于密钥管理中心验签功能、容器镜像服务镜像签名数据自行验签。