启动身份验证¶
在部署和配置 keystone 后,在使用它之前,必须先填充一些初始数据。此过程称为启动,通常涉及创建系统的第一个用户、项目、域、服务和端点等。启动的目标是将足够的信息放入系统,以便仅通过 API 使用正常的身份验证流程来运行。创建第一个用户后,必须是管理员,您可以使用该帐户通过 API 与 keystone 交互。
Keystone 提供了两种单独的方法来启动部署。第一种是使用 keystone-manage bootstrap 命令。这是启动新安装的首选和推荐方法。第二种,也是最初的启动方法,涉及配置一个密钥并在身份验证服务前面部署特殊的中间件。该密钥被称为 ADMIN_TOKEN。使用 ADMIN_TOKEN 发送到身份验证 API 的任何请求将完全绕过身份验证,从而允许访问整个 API。
使用 CLI¶
该过程需要访问安装了 keystone 二进制文件的环境,通常是在服务主机上。
keystone-manage bootstrap 命令将创建一个用户、项目和角色,并将新创建的角色分配给新创建的用户在新创建的项目上。默认情况下,这些新资源的名称将被称为 admin。
可以通过调用 --bootstrap-username、--bootstrap-project-name 和 --bootstrap-role-name 来覆盖默认值。这些中的每一个都有一个等效的环境变量:OS_BOOTSTRAP_USERNAME、OS_BOOTSTRAP_PROJECT_NAME 和 OS_BOOTSTRAP_ROLE_NAME。
还必须提供用户密码。可以通过 --bootstrap-password 传递,或者使用 OS_BOOTSTRAP_PASSWORD 设置为环境变量。
可选地,如果由 --bootstrap-public-url、--bootstrap-admin-url 和/或 --bootstrap-internal-url 或等效的环境变量指定,该命令将使用指定的端点信息创建一个身份验证服务。您还可以根据部署需求配置 --bootstrap-region-id 和 --bootstrap-service-name。
注意
我们强烈建议您在启动 keystone 时配置身份验证服务及其端点。
最少情况下,keystone 可以使用以下方式启动
$ keystone-manage bootstrap --bootstrap-password s3cr3t
详细地说,keystone 可以使用以下方式启动
$ keystone-manage bootstrap \
--bootstrap-password s3cr3t \
--bootstrap-username admin \
--bootstrap-project-name admin \
--bootstrap-role-name admin \
--bootstrap-service-name keystone \
--bootstrap-region-id RegionOne \
--bootstrap-admin-url https://:5000 \
--bootstrap-public-url https://:5000 \
--bootstrap-internal-url https://:5000
这将创建一个 admin 用户,在 admin 项目和系统上具有 admin 角色。这允许用户生成项目范围和系统范围的令牌,从而确保他们具有完整的 RBAC 授权。用户将拥有命令中指定的密码。请注意,用户和项目都将在 default 域中创建。通过不在目录中创建端点,用户需要提供端点覆盖才能执行其他身份验证操作。
此命令还将创建 member 和 reader 角色。admin 角色意味着 member 角色,而 member 角色意味着 reader 角色。默认情况下,这三个角色是不可变的,这意味着它们是使用 immutable 资源选项创建的,除非删除了该选项,否则无法修改或删除。要禁用此行为,请添加 --no-immutable-roles 标志。
通过创建一个 admin 用户和一个身份验证端点,您可以验证 keystone 并执行身份验证操作,例如使用 admin 用户创建其他服务和端点。这将避免使用或配置 admin_token(如下所述)的需要。从设计上讲,它也更安全。
为了测试正确的配置,用户可以使用 OpenStackClient CLI
$ openstack project list --os-username admin --os-project-name admin \
--os-user-domain-id default --os-project-domain-id default \
--os-identity-api-version 3 --os-auth-url https://:5000 \
--os-password s3cr3t