为了避免中间人攻击和非法镜像的更新及运行,ACR支持命名空间级别的自动加签,每次推送容器镜像后都会匹配加签规则自动加签,保障镜像从分发到部署的全链路一致性。
前提条件
创建非对称密钥
授权容器镜像服务使用KMS密钥
为了让ACR可以读取到您账号下的非对称密钥,需要在您的账号上配置以下RAM策略。
登录RAM控制台。
在控制台左侧导航栏中选择身份管理 > 角色。
在角色页面创建AliyunContainerRegistryKMSRole角色。
在角色页面单击创建角色。
在选择类型配置向导中选择可信实体类型为阿里云账号,然后单击下一步。
在配置角色中设置角色名称为AliyunContainerRegistryKMSRole,并选择云账号,然后单击完成。
修改信任策略。
在角色页面找到AliyunContainerRegistryKMSRole,单击角色名称列下的AliyunContainerRegistryKMSRole。
单击信任策略管理页签,然后单击修改信任策略。
在修改信任策略面板,修改信任策略,然后单击确定。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
新建AliyunContainerRegistryKMSRolePolicy策略。
在RAM控制台左侧导航栏中,单击权限管理 > 权限策略。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签,在文本框中输入策略内容,单击继续编辑基本信息,设置策略名称为AliyunContainerRegistryKMSRolePolicy,然后单击确定。
说明您需要根据实际情况替换
region
和accountid
。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" }
在左侧导航栏中,选择 身份管理 > 角色,在角色列表中,找到
AliyunContainerRegistryKMSRole
角色。单击右侧操作列下的添加权限。
在添加权限面板中选择权限策略为自定义策略,找到并选择
AliyunContainerRegistryKMSRolePolicy
,单击确定,完成添加。
配置证明者及验签策略
配置镜像自动加签规则
登录容器镜像服务控制台。
在顶部菜单栏,选择所需地域。
在左侧导航栏,选择实例列表。
在实例列表页面单击目标企业版实例。
在企业版实例管理页面左侧导航栏选择 。单击添加加签规则。
在密钥配置的配置向导中选择在安全中心创建的证明者关联KMS Key。然后单击下一步。
在加签配置的配置向导中设置参数,然后单击创建加签规则。
说明设置加签规则仅对该命名空间下所有新上传的镜像进行加签操作,存量的镜像不做加签操作。
加签算法:提供两种可选加签算法RSA_PSS_SHA_256或者RSA_PKCS1_SHA_256。
加签范围:目前支持命名空间级别自动加签,选择需要自动加签的命名空间。
加签类型:
默认:加签范围有镜像Digest和镜像版本信息,默认模式适用于当前实例下镜像数据的验签。
极简:加签范围仅有镜像Digest部分,不依赖镜像版本的信息。极简模式适用于跨实例镜像同步场景,镜像版本会变更对应镜像数据的验签。
触发方式:默认支持自动触发,每次推送镜像后,会自动触发加签。
镜像验签
关于镜像验签请参见使用kritis-validation-hook进行容器镜像签名验证。
支持在容器服务Kubernetes版集群中使用组件进行自动验签,设置相应策略在验签失败时阻断镜像部署,推荐此方法。
支持客户基于密钥管理中心验签功能、容器镜像服务镜像签名数据自行验签。