添加 KMIP 密钥管理器包装器¶
https://blueprints.launchpad.net/castellan/+spec/kmip-key-manager
KMIP[1] 设备是密钥管理器,并且由于 Castellan 是一个密钥管理器接口,因此有人希望 Castellan 直接连接到 KMIP 设备,而不是通过后端连接 KMIP 设备的 Barbican。此蓝图提供了一种使用 Castellan 直接与 KMIP 设备通信的解决方案。
问题描述¶
目前,要使用 Castellan 与 KMIP 设备通信,Castellan 必须首先与连接了后端 KMIP 设备的 Barbican 通信。通过创建 KMIP 密钥管理器接口,Castellan 可以直接与 KMIP 设备交互。
这还具有以下好处:允许客户端决定是否需要将 Barbican 放置在其 KMIP 设备前面。无论他们拥有自己的设备还是从云提供商处购买设备,他们可能不需要 Barbican 的所有功能或资源,而只想直接连接到 KMIP 设备。
这将允许私有或专用云在无需 Barbican 的情况下使用 Castellan。
需要记住的重要一点是,KMIP 设备不保证多租户功能。一些设备提供创建单独用户的功能,从而根据唯一用户帐户分隔密钥。但是,并非所有设备都支持此功能。此外,KMIP 设备目前不支持使用 keystone 作为身份验证方式。以下部分详细介绍了未来的更改以及对多租户和 keystone 身份验证的可能支持。
提议的变更¶
将创建一个名为 kmip_key_manager 的模块。该模块将位于现有的密钥管理器接口所在的位置,并可用于直接与 KMIP 设备交互。
为了使 KMIP 密钥管理器能够接收上下文对象,需要创建两种新的凭据类型。一种是 Certificate(证书),它将仅接收证书的位置,另一种是 KMIP,它将是 Certificate 的扩展。KMIP 凭据对象将接收建立与 KMIP 设备连接所需的所有必要值,包括证书。
KMIP 凭据对象使用的值将与 Barbican 用于建立与 KMIP 设备连接的变量相同,并且可以通过 castellan.conf 文件或通过 Castellan 本身进行修改。这将使支持单独用户帐户的 KMIP 设备能够提供一些多租户功能。
当 KMIP 设备开始支持 keystone 令牌时,KMIP 密钥管理器类可以更新为接收 KMIP 凭据对象或 keystone 令牌凭据对象作为上下文。这将允许我们今天在 Barbican 中看到的所有多租户功能。
以下是将在 castellan.conf 文件中添加的新值的示例
[kmip]
#
# From castellan.config
#
# Username for user authorized to access KMIP device (string value)
#username = admin
# Password for KMIP authenticated user (string value)
#password = password
# Use this endpoint to connect to the KMIP device (string value)
#host = localhost
# Port that KMIP device is listening on (string value)
#port = 5696
# Keyfile used by castellan (string value)
#keyfile = '/path/to/certs/cert.key'
# Certificate used by castellan to talk to KMIP device (string value)
#certfile = '/path/to/certs/cert.crt'
# List of certificates and CA's that castellan willaccept (string value)
#ca_certs = '/path/to/certs/LocalCA.crt'
这些值可以驻留在 castellan.conf 文件中,也可以添加到现有的配置文件中。Castellan 只需要获得读取文件的位置即可。
其余代码将与 Barbican 中的 KMIP 密钥存储代码非常相似。[2]
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
KMIP 设备不保证多租户功能。这意味着用户应该意识到,当 Castellan 是 KMIP 设备的接口时,任何具有 KMIP 凭据访问权限的用户都可能与该设备通信。由于 keystone 目前不能用作身份验证形式,因此无法根据用户的角色或项目进行区分。这需要在文档中进行详细说明。
通知与审计影响¶
所有对设备的 CRUD 请求都需要进行记录。建立和结束连接也应进行记录,以确保连接成功且已成功终止。
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
silos (Christopher Solis)
工作项¶
创建 Certificate 和 KMIP 凭据对象
创建 KMIP 密钥管理器
将 KMIP 部分添加到示例 Castellan 配置文件
对密钥管理器包装器和凭据对象进行单元和功能测试
文档
依赖项¶
无
测试¶
需要添加新的单元测试和功能测试。
文档影响¶
应更新 Castellan 文档以反映新后端的添加。
参考资料¶
[1] https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=kmip
[2] https://github.com/openstack/barbican/blob/master/barbican/plugin/kmip_secret_store.py