文章目录

  • KeyStone认证服务
    • 前言
    • idntitiy server功能
    • 身份认证服务流程
    • keystone工作流程图

KeyStone认证服务

前言

keystone为所有openstack组件提供认证和访问策略访问,它依赖自身REST(基于idntity API)系统进行工作,主要对(但不限于)Swift(对象存储)、Glance(镜像服务)、Nova(计算服务)等进行认证与授权。实际上,授权通过对动作消息来源者请求的合法性进行鉴定。

idntitiy server功能

1、身份认证 :令牌的发访和校验

2、用户授权:授权用户在一个服务中所拥有的权限

3、用户管理

4、服务目录:包含可用服务的API point

身份认证服务流程

  1. User(用户):一个People or System or Service 在OpenStack中的数字表示。用于身份认证,也能够通过为登录到Openstack的用户分配令牌环,以此获得访问资源的权限,同一个用户可以背关联到给若干个租户,就像用户可以隶属若干个不同的组。

    用户通过认证信息,如密码、API keys等进行验证

  2. Tenant(租户):一个资源或对象的抽象表示,租户可以包含多个用户,不同租户之间相互隔离,根据service运行的需求,租户可以映射为账户、组织、项目或服务

  3. 项目(project):是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。

    不同服务中,项目所涉及的资源也不同。在nova服务中项目可以是云主机,在swift和glance中项目可以是镜像存储,在neutron中项目可以是网络资源。

    默认情况下,用户总是被绑定到项目中。

    一个项目中可以有多个用户,一个用户可以数据一个或多个项目

  4. Role(角色):可定制化的包含有特定用户权限的权限集合,这些资源包含虚拟机、镜像、存储资源等。同时可以关联到若干个User-Tenant对,来为User-Tenant对赋予权限。
    用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。

    其区别是,全局的角色适用于所有项目中的资源权限,而项目内的角色只适用于某个项目内的资源权限

  5. Token(令牌):用于限定User-Tenant对进行OpenStack
    API和资源访问的字符串表示。一个令牌会持续一段时间有效,也可以随时撤销。

    在keystone中主要是引入令牌机制来保护用户对资源的访问

  6. Credentials(凭证):用于确认用户身份的数据,例如:Username/Password

  7. Authentication(校验):是确定用户身份的过程。

  8. Service(服务):OpenStack service,即OpenStack运行的组件服务

  9. Keystone Client(keystonecli):keystone的命令行工具,可以完成诸如创建用户、角色、服务和端点等大多数得leystone管理功能,是非常常用得CLI接口。

  10. Endpoint(端点):一个可以通过网络来访问和定位某个OpenStack service得地址,通常是一个URL。简单得说,就是入口。

在keystone中包含一个端点模板,这个模板提供了所有已存在的服务的端点信息。

一个端点模板包含一个URL列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。

其中,public类型的端点可以被全局访问,private类型的端点只能被openstack内部服务访问,admin类型的端点只能被管理员访问。

openstack身份认证服务将管理认证、授权以及服务目录整合为一个访问点,同时也是用户需要和openstack’进行交互的第一个服务。

一旦认证通过,终端用户使用其身份访问openstack其他服务。

同样的,其他服务也将利用身份认证服务确认来访者身份是否合法,以及是否具备相应的权限。

此外,openstack身份认证服务可以集成其他的身份认证管理系统,如LDAP等

身份认证服务为其他openstack服务提供验证和授权服务,为所有服务提供终端目录。

此外,提供用户信息但是不在openstack项目中的服务(如LDAP服务)可被整合进先前存在的基础设施中。

为了从身份认证服务中获益,其他的openstack服务需要身份认证服务合作完成某个任务。

当某个openstack服务收到来自用户的请求时,该服务发送请求道身份认证服务,以验证用户是否有相应的权限。

keystone是openstack框架中负责管理身份验证、服务规划和服务令牌功能的模块。

用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过keystone来处理。

keystone类似一个服务总线,或者说是整个openstack框架的注册表,其他服务通过keystone来注册其服务的endpoint,任何服务之间的相互调用,需要经过keystone的身份验证,并获得目标服务的endoint,从而找到目标服务。

keystone工作流程图

  • ① 用户/API想创建一个实例,首先会将自己的credentials(资格证书)发给keystone。认证成功后,keystone会颁给用户/API一个临时的令牌(Token)和一个访问服务的Endpoint。
  • ② 用户/API 把临时Token提交给keystone,keystone并返回一个Tenant(Project)
  • ③ 用户/API向keystone发送带有特定租户的凭证,告诉keystone用户/API在哪个项目中,keystone收到请求后,会发送一个项目的token到用户/API
    PS:第一个Token是来验证用户/API是否有权限与keystone通信,第二个Token是来验证用户/API是否有权限访问我keystone的其它服务。用户/API拿着token和Endpoint找到可访问服务
  • ④ 服务向keystone进行认证,Token是否合法,它允许访问使用该服务(判断用户/API中role权限)
  • ⑤ keystone向服务提供额外的信息。用户/API是允许方法服务,这个Token匹配请求,这个Token是用户/API的
  • ⑥ 服务执行用户/API发起的请求,创建实例
  • ⑦ 服务会将状态报告给用户/API。最后返回结果,实例已经创建

Openstack之Keystone组件解析相关推荐

  1. OpenStack 的部署T版(二)——Keystone组件

    目录 一.OpenStack安装Keystore组件 Keystone认证流程 1.OpenStack组件安装的顺序 2.创建数据库实例和数据库用户 3.安装.配置keystone.数据库.Apach ...

  2. OpenStack(二)——Keystone组件

    OpenStack(二)--Keystone组件 一.OpenStack组件之间的通信关系 二.OpenStack物理构架 三.Keystone组件 1.Keystone身份服务 2.管理对象 3.K ...

  3. 传统公司部署OpenStack(t版)简易介绍(二)——Keystone组件部署

    传统公司部署OpenStack(t版)简易介绍(二)--Keystone组件部署 一.OpenStack组件安装的顺序 二.创建数据库实例和数据库用户(ct控制节点) 三.安装.配置keystone. ...

  4. OpenStack七大组件解析

    b站视频链接:0-尚硅谷-Linux云计算- 虚拟化技术 - 为何需要云计算这种"新事物"_哔哩哔哩_bilibili 视频.课件.资料: 百度网盘链接:https://pan.b ...

  5. Openstack(T版)私有云平台<环境部署>及安装<keystone组件>

    文章目录 一.基础环境配置 1. 下载基础工具包 2. 下载open stack t版 客户端 3. 配置hosts主机映射 4. 三台主机做免交互 5. 配置时间同步 二.系统环境配置 1. 配置M ...

  6. openstack项目【day23】:keystone组件HTTP协议

    阅读目录 一 为何要学习HTTP协议 二 用户上网过程 三 HTTP协议 part1 http协议概述 part2 请求协议 part3 响应协议 四 抓包分析HTTP协议 一 为何要学习HTTP协议 ...

  7. OpenStack安装Glance组件

    Glance镜像服务简介 什么叫镜像,镜像就是资源的集合,类似压缩包 他在OpenStack中的项目名称为Glance,在早期的OpenStack版本中,Glance只有管理镜像的功能,并步具备镜像存 ...

  8. OpenStack之Keystone模块

    一.Keystone介绍 OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户.帐号和角色信息服务,并为Op ...

  9. OpenStack安装Placement组件部署(四)

    OpenStack安装Placement组件部署 一.Placement组件介绍 二.OpenStack-Placement组件部署(ct(192.168.28.11)) 1.创建数据库实例和数据库用 ...

最新文章

  1. 目标4个9的可用性?试试用 Prometheus 和 Grafana记录服务可用时间
  2. 3位高二女生用大数据成功预测地铁出站人数 | 00后正在抛弃你
  3. 原型模式(Prototype)以及深浅复制
  4. 利用hacking搜索技巧搜索到你任何特定想要的内容
  5. 前端开发必须知道的JS(二) 闭包及应用
  6. python一维数组排序_【Python】数组排序
  7. Lattice PCIe 学习 1
  8. C++ 多态(2): 纯虚函数, 抽象类和接口类
  9. Django框架目录结构
  10. python中str,int,list,list(str),list(int)的相互转换
  11. Python小白机器学习教程:Sklearn精讲
  12. 51nod 1238 最小公倍数之和 V3
  13. 数据集成的两种架构:ELT和ETL
  14. dateadd函数转成oracle,oracle dateadd函数
  15. Swift 编译器中间码 SIL
  16. 服务器绑定网站域名,服务器网站绑定域名
  17. python unescape函数_Python:unescape特殊字符,不分割数据
  18. Vim中退格键的使用
  19. 关于微信检测SDK应用的原理浅析(iOS)
  20. 2020一建和二建考试有哪些不同?介绍一下

热门文章

  1. tcplayer 源码改造第三弹 - 防盗录
  2. 钱多多第二阶段冲刺05
  3. HDFS成员的工作机制
  4. python之scrapy:攻克技术点ASP.NET分页处理、request和response传参、pipeline区分传来Items
  5. *POJ1830 高斯消元
  6. Python基础-编码
  7. 改纸盒大小_如何DIY纸盒人图解教程(含各细节详细尺寸)
  8. 解决Ubuntu系统设置打不开
  9. stc c语言编程,谁有STC 的 EEPROM C程序
  10. 19.3 Table 1-2.S3C2440A 289-Pin FBGA Pin Assignments (Sheet 4 of 9) (Continued)