介绍
什么是 Keystone
Keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理与授权的组件
主要功能: 实现用户的身份认证,基于角色的权限管理,及 OpenStack 其他组件的访问地址和安全策略管理。
为什么需要 Keystone
Keystone 项目的主要目的是给整个 OpenStack 的各个组件(nova,cinder,glance…)提供一个统一的验证方式
术语
User (用户)
一个人、系统或服务在 OpenStack中的数字表示。已经登录的用户分配令牌环以访问资源。用户可以直接分配给特定的租户,就像隶属于每个组。
Credentials (凭证)
用于确认用户身份的数据。例如:用户名和密码,用户名和API key,或由认证服务提供的身份验证令牌。
Token(令牌)
一个用于访问 OpenStack API和资源的字母数字字符串。一个临时令牌可以随时撤销,并且持续一段时间有效。
Tenant(租户)
一个组织或孤立资源的容器。租户和可以组织或隔离认证对象。根据服务运营的要求,一个租户可以映射到客户、账户、组织或项目。
Service(服务)
OpenStack服务,例如计算服务(nova),对象存储服务(swift),或镜像服务(glance)。它提供一个或多个端点,共用户访问资源和执行操作。
Endpoing(端点)
一个用于访问某个服务的可以通过网络进行访问的地址,通常是一个URL地址。
Role(角色)
定制化的包含特定用户权限和特权的权限集合。
Keystone Client(keystone命令行工具)
Keystone 的命令行工具。通过该工具可以创建用户、角色、服务和端点等。
keystone与其他组件协同工作流程
keystone是用户与云平台交互的第一个服务,一旦认证通过,用户就会使用自己的身份来访问其他的opnestack服务,同样,被访问的openstack服务会去跟keystone再次确认用户(不能只能用户的片面之词)并且通过keystone可以发现其他服务(catalog的原因),keystone的还可以整合其他的用户管理系统,比如LDAP
keystone工作流程详解
- 用户alice登录keystone系统(password或者token的方式),获取一个临时的token和catalog服务目录(v3版本登录时,如果没有指定scope,project或者domain,获取的临时token没有任何权限,不能查询project或者catalog)。
- alice通过临时token获取自己的所有的project列表。
- alice选定一个project,然后指定project重新登录,获取一个正式的token,同时获得服务列表的endpoint,用户选定一个endpoint,在HTTP消息头中携带token,然后发送请求(如果用户知道project name或者project id可以直接第3步登录)。
- 消息到达endpoint之后,由服务端(nova)的keystone中间件(pipeline中的filter:authtoken)向keystone发送一个验证token的请求。(token类型:uuid需要在keystone验证token,pki类型的token本身是包含用户详细信息的加密串,可以在服务端完成验证)
- keystone验证token成功之后,将token对应用户的详细信息,例如:role,username,userid等,返回给服务端(nova)。
- 服务端(nova)完成请求,例如:创建虚拟机。
- 服务端返回请求结果给alice。
安装和配置
本节介绍如何在控制器节点上安装和配置 OpenStack Identity 服务,代号为 keystone。出于可扩展性目的,此配置部署了 Fernet 令牌和 Apache HTTP 服务器来处理请求。
配置数据库
- 使用数据库访问客户端以root用户身份连接数据库服务器:
mysql -u root -p
- 创建keystone数据库:
MariaDB [(none)]> CREATE DATABASE keystone;
- 授予对keystone数据库的适当访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
- 退出数据库访问客户端。
安装和配置组件
✔ 笔记
默认配置文件因发行版而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,配置片段中的省略号 ( …) 表示您应该保留的潜在默认配置选项。
-
yum install openstack-keystone httpd python3-mod_wsgi
-
su -s /bin/sh -c "keystone-manage db_sync" keystone
-
笔记
和标志用于指定将用于运行 keystone 的操作系统的用户/组–keystone-user。–keystone-group提供这些是为了允许在另一个操作系统用户/组下运行 keystone。在下面的示例中,我们调用 user & group keystone。keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
-
引导身份服务:
✔ 笔记
在 Queens 发布之前,keystone 需要在两个单独的端口上运行以适应 Identity v2 API,后者通常在端口 35357 上运行单独的仅管理员服务。删除 v2 API 后,keystone 可以在同一端口上运行所有接口。keystone-manage bootstrap --bootstrap-password ADMIN_PASS --bootstrap-admin-url http://controller:5000/v3/ --bootstrap-internal-url http://controller:5000/v3/ --bootstrap-public-url http://controller:5000/v3/ --bootstrap-region-id RegionOne
配置 Apache HTTP 服务器
-
编辑/etc/httpd/conf/httpd.conf文件并配置 ServerName选项以引用控制器节点:
ServerName controller
-
创建/usr/share/keystone/wsgi-keystone.conf文件的链接:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
SSL
安全部署应将 Web 服务器配置为使用 SSL 或在 SSL 终结器后面运行。
完成安装
- 启动 Apache HTTP 服务并将其配置为在系统启动时启动:
systemctl enable httpd.service systemctl start httpd.service
- 通过设置适当的环境变量来配置管理帐户:
export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3
此处显示的这些值是从创建的默认值。keystone-manage bootstrap
替换为keystone-install–configure-rdo中命令中ADMIN_PASS使用的密码 。keystone-manage bootstrap
创建域、项目、用户和角色
Identity 服务为每个 OpenStack 服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合。
创建域
openstack domain create --description "An Example Domain" example
创建服务
openstack project create --domain default
--description "Service Project" service
创建项目
openstack project create --domain default --description "Demo Project" demo
创建用户
openstack user create --domain default --password-prompt demo
创建角色
openstack role create demo
openstack role add --project demo --user demo demo
验证
-
取消设置临时变量OS_AUTH_URL和OS_PASSWORD 环境变量:
unset OS_AUTH_URL OS_PASSWORD
-
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue
-
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name demo --os-username demo token issue
创建 OpenStack 客户端环境脚本
前面的部分使用环境变量和命令选项的组合通过 openstack客户端与身份服务进行交互。为了提高客户端操作的效率,OpenStack 支持简单的客户端环境脚本,也称为 OpenRC 文件。这些脚本通常包含所有客户端的通用选项,但也支持独特的选项。
创建脚本
-
export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
-
export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
使用脚本
要将客户端作为特定项目和用户运行,您只需在运行它们之前加载关联的客户端环境脚本。例如:
- 加载文件以使用身份服务的位置以及项目和用户凭据admin–openrc填充环境变量:admin
source ./admin_openrc
- 请求身份验证令牌:
openstack token issue
原文地址:https://blog.csdn.net/qq_40277608/article/details/125452079
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_24266.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!