keystone认证服务

keystone认证服务

1、keystone管理用户

1-1、简介:

在OpenStack云计算平台中,Keystone是一个核心组件,主要用于提供统一的认证服务。其功能包括:

  1. 身份验证:Keystone负责验证用户的身份,通常通过用户名和密码或其他认证机制进行。
  2. 令牌发放和校验:一旦用户身份验证成功,Keystone会发放一个令牌(Token),该令牌包含了用户在指定范围和有效时间内可以访问的资源信息。同时,Keystone还负责校验令牌的合法性。
  3. 服务列表管理:Keystone维护了一个服务列表,记录了OpenStack中运行的各个组件服务的信息。
  4. 用户权限定义:Keystone支持用户权限的划分和管理,通过角色(Role)机制,可以为不同的用户或用户组分配不同的操作权限。
1-2、身份服务功能:
  • 身份认证:令牌管理、访问控制
  • 在经过身份认证后,提供路径指引服务
  • 用户授权:授权用户在一个服务中所拥有的权限(作用范围、有效期)
  • 用户管理:管理用户账户
  • 服务目录:提供可用于服务的API端点,即提供具体的URL路径(具体的路径)
1-3、服务认证流程:
1-3-1:流程图:

在这里插入图片描述

1-3-2:模块信息:
  • user:用户
  • keystone 身份验证:为所有服务模块提供认证与授权
  • Nova 计算服务:管理实例的生命周期
  • Glance 镜像服务:提供镜像服务
  • Neutron 网络服务:提供网络服务
1-3-3:执行流程:

在OpenStack中,Keystone的工作原理大致如下:

  • 用户向Keystone发送用户名和密码进行身份验证。
  • 验证成功后,Keystone返回一个临时令牌和一个服务目录列表给用户。
  • 用户使用临时令牌向服务目录中的服务请求资源时,需要再次通过Keystone的验证。
  • Keystone验证令牌通过后,允许用户访问相应的服务资源。
1-3-4:详细分析:
  • user ——> keystone

1.首先Client用户通过命令或horizon(账号密码)的方式进行登录(验证方式包括:令牌、密钥等);

  • keystone ——> user

2.keystone会向Client发送credentials用于表示验证成功,同时向user发送一个Token(可以使用服务的权限范围和时间)和Endpoint(API地址或具体的URL);

  • user ——> Nova

3.Client通过Token和Endpoint向nova的API发送申请创建虚拟机的请求;

  • Nova——> keystone

4.nova会向keystone认证client用户的Token是否可用;

  • keystone ——> nova

5.认证成功,令牌有效

  • nova ——> glance

6.nova拿着client的Token和Image(申请的镜像对应的属性,规格)向glance提出镜像的请求;

  • glance ——> keystone

7.glance会拿着nova给的Token向keystone认证,是否可用;

  • keystone ——> glance

8.认证成功,令牌有效,glance处理nova请求

  • glance ——> nova

9.glance会给nova具体的Image本身;

  • nova ——> neutron

10.nova拿着Client的Token令牌和network需求向neutron发出请求;

  • neutron ——> keystone

11.neutron拿着nova给的Token去向keystone认证,是否可用

  • keystone ——> neutron

12.认证成功,令牌有效,neutron处理nova的请求

  • neutron ——> nova

13.neutron会提供给nova的具体的网络服务本身;

  • nova ——> Client

14.nova开始创建虚拟机,创建成功后返回信息给Client,然后Client会收到虚拟机创建成功的信息

keystone端口号:5000

1-4、open stack架构的keystone组件部署
  • keystone认证;

  • glance镜像;

  • nova核心组件;

  • neutron网络

2、部署keystone认证组件

2-1Keystone的配置
  • 安装keystone相关软件包
[root@controller bin]# yum install -y openstack-keystone httpd mod_wsgi 
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
软件包 1:openstack-keystone-9.0.2-1.el7.noarch 已安装并且是最新版本
软件包 httpd-2.4.6-40.el7.centos.4.x86_64 已安装并且是最新版本
软件包 mod_wsgi-3.4-12.el7_0.x86_64 已安装并且是最新版本
无须任何处理
  • 创建keystone数据库
[root@controller bin]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 133
Server version: 10.1.17-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database keystone;
ERROR 1007 (HY000): Can't create database 'keystone'; database exists
MariaDB [(none)]> drop database keystone
    -> ;
Query OK, 37 rows affected (3.09 sec)

MariaDB [(none)]> create database keystone;
Query OK, 1 row affected (0.04 sec)

MariaDB [(none)]> grant all privileges on keystone.* to 'keystone'@'localhost' identified by 'keystone';
Query OK, 0 rows affected (0.15 sec)

MariaDB [(none)]> grant all privileges on keystone.* to 'keystone'@'%' identified by 'keystone';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

  • 生成管理员的令牌环
[root@controller /]# openssl rand -hex 10
65790615279353b4cef2
[root@controller /]# 
  • 编辑keystone配置文件

配置数据库连接、定义管理员初始令牌的值

[root@controller /]# vi /etc/keystone/keystone.conf 
##修改如下:
admin_token = 65790615279353b4cef2
connection = mysql+pymysql://keystone:keystone@controller/keystone
provider = fernet
  • 为keystone创建数据表
[root@controller /]# su -s /bin/sh -c "keystone-manage db_sync" keystone
##查看
[root@controller /]# mysql -h 192.168.10.144 -ukeystone -pkeystone -e "use keystone;show tables;"
+------------------------+
| Tables_in_keystone     |
+------------------------+
| access_token           |
| assignment             |
| config_register        |
| consumer               |
| credential             |
| domain                 |
| endpoint               |
| endpoint_group         |
| federated_user         |
| federation_protocol    |
| group                  |
| id_mapping             |
| identity_provider      |
| idp_remote_ids         |
| implied_role           |
| local_user             |
| mapping                |
| migrate_version        |
| password               |
| policy                 |
| policy_association     |
| project                |
| project_endpoint       |
| project_endpoint_group |
| region                 |
| request_token          |
| revocation_event       |
| role                   |
| sensitive_config       |
| service                |
| service_provider       |
| token                  |
| trust                  |
| trust_role             |
| user                   |
| user_group_membership  |
| whitelisted_config     |
+------------------------+
[root@controller /]# 
  • 初始化Fernet keys
[root@controller /]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone 
[root@controller /]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone 

  • 配置Apache服务器
[root@controller /]# cp /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
cp:是否覆盖"/etc/httpd/conf.d/wsgi-keystone.conf"? y
[root@controller /]# vi /etc/httpd/conf/httpd.conf 
##修改 ServerName controller
[root@controller /]# systemctl start httpd 
[root@controller /]# systemctl enable httpd 
[root@controller /]# ss -tan | grep 5000
LISTEN     0      128         :::5000                    :::*                  
[root@controller /]#  ss -tan | grep 35357
LISTEN     0      128         :::35357                   :::*                  
[root@controller /]# 
  • 定义环境变量
[root@controller /]# export OS_TOKEN=babeaba15768af9f7848
[root@controller /]#  export OS_URL=http://controller:35357/v3
[root@controller /]# export OS_IDENTITY_API_VERSION=3
[root@controller /]# 
2-2创建域、项目、用户和角色

以下创建的为管理员环境即admin

  • 创建default域
openstack domain create --description "Default Domain" default
  • 创建admin项目
openstack project create --domain default --description "Admin Project" admin
  • 创建admin用户
 openstack user create --domain default --password-prompt admin 
  • 创建admin角色
openstack role create admin 
  • 将以上创建的关联在一起
openstack role add --project admin --user admin admin 
2-3创建普通用户环境

创建方法和上面的一致,普通用户就相当于我们在阿里云上注册的一个新账号

  • 创建user项目
[root@controller ~]# openstack project create  --domain default --description "User Project" user

  • 创建user用户
[root@controller ~]# openstack user create --domain default --password-prompt user

  • 创建user角色
[root@controller ~]# openstack role create user 

  • 将以上三者关联到一起
[root@controller ~]# openstack role add --project user --user user user 

2-4 创建服务实体和API端点信息

服务实体包括:keystone、Nova、glance、neutron等
API端点信息:访问每一个服务的URL路径
端点信息可以分为如下三类:
admin (管理员入口)
internal(私有 内部通信)
public(公有 其他通信)

  • 创建keystone服务实体
[root@controller ~]# openstack service create --name keystone --description "Openstack Identity" identity
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Openstack Identity               |
| enabled     | True                             |
| id          | 9be4fafed2f94284bbe0eab06bebcd55 |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+
  • 创建public公有端点信息
[root@controller ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3 

  • 创建internal私有端点信息
[root@controller ~]# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

  • 创建admin管理员端点信息
[root@controller ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

2-5验证测试
  • 删除原先我们定义的环境变量
[root@controller ~]# unset OS_TOKEN OS_URL
##再次执行报错
[root@controller ~]# openstack service list 
Missing value auth-url required for auth plugin password
##这里提示要进行用户认证,这里还没有连接到keystone

  • 使用命令行的方式来连接到keystone测试

因为我们已经创建完成了admin环境和user环境

[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
Password: 
##有信息返回,则表示成功

openstack service list

Missing value auth-url required for auth plugin password
##这里提示要进行用户认证,这里还没有连接到keystone


- 使用命令行的方式来连接到keystone测试


因为我们已经创建完成了admin环境和user环境

```shell
[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
Password: 
##有信息返回,则表示成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/714493.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录一个flink跑kafka connector遇到的问题

【报错】 D:\Java\jdk1.8.0_231\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar56647:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\bin" -Dfile.encodingUTF-8 -classpath D:\Java\jdk1.8.0_231\jre\lib\cha…

本学期嵌入式期末考试的综合项目,我是这么出题的

时间过得真快,临近期末,又到了老师出卷的时候。作为《嵌入式开发及应用》这门课的主讲教师,今年给学生出的题目有一点点难度,最后的综合项目要求如下所示,各位学生朋友和教师同行可以评论一下难度如何,单片…

DataWhale - 吃瓜教程学习笔记(一)

学习视频:第1章-绪论_哔哩哔哩_bilibili 西瓜书对应章节: 第一章 机器学习三观 What:什么是机器学习? 关键词:“学习算法” Why: 为什么要学机器学习? #### 1. 机器学习理论研究#### 2. 机器学习系统开…

[240615] X-CMD 发布 v0.3.11,增加对 elvish 的支持

目录 X-CMD 发布 v0.3.11,增加对 elvish 的支持,并优化对 nushell,fish,xonsh,tcsh 的支持✨ co 模块 - copilot✨ elv 模块✨ hub X-CMD 发布 v0.3.11,增加对 elvish 的支持,并优化对 nushell&…

Python合并文件(dat、mdf、mf4)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

LabVIEW与C#的区别及重新开发自动测试程序的可行性分析

LabVIEW和C#是两种广泛使用的编程语言,各自有不同的应用领域和特点。本文将详细比较LabVIEW与C#在自动测试程序开发中的区别,并分析将已完成的LabVIEW自动测试程序重新用C#开发的合理性。本文帮助评估这种转换的必要性和潜在影响。 LabVIEW与C#的区别 开…

怎么把三列数据相同的号码一起求和?

可以使用excel的合并计算功能。 一、合并计算 将三列求和的数字列标题改成相同的,示例中全改成B1,这个是使用合并计算的关键一步,不改列标题,计算结果会是分开的。 2. 然后选中任意空白单元格作为输入结果的起始位置,…

Python学习笔记11:入门终结篇

前言 入门知识到这里基本结束了,这里主要讲一下input和range。这两个讲完,讲讲后面进阶学些啥。 range函数 之前将循环的时候讲过一点,这个函数是Python内置的函数,主要用来生成一系列数字,简单方便。 这里重新&…

Java17 --- SpringSecurity之前后端分离处理

目录 一、实现前后端分离 1.1、导入pom依赖 1.2、认证成功处理 1.3、认证失败处理 1.4、用户注销处理 1.5、请求未认证处理 1.6、跨域处理 1.7、用户认证信息处理 1.8、会话并发处理 一、实现前后端分离 1.1、导入pom依赖 <dependency><groupId>co…

工程设计问题---多盘离合器制动器设计问题

这个问题的主要目的是使多片式离合器制动器的质量最小化。在这个问题中&#xff0c;使用了五个整数决策变量&#xff0c;它们是内半径&#xff08;x1&#xff09;、外半径&#xff08;x2&#xff09;、盘厚度&#xff08;x3&#xff09;、致动器的力&#xff08;x4&#xff09;…

QT属性系统,简单属性功能快速实现 QT属性的简单理解 属性学习如此简单 一文就能读懂QT属性 QT属性最简单的学习

4.4 属性系统 Qt 元对象系统最主要的功能是实现信号和槽机制&#xff0c;当然也有其他功能&#xff0c;就是支持属性系统。有些高级语言通过编译器的 __property 或者 [property] 等关键字实现属性系统&#xff0c;用于提供对成员变量的访问权限&#xff0c;Qt 则通过自己的元对…

mysql-connector下载教程(手把手)

下载一个第三方库主要有三种途径&#xff1a; 去官方网站 Oracle 官网去github去Maven中央仓库 前两个方法比较麻烦&#xff0c;你还需要去找。 这里就只介绍maven的方法 Maven类似于手机app的应用商店。 操作步骤&#xff1a; 点击右边进入官网Maven中央仓库 在搜索框中…

NetSuite Saved Search 之 Filter By Summary

在某些业务场景中&#xff0c;用户需要一个TOP X的报表。例如&#xff0c;过去一段时间内&#xff0c;最多数量的事务处理类型。这就需要利用Saved Search中的Filter By Summary功能。 这在Criteria下的Summary页签里可以定义。其作用是对Result中Summary类型的结果进行过滤。也…

揭秘最强气象武器的库,SPEI-Python不可思议之处.

spei-python是一个专门用于计算标准化降水蒸散指数&#xff08;Standardized Precipitation Evapotranspiration Index,SPEI&#xff09;的Python库.SPEI是一种综合考虑降水和潜在蒸散发的干旱指数,用于评估干旱的严重程度和持续时间. 安装 ## 可以使用 pip 来安装 spei-pyth…

Proteus 新建工程

Proteus 新建工程 新建简单工程 首先在File工具栏中点击New Project&#xff0c;弹出新建工程向导程序(New Proteus Wizard) 填写工程名称与存储路径&#xff0c;选择New Proteus并点击Next进行下一步设置 我们不需要生成PCB文件&#xff0c;一路默认&#xff0c;点击Next即…

安装Docker Desktop报错WSL 2 installation is incomplete(实操教程)

点击运行提示WSL2安装不完整问题描述&#xff1a;WSL 2 installation is incomplete. The WSL 2 Linux kernel is now installed using a separate MSl updatepackage. Please click the link and follow the instructions to install thekernel update: https://aka.ms/wsl2ke…

SpringBoot接入RS-232串口通讯实现数据交互

目录 一、什么是RS-232&#xff1f; 先看看硬件通讯接口长啥样 RS-232 二、方案一 1.前期准备 a.配置 RXTX 1&#xff09;下载 RXTX 包并解压 2&#xff09;拷贝动态库到对应的jdk目录下 Windows平台 Linux平台 3&#xff09;在工程根目录下创建 lib 文件夹&#x…

【机器学习】机器学习与教育科技在个性化教学中的融合应用与性能优化新探索

文章目录 引言机器学习与教育科技的基本概念机器学习概述监督学习无监督学习强化学习 教育科技概述学生学习行为分析个性化学习路径推荐智能化教育评估 机器学习与教育科技的融合应用实时学习数据分析数据预处理特征工程 学生成绩预测与优化模型训练模型评估 个性化学习路径推荐…

盛世古董乱世金-数据库稳定到底好不好?

是不是觉得这个还用问&#xff1f; 是的要问。因为这个还是一个有争议的问题。但是争议双方都没有错。这就像辩论&#xff0c;有正反双方。大家都说的有道理&#xff0c;但是很难说谁对谁错。 正方观点&#xff1a;数据库稳定好 其实这个是用户的观点&#xff0c;应用开发人…

Docker:在DockerHub上创建私有仓库

文章目录 Busybox创建仓库推送镜像到仓库 本篇开始要学习在DockerHub上搭建一个自己的私有仓库 Busybox Busybox是一个集成了三百多个最常用Linux命令和工具的软件&#xff0c;BusyBox包含了很多工具&#xff0c;这里拉取该镜像推送到仓库中&#xff1a; 安装 apt install …