7.4. 验证容器签名以进行供应链安全
您可以使用 sigstore 签名方法增强供应链安全性。
sigstore 支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
7.4.1. 了解如何使用 sigstore 验证容器签名 复制链接链接已复制到粘贴板!
您可以使用 sigstore 签名方法配置容器运行时以验证镜像的完整性。配置 MicroShift 容器运行时可启用镜像完整性的验证。通过 sigstore 项目,开发人员可以数字签名其构建的内容,创建将软件追踪回源的安全链。然后管理员可以大规模验证签名和监控工作流。通过使用 sigstore,您可以在与构建镜像相同的 registry 中存储签名。
- 对于特定于用户的镜像,您必须更新配置文件以指向适当的公钥,或者禁用这些镜像源的签名验证。
对于断开连接或离线配置,您必须将公钥内容嵌入到操作系统镜像中。
7.4.2. 使用 sigstore 验证容器签名 复制链接链接已复制到粘贴板!
通过将容器运行时配置为使用 sigstore 来验证 MicroShift 的容器日志。在对镜像进行签名时,容器签名验证使用来自红帽密钥对的公钥。要使用 sigstore,请编辑作为容器运行时软件包的一部分安装的默认 /etc/containers/policy.json
文件。
您可以通过以下链接访问红帽公钥:
您必须使用发行版本密钥 3 来验证 MicroShift 容器签名。
先决条件
- 有对 MicroShift 主机的 admin 访问权限。
- 已安装 MicroShift。
流程
运行以下命令,下载相关的公钥并将其保存为
/etc/containers/RedHat_ReleaseKey3.pub
:sudo curl -sL https://access.redhat.com/security/data/63405576.txt -o /etc/containers/RedHat_ReleaseKey3.pub
$ sudo curl -sL https://access.redhat.com/security/data/63405576.txt -o /etc/containers/RedHat_ReleaseKey3.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将容器运行时配置为验证来自红帽源的镜像,请编辑
/etc/containers/policy.json
文件使其包含以下配置:策略 JSON 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过编辑
/etc/containers/registries.d/registry.redhat.io.yaml'
文件来在拉取镜像到本地存储时使用 sigstore attachments,使其包含以下配置:cat /etc/containers/registries.d/registry.redhat.io.yaml docker: registry.redhat.io: use-sigstore-attachments: true
$ cat /etc/containers/registries.d/registry.redhat.io.yaml docker: registry.redhat.io: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过编辑
/etc/containers/registries.d/registry.quay.io.yaml
文件来在拉取镜像到本地存储时使用 sigstore 附加功能,使其包含以下配置:cat /etc/containers/registries.d/quay.io.yaml docker: quay.io/openshift-release-dev: use-sigstore-attachments: true
$ cat /etc/containers/registries.d/quay.io.yaml docker: quay.io/openshift-release-dev: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您的用例需要这些镜像源的签名验证,请创建特定于用户的 registry 配置文件。您可以使用此处的示例开始并添加您自己的要求。
后续步骤
- 如果您使用镜像 registry,请启用 sigstore attachments。
- 否则,继续清理本地容器存储。
7.4.2.1. 为镜像 registry 启用 sigstore 附加 复制链接链接已复制到粘贴板!
如果使用镜像 registry,您必须应用额外的配置来启用 sigstore 附加功能,并通过摘要进行镜像(mirror)。
先决条件
- 有对 MicroShift 主机的 admin 访问权限。
- 您已使用 sigstore 完成"验证容器签名"中的步骤。
流程
通过创建
/etc/containers/registries.d/mirror.registry.local.yaml
文件来启用 sigstore 附加。cat /etc/containers/registries.d/<mirror.registry.local.yaml> docker: mirror.registry.local: use-sigstore-attachments: true
$ cat /etc/containers/registries.d/<mirror.registry.local.yaml>
1 docker: mirror.registry.local: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在镜像 registry URL 后命名 <
mirror.registry.local.yaml
> 文件。
通过创建包含以下内容的
/etc/containers/registries.conf.d/999-microshift-mirror.conf
来启用镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 清除本地容器存储清理。
7.4.2.2. 擦除本地容器存储清理 复制链接链接已复制到粘贴板!
将配置应用到现有系统时,您必须清理本地容器存储。清理容器存储可确保正确下载带有签名的容器镜像。
先决条件
- 有对 MicroShift 主机的管理员访问权限。
- 您在镜像 registry 上启用了 sigstore。
流程
运行以下命令停止 CRI-O 容器运行时服务和 MicroShift:
sudo systemctl stop crio microshift
$ sudo systemctl stop crio microshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令擦除 CRI-O 容器运行时存储清理:
sudo crio wipe --force
$ sudo crio wipe --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启 CRI-O 容器运行时服务和 MicroShift:
sudo systemctl start crio microshift
$ sudo systemctl start crio microshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入以下命令验证所有 pod 是否都处于健康状态:
oc get pods -A
$ oc get pods -A
输出示例
这个示例输出显示基本的 MicroShift。如果您安装了可选的 RPM,则您的输出中也会显示运行这些服务的 pod 状态。