案例研究:
在 Kubernetes 上使用 Notary 和 TUF 建立镜像信任服务

公司  IBM     位置  阿蒙克, 纽约     行业  云计算

挑战

IBM Cloud 提供公共、私有和混合云功能,包括基于 OpenWhisk 的服务 (FaaS)、托管于 Kubernetes 和容器,以及 Cloud Foundry 服务 (PaaS) 的各种运行时。这些运行时与公司企业技术(如 MQ 和 DB2、其现代人工智能 (AI) Watson 和数据分析服务)的强大功能相结合。IBM Cloud 用户可以使用其目录中 170 多个不同云原生服务的功能,包括 IBM 的气象公司 API 和数据服务等功能。在 2017 年后期,IBM 云容器托管团队希望构建镜像信任服务。

解决方案

2018 年 2 月,这项新服务在 IBM 云中公开发布。IBM 云容器托管团队的软件开发者 Michael Hough 说,名为 Portieris 的镜像信任服务完全基于 Cloud Native Computing Foundation (CNCF) 的开源项目 Notary。Portieris 是 Kubernetes 的准入控制器,用于强制执行适当的信任等级。用户可以为每个 Kubernetes 命名空间或在集群级别创建镜像安全策略,并为不同的镜像强制实施不同级别的信任。Portieris 是 IBM 信任内容的关键部分,因为它使用户能够从 IKS 集群中使用公司的 Notary。产品是 Notary 服务器在 IBM 的云中运行,然后 Portieris 在 IKS 集群内运行。这使用户能够让 IKS 集群验证他们加载容器的镜像是否包含他们期望的内容,而 Portieris 是允许 IKS 集群应用该验证的原因。

影响

IBM 打算提供基于 Kubernetes 的容器服务和镜像托管服务,目的是为其企业客户提供完全安全的端到端平台。Hough 说:“镜像签名是该产品的关键部分之一,我们的容器托管团队将 Notary 视为在当前 Docker 和容器生态系统中实现该功能的实际方式。”该公司以前没有提供镜像签名,Notary 是它用来实现该功能的工具。“我们有一个多租户 Docker 托管服务,具有私有镜像托管功能,” Hough 说。“ Docker 托管使用哈希值来确保镜像内容正确,并且数据在传输和静态时都进行了加密。但它没有提供任何保证谁推镜像。我们使用 Notary 来允许用户在其专用注册表命名空间中签名镜像(如果他们愿意的话)。”
“我们将 CNCF 视为云原生开源的安全避难所,为成员项目(无论是原始供应商还是项目)提供稳定性、使用寿命和预期维护。”

- Michael Hough, IBM 容器托管团队软件开发人员

Docker 已经创建了 Notary 项目作为 The Update Framework (TUF) 的实现,TUF 的此实现为 Docker 内容信任提供了功能。

IBM 云容器托管团队的软件开发者 Michael Hough 说:“在 TUF 和 Notary 对 CNCF 做出了贡献后,我们发现它正在成为容器生态系统中镜像签名的实际标准。”

选择 Notary 的关键原因是它已经与 IBM 的容器托管正在使用的现有身份验证技术兼容。TUF 的设计也是如此,它不要求托管团队必须涉足密钥管理业务。他说,这两项都是“有吸引力的设计决定,证实了我们对 Notary 的选择是正确的。”

在 IBM Cloud 中引入 Notary 功能以实现镜像签名,可提高 IBM 云平台的安全性,“我们预计这将包括签署 IBM 官方镜像以及预期的有安全需求的企业客户,” Hough 说。与安全策略实现结合使用时,我们预计 CI/CD 管道中会更多地使用部署策略,以便根据镜像签名者对服务部署进行精细控制。 Hough 说,镜像签名的可用性“对于需要这种级别镜像来源和安全性的客户来说,是一个巨大的好处。”“借助我们的 IBM 云上的 Kubernetes 以及我们提供的许可控制器,它允许 IBM 服务以及 IBM 公共云的客户使用安全策略来控制服务部署。”
镜像签名是我们 Kubernetes 容器服务的关键部分之一,我们的容器托管团队将 Notary 视为在当前 Docker 和容器生态系统中实现该功能的实际方式。

- Michael Hough, IBM 容器托管团队软件开发人员
现在,Notary 通常作为现有 IBM 云容器托管的一个组件在 IBM 的公共云中提供服务,因此它被部署为五个 IBM 云区域中的高可用服务。此高可用性部署在五个区域中的每个区域中各有三个实例,实现负载均衡与故障转移。Hough 说:“我们还将其部署到后端 IBM Cloudant 持久性存储服务,并随端到端 TLS 支持一起部署。”

IBM 团队创建并开源了名为 Portieris 的 Kubernetes 准入控制器,该控制器使用 Notary 签名信息与客户定义的安全策略相结合,以控制将镜像部署到集群中。“我们希望通过使用我们的 Notary 服务来推动 Portieris 的使用,” Hough 说。

IBM 在创建和支持开源基础(包括 CNCF)方面一直占据主导地位。IBM 开放技术副总裁 Todd Moore 是现任 CNCF 董事会主席,许多 IBM 员工活跃于 CNCF 成员项目中。
“有新项目应对这些挑战,包括在 CNCF 内。我们一定会饶有兴趣地关注这些进步。我们发现 Notary 社区是一个积极友好的社区,对变化持开放态度,例如我们为持久存储添加的 CouchDB 后端。”

- Michael Hough, IBM 容器托管团队软件开发人员
该公司已经使用的 CNCF 项目有 containerdEnvoyPrometheusgRPCCNI,而且正在探索 SPIFFESPIRE 在未来的潜在可用性。

对于希望部署 Notary 或云原生基础架构的其他公司,Hough 有何建议?

“虽然对于云原生基础结构软件的许多领域也是如此,但我们发现,高可用性、多区域的 Notary 部署需要扎实的实现来处理证书管理和轮换,”他说。“有新项目应对这些挑战,包括在 CNCF 内。我们一定会饶有兴趣地关注这些进步。我们发现 Notary 社区是一个积极友好的社区,对变化持开放态度,例如我们为持久存储添加的 CouchDB 后端。”