将 glance-replicator 迁移到 requests 以支持 HTTPS¶
https://blueprints.launchpad.net/glance/+spec/migrate-replicator-to-requests
随着操作员和用户对安全性意识的提高,支持仅通过 HTTPS 提供服务的 Glance 部署至关重要。目前,glance-replicator 使用 httplib,因此无法正确验证 HTTPS 连接。这使得在 glance-replicator 用户尝试与 Glance 通信时,可以执行各种非常严重的攻击。
问题描述¶
许多部署目前支持到 Glance API 的 HTTP 和 HTTPS 连接。随着最佳实践的演变,Glance 和其他 OpenStack 服务仅通过 HTTPS 提供服务,并使用有效的 X.509 证书将变得越来越普遍。目前,如果操作员部署 Glance 并仅使用 HTTPS 提供服务,glance-replicator 由于无法验证服务器提供的证书,仍然允许观察者进行各种攻击。
其中,用户与 Glance 的连接很容易被中间人拦截,该中间人提供虚假证书,然后代理甚至更改通过连接发送的数据。由于 glance-replicator 的典型用户是管理员,他们拥有的任何服务令牌都可能被拦截和使用,这鉴于管理员的权限,是非常危险的。
提议的变更¶
本规范建议将 glance-replicator 中使用 httplib 的代码重写为使用 requests。requests 支持所有 HTTPS 连接上的自动证书验证,并允许用户为自签名证书提供自定义证书包。
鉴于操作员可以选择为其 Glance 部署签名自己的证书,本规范还建议向 glance-replicator 添加一个命令行选项,允许操作员指定在验证证书时要使用的自定义证书包。
备选方案¶
一个替代 requests 的方案,并且已经用于其他 OpenStack 项目的是 httplib2。该库提供与 httplib 几乎相同的 API,并执行证书验证。然而,该库正被许多相同项目积极地替换为 requests。减少操作员需要安装的依赖项也很有利。
一个替代让用户指定其自定义证书包的方案是提供一个 glance-replicator.conf 文件。这将是一个全新的文件。添加另一个配置文件可能会增加对部署 Glance 时需要哪些文件的困惑。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
对于通过 HTTPS 提供服务的 Glance 部署,这将提高用户连接的安全性。
通知影响¶
无
其他最终用户影响¶
未正确配置 HTTPS 的用户可能会收到错误。由于 glance-replicator 以前不会生成错误,这对于用户来说可能是一个令人不快的体验。本规范的作者认为,以不安全的方式连接到 Glance 的选项是一个糟糕的选择,因为这些错误会鼓励操作员正确配置 Glance 以通过 HTTPS 提供服务。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
icordasc
- 其他贡献者
junhongl
评审人员¶
- 核心评审人
flaper87 flwang
- 其他审核员
nikhil-komawar kragniz
工作项¶
重构
glance-replicator以删除其围绕httplib的一些约定。将
httplib替换为requests添加指定自定义证书包的选项
添加关于新选项和功能的
glance-replicator文档
依赖项¶
无
测试¶
requests-mock 将用于编写 glance-replicator 的单元测试,以确保获得适当的覆盖率。
文档影响¶
glance-replicator 的 man 页面需要更新,以说明新的配置选项。我们应该注意设置自定义证书的两种当前方式
requests将查找REQUESTS_CA_BUNDLE和CURL_CA_BUNDLE环境变量新的
glance-replicator选项。
参考资料¶
缺陷