公司 IBM 地点 阿蒙克, 纽约 行业 云计算

挑战

IBM Cloud 提供公共云、私有云和混合云功能,支持多种运行时环境,包括基于 OpenWhisk 的函数即服务 (FaaS) 产品、托管的 Kubernetes 和容器,以及 Cloud Foundry 平台即服务 (PaaS)。这些运行时环境结合了 IBM 企业技术的强大能力,例如 MQ 和 DB2,以及其现代人工智能 (AI) Watson 和数据分析服务。IBM Cloud 用户可以利用其目录中超过 170 种不同的云原生服务的功能,包括 IBM 的 Weather Company API 和数据服务等功能。在 2017 年下半年,IBM Cloud Container Registry 团队希望构建一项镜像信任服务。

解决方案

这项新服务的开发工作最终在 2018 年 2 月在 IBM Cloud 中公开发布。据 IBM Cloud Container Registry 团队的软件开发者 Michael Hough 介绍,这项名为 Portieris 的镜像信任服务完全基于 云原生计算基金会 (CNCF) 的开源项目 Notary。Portieris 是一个用于实施内容信任的 Kubernetes Admission Controller。用户可以为每个 Kubernetes namespace 或在集群级别创建镜像安全策略,并对不同的镜像实施不同级别的信任。Portieris 是 IBM 信任体系的关键组成部分,因为它使用户能够在其 IKS 集群内使用 IBM 提供的 Notary 服务。该服务的工作方式是 Notary 服务器运行在 IBM Cloud 中,而 Portieris 则运行在 IKS 集群内部。这使用户能够让他们的 IKS 集群验证他们加载容器所用的镜像是否包含他们期望的准确内容,而 Portieris 正是让 IKS 集群能够进行这种验证的组件。

影响

IBM 提供托管的 Kubernetes 容器服务和镜像仓库的目的是为其企业客户提供一个完全安全的端到端平台。“镜像签名是该服务的一个关键组成部分,我们的容器仓库团队认为 Notary 是在当前 Docker 和容器生态系统中实现该功能的实际标准方式,” Hough 说。该公司此前并未提供镜像签名功能,而 Notary 是他们用来实现该功能的工具。“我们拥有一个支持多租户并提供私有镜像托管的 Docker Registry,” Hough 说。“Docker Registry 使用哈希算法来确保镜像内容的正确性,数据在传输中和静态时都经过加密。但它不保证是谁推送了某个镜像。我们使用 Notary 让用户可以在他们的私有仓库 namespace 中对镜像进行签名,如果他们选择这样做的话。”

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

“在 TUF 和 Notary 都贡献给 CNCF 后,我们意识到它正在成为容器生态系统中镜像签名的实际标准,” IBM Cloud Container Registry 团队的软件开发者 Michael Hough 说。

选择 Notary 的主要原因是它已经与 IBM 容器仓库正在使用的现有认证栈兼容。TUF 的设计也是如此,它不需要仓库团队进入密钥管理业务。他说,这两点都是“有吸引力的设计决策,证实了我们选择 Notary 的决定”。

在 IBM Cloud 中引入 Notary 以实现镜像签名功能,促进了 IBM 云平台整体安全性的提升,“我们预计这将包括对 IBM 官方镜像的签名以及注重安全的企业客户的预期使用,” Hough 说。“当与安全策略实施相结合时,我们预计 CI/CD 流水线中部署策略的使用会增加,从而能够基于镜像签名者实现对服务部署的细粒度控制。”

镜像签名的可用性“对注重安全、需要这种级别镜像来源证明和安全性的客户来说是一个巨大的优势,” Hough 说。“通过我们提供的 IBM Cloud Kubernetes 即服务产品以及 Admission Controller,它使得 IBM 内部服务以及 IBM 公有云的客户都能使用安全策略来控制服务部署。”

现在,这项基于 Notary 实现的服务已作为现有 IBM Cloud Container Registry 的一个组件在 IBM 公有云中正式可用,它被部署为跨五个 IBM Cloud 区域的高可用性服务。这种高可用性部署在每个区域的两个可用区中有三个实例,通过负载均衡和故障转移支持。Hough 说:“我们还部署了端到端 TLS 支持,一直连接到我们的后端 IBM Cloudant 持久化存储服务。”

IBM 团队创建并开源了一个名为 Portieris 的 Kubernetes Admission Controller,它使用 Notary 签名信息结合客户定义的安全性策略来控制镜像部署到他们的集群中。Hough 说:“我们希望通过使用我们的 Notary 服务来推动 Portieris 的普及应用。”

IBM 一直是开源基金会(包括 CNCF)创建和支持的关键参与者。IBM 的开放技术副总裁 Todd Moore 是现任 CNCF 理事会主席,许多 IBMer 在许多 CNCF 成员项目中都非常活跃。

“鉴于此,我们认为 CNCF 是云原生开源项目的一个安全港,为成员项目提供稳定性、长期性和预期的维护支持——无论其原始供应商或项目是什么,” Hough 说。因为整个云原生领域是一个快速发展的领域,有许多相互竞争的供应商和解决方案,“我们认为 CNCF 模型是整个生态系统中开放和公平竞争的仲裁者,” 他说。

随着 TUF 和 Notary 都成为 CNCF 的一部分,IBM 期望围绕这些功能实现标准化,而不仅仅是签名和来源证明的实际标准。IBM 已决定不仅要使用 Notary,还要在适用的情况下为开源项目做出贡献。Hough 说:“IBMer 贡献了一个 CouchDB 后端来支持我们使用 IBM Cloudant 作为持久化存储;并且正在致力于 pkcs11 提供程序的通用化,以支持 Yubikey 之外的其他安全硬件设备。”

该公司使用了其他 CNCF 项目,包括 containerdEnvoyPrometheusgRPCCNI,并且也在研究 SPIFFESPIRE,以备将来可能的使用。

对于正在寻求部署 Notary 或云原生基础设施的其他公司,Hough 有什么建议?

虽然这对于云原生基础设施软件的许多领域都是如此,但我们发现 Notary 的高可用性、跨区域部署需要一个可靠的实现来处理证书管理和轮换," 他说。"有一些新的项目正在解决这些挑战,包括 CNCF 内部的项目。我们一定会持续关注这些进展。我们发现 Notary 社区是一个活跃友好的社区,乐于接受变更,例如我们添加 CouchDB 后端作为持久化存储。