Bootstrap via CLI

bp bootstrap

移除使用 ADMIN_TOKEN 初始化集群的方式,该 CLI 必须在与 Keystone 安装相同的机器上执行。

问题描述

ADMIN_TOKEN 是一种不好的部署初始化方法。对于在初始部署后未能禁用它的任何站点,它都存在巨大的安全风险。由于它在站点上线后被移除,因此无法在不 A) 重启服务和 B) 提供巨大的攻击面情况下重新启用它。但是,对于损坏的系统,有时它是唯一可以有效解决问题的工具。

ADMIN_TOKEN 在配置文件中指定,这意味着任何具有读取文件权限的人都具有无限能力来影响 Keystone 系统中的更改。这是强制配置文件只能由 root 和 keystone 服务读取的值之一。这限制了非 root 用户读取配置以确定系统状态和帮助进行故障排除的能力。

提议的变更

用一组影响必要的更改来初始化 Keystone 服务器的 CLI 操作替换 ADMIN_TOKEN

keystone-manage bootstrap

参数

默认值

含义

bootstrap-username

admin

初始 Keystone 用户名

在 bootstrap 过程中。

bootstrap-password

bootstrap 用户密码

bootstrap-generate-password

如果设置,将自动生成密码并在输出中返回

bootstrap-project-name

admin

Keystone bootstrap 过程中创建的初始项目。

bootstrap-role-name

admin

Keystone bootstrap 过程中创建的初始角色名。

备选方案

直接数据库访问,这将绕过系统中的所有逻辑。

预先编写的数据库脚本,这将始终将系统置于已知状态;错误和重复的风险很高,无法修复卡住的系统。

安全影响

应减少 Keystone 服务器的攻击面。现在,任何可以读取配置文件的用户都可以影响这些更改。通过此更改,用户访问将限制为运行 Keystone 进程的相同 Unix 用户,并通过 sudo 进行管理。

通知影响

通过 API 进行这些更改时生成的相同通知将通过此 API 生成。

其他最终用户影响

这将改变 CMS 与 Keystone 的交互方式。ADMIN_TOKEN 方法将被弃用。

性能影响

其他部署者影响

这将移除使用 ADMIN_TOKEN 进行故障排除的能力,并将其替换为更受控的方法。

开发人员影响

实现

负责人

主要负责人

morganfainberg

其他贡献者

ayoung

工作项

  • 启用 bootstrap CLI

  • 弃用 ADMIN_TOKEN

  • 更新 devstack 以使用 bootstrap

  • 从 pipeline 中移除 admin_token

许多版本后 * 移除对 ADMIN_TOKEN 的支持

依赖项

文档影响

这将改变所有下游项目初始化 Keystone 的方式。

参考资料