使用容器镜像加签

为了避免中间人攻击和非法镜像的更新及运行,ACR支持命名空间级别的自动加签,每次推送容器镜像后都会匹配加签规则自动加签,保障镜像从分发到部署的全链路一致性。

前提条件

创建非对称密钥

  1. 密钥管理服务控制台

  2. 在页面左上角的地域下拉列表,选择密钥所在的地域。

  3. 在控制台左侧导航栏,单击用户主密钥,然后单击创建密钥

  4. 创建密钥对话框配置参数,然后单击确定

    容器签名功能需要非对称密钥算法的支持,创建KMS密钥时,密钥类型需选择EC或RSA,密钥用途需选择SIGN或VERIFY。其他参数配置请参见创建密钥

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

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

  1. 登录RAM控制台

  2. 在控制台左侧导航栏中选择身份管理 > 角色

  3. 角色页面创建AliyunContainerRegistryKMSRole角色。

    1. 角色页面单击创建角色

    2. 选择类型配置向导中选择可信实体类型阿里云账号,然后单击下一步

    3. 配置角色中设置角色名称为AliyunContainerRegistryKMSRole,并选择云账号,然后单击完成

  4. 修改信任策略。

    1. 角色页面找到AliyunContainerRegistryKMSRole,单击角色名称列下的AliyunContainerRegistryKMSRole。

    2. 单击信任策略管理页签,然后单击修改信任策略

    3. 修改信任策略面板,修改信任策略,然后单击确定

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "cr.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
  5. 新建AliyunContainerRegistryKMSRolePolicy策略。

    1. 在RAM控制台左侧导航栏中,单击权限管理 > 权限策略

    2. 权限策略页面,单击创建权限策略

    3. 创建权限策略页面,单击脚本编辑页签,在文本框中输入策略内容,单击继续编辑基本信息,设置策略名称为AliyunContainerRegistryKMSRolePolicy,然后单击确定

      说明

      您需要根据实际情况替换regionaccountid

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "kms:*"
                  ],
                  "Resource": "acs:kms:${region}:${accountid}:*"
              }
          ],
          "Version": "1"
      }
  6. 在左侧导航栏中,选择 身份管理 > 角色,在角色列表中,找到AliyunContainerRegistryKMSRole 角色。

  7. 单击右侧操作列下的添加权限

  8. 添加权限面板中选择权限策略为自定义策略,找到并选择AliyunContainerRegistryKMSRolePolicy ,单击确定,完成添加。

配置证明者及验签策略

  1. 登录云安全中心

  2. 在左侧导航栏选择防护配置 > 容器防护 > 容器签名,创建证明者并关联相应的KMS密钥,用于容器镜像加签。

  3. 可选:新增验签策略,将证明者关联到对应的ACK集群。更多信息,请参见容器签名

配置镜像自动加签规则

  1. 登录容器镜像服务控制台

  2. 在顶部菜单栏,选择所需地域。

  3. 在左侧导航栏,选择实例列表

  4. 实例列表页面单击目标企业版实例。

  5. 在企业版实例管理页面左侧导航栏选择安全可信 > 镜像加签。单击添加加签规则

  6. 密钥配置的配置向导中选择在安全中心创建的证明者关联KMS Key。然后单击下一步

  7. 加签配置的配置向导中设置参数,然后单击创建加签规则

    说明

    设置加签规则仅对该命名空间下所有新上传的镜像进行加签操作,存量的镜像不做加签操作。

    • 加签算法:提供两种可选加签算法RSA_PSS_SHA_256或者RSA_PKCS1_SHA_256

    • 加签范围:目前支持命名空间级别自动加签,选择需要自动加签的命名空间。

    • 加签类型:

      • 默认:加签范围有镜像Digest和镜像版本信息,默认模式适用于当前实例下镜像数据的验签。

      • 极简:加签范围仅有镜像Digest部分,不依赖镜像版本的信息。极简模式适用于跨实例镜像同步场景,镜像版本会变更对应镜像数据的验签。

    • 触发方式:默认支持自动触发,每次推送镜像后,会自动触发加签。

镜像验签

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

说明
  • 支持在容器服务Kubernetes版集群中使用组件进行自动验签,设置相应策略在验签失败时阻断镜像部署,推荐此方法。

  • 支持客户基于密钥管理中心验签功能、容器镜像服务镜像签名数据自行验签。