跳转到: 导航, 搜索

Security/Juno/Marconi

< Security‎ | Juno

本页面记录了 OpenStack Juno 版本中 Marconi 项目的安全相关细节。

已实现的加密

目前没有。不过,我们希望在 K 周期实现消息签名。(待定)

使用的加密

Marconi 的唯一加密是在 keystone 中间件和后端驱动程序使用的库中。

Keystone

Marconi 使用标准的 Keystone WSGI 中间件进行身份验证。

后端

Marconi 目前依赖 pymongo 和 SQLAlchemy 来实现存储驱动程序。pymongo 使用 Python 的标准 "ssl" 包 (源代码)。

在 Juno 期间,我们也在试验 Redis、AMQP 和 Kafka 驱动程序。

  • AMQP 驱动程序将使用 qpid-proton 的 Python 绑定,后者使用 OpenSSL
  • Redis 本身不支持 TLS。可以通过代理添加支持,但我们目前不计划将支持添加到 Marconi 驱动程序中。
  • Kafka 似乎也不支持 TLS。

加密算法

算法 目的 可配置 实现 详情 源代码
TLS 加密的 MongoDB 连接 Yes pymongo 可以通过在 marconi.conf 中配置的 mongodb 连接字符串中设置一个标志来启用 SSL。我们计划也通过 marconi.conf 使证书选项可配置。 https://github.com/mongodb/mongo-python-driver/blob/master/pymongo/pool.py
TLS 加密的 AMQP Broker 连接 待定 qpid-proton 待定 https://svn.apache.org/repos/asf/qpid/proton/trunk/proton-c/src/ssl/

哈希算法

算法 目的 可配置 实现 详情 源代码
CRC32 在多个 MongoDB 数据库中分散队列 数据库数量“分区”是可配置的。 binascii.crc32 由于我们预计操作员只会使用少量分区(2-4 个),因此认为 CRC32 可以提供相对均匀的分布。攻击者可能会创建许多队列,命名方式使其最终位于同一分区上。此威胁 将在 j-2 中进行检查 GitHub 链接

敏感数据

密钥/证书

API:无

后端:见下文

密码

API:传递给 Marconi 的唯一内容是 Keystone 身份验证令牌。

后端:MongoDB 驱动程序不支持 Mongo 的身份验证功能。我们正在考虑在 Juno 中添加此支持 (bug),但这项工作可能会推迟到 K 周期。目前没有计划为任何其他后端支持身份验证。

潜在改进

我们可以进行改进的潜在列表,顺序不限

  • 提交补丁到 pymongo,以利用 Py3K ssl 模块的改进
  • 迁移到 mmh3 替代 crc32,或迁移离开在多个数据库中分散队列
  • 支持 MongoDB 的身份验证功能
  • 支持对本机不支持 TLS 的后端使用 TLS 代理
  • 实现消息签名,可能还包括加密
  • 如果决定支持 AMQP 后端,则添加对用户/密码身份验证的支持