支持凭证加密

bp credential-encryption

支持在 Keystone 中加密凭证,以避免将其以明文形式存储在后端。

问题描述

大型组织具有安全合规性要求,要求不能以明文形式存储凭证。Keystone 中的凭证当前存储在后端,并且任何访问后端的人都可以访问它们。如果后端被攻击者攻破,他们可以轻松获取任何用户的凭证。此外,组织内的任何人都可以绕过 Keystone 提供的任何安全访问控制,查看后端中的凭证。

提议的变更

更新凭证驱动程序以支持加密 blob 字段在 credential 表中。鉴于存在可行的 secret 提供者(Barbican、cryptography 等),加密解决方案的选择应该是可插拔的。将使用单个密钥来加密凭证。密钥管理将通过允许两个活动密钥用于解密和一个活动密钥用于加密来实现。所有凭证都将被加密。密钥轮换将在侧边进行。密钥是部署范围内的。

备选方案

Barbican

安全影响

提高了机密信息的安全性。

通知影响

其他最终用户影响

性能影响

加密会降低性能。

其他部署者影响

部署者需要管理密钥。密钥最初将存储在配置文件中。这将需要少量工作来设置。

开发人员影响

实现

负责人

主要负责人

werner.mendizabal (Werner Mendizabal <nonameentername@gmail.com>)

工作项

  • 更新凭证驱动程序以支持加密。

  • 记录升级过程以及如何启用加密。

  • 编写 keystone-manage 命令来加密现有的凭证。如果部署者未指定加密密钥,迁移将不会重新加密凭证。

  • 编写测试以验证功能。

依赖项

  • 用于加密的 cryptography 库。Fernet 将是默认的加密插件。

文档影响

  • 应更新文档以反映配置更改。

参考资料