重建时重置实例密钥对¶
Launchpad 蓝图: https://blueprints.launchpad.net/nova/+spec/rebuild-keypair-reset
本文档描述了在重建时重置密钥对的新方法实现方式。
问题描述¶
目前 Nova 没有办法在重建过程中重置实例密钥对。因此,至少 nova rebuild 将是一种重置实例密钥对的方法。
用例¶
提议的变更¶
将在重建 API 输入体中添加一个新的参数,命名为 key_name。重建 API 调用后,响应体必须包含更新后的新实例 key_name。
备选方案¶
您需要删除并创建一个使用不同密钥对的新实例。值得注意的是,新实例将拥有一个新的 ID,这可能会导致云应用程序的其他资源跟踪记录。
数据模型影响¶
无
REST API 影响¶
将为 nova rebuild API 添加一个新的微版本。然后用户可以使用 rebuild API 重置实例密钥对。
注意
对 key_name 的查找将基于发起请求的当前用户,这可能与创建实例的用户不同。这是可能的,因为同一项目中的用户可以重建其他用户的实例,但密钥的范围限定为用户。有关更多详细信息,请参阅安全影响部分。
服务器模式
base_rebuild_vXXX = {
'type': 'object',
'properties': {
'rebuild': {
'type': 'object',
'properties': {
'name': parameter_types.name,
'imageRef': parameter_types.image_id,
'adminPass': parameter_types.admin_password,
'metadata': parameter_types.metadata,
'preserve_ephemeral': parameter_types.boolean,
'OS-DCF:diskConfig': parameter_types.disk_config,
'accessIPv4': parameter_types.accessIPv4,
'accessIPv6': parameter_types.accessIPv6,
'personality': parameter_types.personality,
'key_name': parameter_types.name,
},
'required': ['imageRef'],
'additionalProperties': False,
},
},
'required': ['rebuild'],
'additionalProperties': False,
}
安全影响¶
密钥由用户拥有(这是唯一真实的情况)。服务器由项目拥有。因此,使用 key_name 进行重建是根据发起重建的用户查找密钥对。这可能是人们想要的,如果出现意外情况,最初创建实例的其他用户可以再次重建实例。我们将确保在 API 参考中记录这种微妙之处,并进行此微版本更改。
通知影响¶
重建操作的通知 [4] 将使用新的密钥对名称。
其他最终用户影响¶
python-novaclient 也应该将这个新的 key_name 参数添加到 nova rebuild shell 命令中。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
LIU Yulong <i@liuyulong.me>
工作项¶
使用新的 API 微版本向 rebuild API 添加
key_name参数 [5]。CLI 支持。
测试。
文档。
依赖项¶
无
测试¶
重建一个实例,并查看数据库中的 key_name 和 key_data 是否真的发生了变化。
针对新微版本的 Tempest 测试用例。如果重建的实例处于 ACTIVE 状态,请确保 cloud-init 或 config drive 进行了正确的公钥设置。
文档影响¶
需要为新的 API(rebuild)微版本编写文档。这些文档将描述新的实例重建 API 请求和响应。