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

前提条件

开通密钥管理服务

创建非对称密钥

  1. 登录密钥管理服务控制台
  2. 密钥管理服务控制台,单击创建密钥。
    创建KMS密钥
    说明 容器签名功能需要非对称密钥算法的支持,创建 KMS 密钥时,密钥类型需选择 RSA,密钥用途需选择 SIGN 或 VERIFY。

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

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

  1. 登陆RAM控制台
  2. 在左侧导航栏中选择 RAM 角色管理
  3. 选择类型,单击下一步配置角色。
  4. 角色名称文本框中输入 AliyunContainerRegistryKMSRoleAliyunContainerRegistryKMSRole
    说明 此角色专门用于 ACR 读取您账户下非对称密钥。
  5. 角色创建完成后,在角色列表,找到AliyunContainerRegistryKMSRole,单击角色名称,对角色进行信任策略管理。
  6. 角色名称详情页,单击修改信任策略

    信任策略如下:

    {
        "Statement": [
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "cr.aliyuncs.com"
                    ]
                }
            }
        ],
        "Version": "1"
    }
  7. 在控制台左侧导航栏中,单击权限策略管理,新建名为 AliyunContainerRegistryKMSRolePolicy 的权限策略 。

    该权限策略允许读取非对称密钥。策略示例如下:

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "kms:*"
                ],
                "Resource": "acs:kms:${region}:*:*"
            }
        ],
        "Version": "1"
    }
    说明 ${region} 需要替换成kms-key所在的region-id 或者 *
    新建权限策略
  8. 在左侧导航栏中,选择 RAM 角色管理,在角色列表中,找到 AliyunContainerRegistryKMSRole 角色。
  9. 单击右侧操作列中的添加权限
  10. 在权限类型中选择自定义策略,找到并选择AliyunContainerRegistryKMSRolePolicy ,单击确定,完成添加。给RAM角色添加权限

配置证明者及验签策略

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

配置镜像自动加签规则

  1. 在容器镜像服务企业版,选择左侧导航栏内容可信 > 镜像加签,单击添加加签规则
  2. 配置参数,单击确定
    添加加签规则2
    参数 说明
    加签算法 提供两种可选加签算法 RSA_PSS_SHA_256 或者 RSA_PKCS1_SHA_256
    加签 Key 通过选择在安全中心创建的证明者关联 KMS Key。
    加签范围 目前支持命名空间级别自动加签,选择需要自动加签的命名空间。
    触发方式 默认支持自动触发,每次推送镜像后,会自动触发加签。
    说明 设置加签规则仅对该命名空间下所有新上传的镜像进行加签操作,存量的镜像不做加签操作。

镜像验签

请参见使用kritis-validation-hook组件实现自动验证容器镜像签名

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