介绍

什么是 Keystone

Keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理授权组件

主要功能 实现用户身份认证基于角色权限管理,及 OpenStack 其他组件访问地址安全策略管理

为什么需要 Keystone

Keystone 项目的主要目的是给整个 OpenStack各个组件nova,cinder,glance…)提供一个统一验证方式

术语

User (用户)
一个人、系统服务在 OpenStack中的数字表示。已经登录的用户分配令牌环以访问资源。用户可以直接分配给特定的租户,就像隶属于每个组。

Credentials (凭证)
用于确认用户身份的数据例如用户名密码用户名和API key,或由认证服务提供的身份验证令牌

Authentication(验证)
确认用户身份的过程

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工作流程详解

  1. User从Keystone获取令牌以及服务列表
  2. User访问服务时,亮出自己的令牌。
  3. 相关的服务向Keystone求证令牌的合法性。

在这里插入图片描述

  1. 用户alice登录keystone系统password或者token方式),获取一个临时tokencatalog服务目录(v3版本登录时,如果没有指定scopeproject或者domain获取的临时token没有任何权限,不能查询project或者catalog)。
  2. alice通过临时token获取自己的所有的project列表
  3. alice选定一个project然后指定project重新登录获取一个正式的token,同时获得服务列表endpoint,用户选定一个endpoint,在HTTP消息头中携带token然后发送请求(如果用户知道project name或者project id可以直接第3步登录)。
  4. 消息到达endpoint之后,由服务端nova)的keystone中间件pipeline中的filterauthtoken)向keystone发送一个验证token请求。(token类型uuid需要keystone验证token,pki类型的token本身是包含用户详细信息加密串,可以在服务端完成验证)
  5. keystone验证token成功之后,将token对应用户的详细信息例如role,usernameuserid等,返回服务端nova)。
  6. 服务端nova)完成请求例如创建虚拟机
  7. 服务端返回请求结果alice

安装配置

本节介绍如何控制器节点安装配置 OpenStack Identity 服务,代号为 keystone。出于可扩展性目的,此配置部署了 Fernet 令牌和 Apache HTTP 服务器处理请求

配置数据库

  1. 使用数据库访问客户端root用户身份连接数据库服务器
    mysql -u root -p
    
  2. 创建keystone数据库
    MariaDB [(none)]> CREATE DATABASE keystone;
    
  3. 授予对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';
    

    替换KEYSTONE_DBPASS为合适的密码

  4. 退出数据库访问客户端

安装和配置组件

笔记
默认配置文件发行版而异。您可能需要添加这些部分选项,而不是修改现有的部分选项。此外,配置片段中的省略号 ( …) 表示应该保留的潜在默认配置选项

  1. 运行以下命令安装软件包

    yum install openstack-keystone httpd python3-mod_wsgi
    

    笔记
    对于 RHEL7/Centos7 及以上安装包 mod_wsgi

  2. 编辑/etc/keystone/keystone.conf文件并完成以下操作

  3. 填充身份服务数据库

    su -s /bin/sh -c "keystone-manage db_sync" keystone
    
  4. 初始化 Fernet 密钥存储库:

    笔记
    和标志用于指定将用于运行 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
    
  5. 引导身份服务:

    笔记
    在 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
    

    替换ADMIN_PASS为适合管理用户的密码

配置 Apache HTTP 服务器

  1. 编辑/etc/httpd/conf/httpd.conf文件并配置 ServerName选项以引用控制器节点

    ServerName controller
    

    如果该ServerName条目尚不存在,则需要添加该条目。

  2. 创建/usr/share/keystone/wsgi-keystone.conf文件链接

    ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
    

SSL

安全部署应将 Web 服务器配置为使用 SSL 或在 SSL 终结器后面运行

完成安装

  1. 启动 Apache HTTP 服务并将其配置为在系统启动时启动:
    systemctl enable httpd.service
    systemctl start httpd.service
    
  2. 通过设置适当的环境变量配置管理帐户:
    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-installconfigure-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

在这里插入图片描述

role角色添加demo项目和demo用户

openstack role add --project demo --user demo demo

验证

  1. 取消设置临时变量OS_AUTH_URL和OS_PASSWORD 环境变量

    unset OS_AUTH_URL OS_PASSWORD
    
  2. 作为admin用户,请求一个身份验证令牌:

    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
    

    在这里插入图片描述

  3. 作为user在上面创建的用户,请求一个身份验证令牌:

    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 文件。这些脚本通常包含所有客户端的通用选项,但也支持独特的选项。

创建脚本

为项目和用户admin创建客户端环境脚本。

  1. 创建并编辑admin_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
    

    替换为您在身份服务中ADMIN_PASS为用户admin选择密码

  2. 创建并编辑demo_openrc文件并添加以下内容

    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
    

    替换为您在身份服务中DEMO_PASS为用户demo选择的密码

使用脚本

要将客户端作为特定项目和用户运行,您只需在运行它们之前加载关联客户端环境脚本。例如

  1. 加载文件以使用身份服务的位置以及项目和用户凭据adminopenrc填充环境变量:admin
    source ./admin_openrc
    
  2. 请求身份验证令牌:
    openstack token issue
    

    在这里插入图片描述

原文地址:https://blog.csdn.net/qq_40277608/article/details/125452079

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24266.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注