本文介绍如何使用容器镜像服务ACR(Container Registry)、密钥管理服务KMS(Key Management Service)、云安全中心(Security Center)和kritis-validation-hook组件实现自动验证容器镜像签名,确保只部署可信授权方签名的容器镜像,降低在您环境中发生意外或恶意代码的风险。
步骤一:安装kritis-validation-hook组件
步骤二:创建用于容器镜像签名的KMS密钥
步骤三:在云安全中心配置使用KMS密钥的证明者
- 登录云安全中心控制台。
- 在左侧导航栏,选择 。
- 在证明者页签,单击创建证明者。配置完成后,单击确定完成证明者的创建。
配置项 说明 证明者名称 配置容器签名安全策略时需要选择证明者,用于对您的目标容器进行可信授权。建议输入便于识别的名称。 选择证书 在证书列表中选择您已创建的KMS密钥。 描述 输入该证明者的备注信息。
步骤四:在ACR中开启容器镜像自动加签功能
步骤五:在云安全中心启用容器镜像验签功能
通过在云安全中心添加和启用策略的方式来为Kubernetes集群中某个命名空间启用容器镜像验签功能。
- 登录云安全中心控制台。
- 在左侧导航栏,选择 。
- 在安全策略页签,单击添加策略。策略配置完成后,单击确定。
配置项 说明 策略名称 配置签名安全策略时需要选择证明者,用于对您的目标集群进行可信授权。 建议输入便于识别的名称。
证明者 在证明者列表中选择您已创建的证明者。 应用集群 单击需要进行容器签名的集群分组后,选中目标集群命名空间。 策略开启状态 单击开关,创建策略后策略会立即启用。 说明 默认不开启策略。策略如果未开启将不会生效。备注 输入安全策略的备注信息。
步骤六:验证容器镜像自动验签功能
说明 目前仅支持使用digest格式的镜像。
执行以下命令,验证容器镜像自动验签功能。
- 已开启验签功能的Default命名空间将拒绝部署使用未加签的容器镜像服务。使用Tag格式镜像的命令如下:
kubectl -n default create deployment not-sign --image=alpine:3.11 -- sleep 10
Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine:3.11 is not attested
使用Digest格式镜像的命令如下:kubectl -n default create deployment not-sign --image=alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10
Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 is not attested
- 向已开启自动加签功能的容器镜像服务命名空间中推送一个镜像,然后验证可以使用这个加签的容器镜像部署服务。
docker push kritis-demo-registry-vpc.cn-hongkong.cr.aliyuncs.com/kritis-demo/alpine:3.11
The push refers to repository [kritis-demo-registry-vpc.cn-hongkong.cr.aliyuncs.com/kritis-demo/alpine] 5216338b40a7: Pushed 3.11: digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 size: 528
放行已自动加签容器镜像的命令如下:kubectl -n default create deployment is-signed --image=kritis-demo-registry-vpc.cn-hongkong.cr.aliyuncs.com/kritis-demo/alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10
deployment.apps/is-signed created
相关文档
- kritis-validation-hook组件介绍,请参见kritis-validation-hook组件介绍。
- kritis-validation-hook组件变更记录,请参见kritis-validation-hook。