共享 VIM 用于策略动作执行¶
https://blueprints.launchpad.net/tacker/+spec/shared-barbican-secret
本文档描述了实现共享 VIM 用于策略动作执行的计划。
问题描述¶
在当前实现 [1] 中,已注册 VIM 的密码由 fernet 加密,fernet 密钥保存在 barbican 中作为 secret。由于 barbican 的默认策略,只有创建 secret 的用户才能获取 secret,这导致已注册的 VIM 无法被其他租户共享。
因此,如果我们想通过 tacker api 以外的方式执行 VNF LCM 操作,例如策略动作执行,我们将没有 keystone token 来访问 barbican secret。
BP [2] 想要使用 mistral 来进行 VNF 监控和执行策略动作,这依赖于本规范的实现。
提议的变更¶
有三种方法可以解决这个问题。我们将使用第一种方法。
将 fernet 密钥保存在一个特定的租户中,例如 tacker 服务租户。这种方法将导致所有 VIM 都可以被其他租户调用。
- 主要实现如下
- 注册 VIM
我们使用 fernet 加密 VIM 密码,然后使用 tacker.conf 中配置的 tacker 服务租户将 fernet 密钥保存到 barbican 中作为 secret。barbican 将返回 secret_uuid。然后将加密后的密码保存到 VIM 数据库的 password 字段中,并将 secret uuid 保存到 VIM 数据库字段 secret_uuid 中。
- 检索 VIM
我们使用 tacker.conf 中配置的 tacker 服务租户和 secret_uuid 从 barbican 获取 fernet 密钥,并使用 fernet 解码 password。
- 删除 VIM
我们使用 tacker.conf 中配置的 tacker 服务租户通过 VIM 数据库中的 secret_uuid 从 barbican 删除 secret。
我们将 tacker 服务租户添加到 barbican 中所有 fernet_key 的 ACL 中。只有服务租户才能调用所有 VIM。策略动作将使用此服务租户。这种方法需要修改其他项目。因此不推荐。
在创建带有监控策略的 VNF 时,我们保存上下文信息(由于其具有过期时间,因此没有 token)。然后策略动作使用这些信息访问 barbican。最初,fernet 密钥是基于 VIM 的。如果更改为这样,它将位于 VNF 中,因此它将存储大量 secret 信息。因此不推荐。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
此功能需要具有“admin”角色的“tacker”用户。在使用 devstack 创建“tacker”用户时,我们需要将“admin”角色添加到“tacker”用户。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
- 其他贡献者
工作项¶
单元测试
功能测试
功能文档位于 doc/source/devref/feature
依赖项¶
无
测试¶
无
文档影响¶
使用新步骤更新 doc/source/contributor/encrypt_vim_auth_with_barbican.rst。