OpenStack入门之核心组件梳理(1)——Keystone篇
OpenStack入门之核心组件梳理(1)——Keystone篇
前言
先前的文章中笔者从整体上介绍了有关OpenStack相关内容,包括:概念、主要组件及项目、部署节点类型以及整体架构。那么从本文开始我们将介绍有关OpenStack核心项目的理论知识,逐一详细介绍各个服务项目。
友情链接:下面的三篇文章对于初学者或多或少可以帮你在宏观上了解云计算以及OpenStack。
云计算浅谈
那么,首先来讲一下核心项目之一的Keystone相关的内容。本文将从概念作用、主要组成、模式架构、工作原理四个部分层层介绍,最后对Keystone这个项目做一个总结。
一、Keystone的概念作用
通过前面的文章,应该对OpenStack的核心组件服务有了整体上的认知了。本文将针对OpenStack集群服务中Keystone项目服务进行讲解。本小节将详述Keystone的概念。
Keystone是OpenStack组件之一——Identity Service(认证服务)成立的核心项目。该项目整体上相对于其他项目并不复杂,其类似于一个服务总线,也可以理解为整个OpenStack服务框架的注册表,OpenStack中其他项目通过Keystone可以注册其服务然后获得该服务的Endpoint(服务的访问端口,或者理解为入口),这个Endpiont可以是一个也可以是多个。此外,任何服务之间的调用也需要通过Keystone的认证才能获得目标服务的Endpoint来访问对应服务。
当然,既然是认证服务,就有一定的认证机制,那么思考一下在生活中可以想到有什么类似认证的例子?
其实,这样的例子很多,家家户户的锁匙就是一种认证机制,再比如支付宝账号密码登录也是认证机制的典型例子,再如,各种门票入场券都可以认为是一种认证机制。
总而言之,Keystone项目就是通过相应的认证授权形式来向其他服务或其他服务之间提供服务支持,其主要功能就是对用户和服务进行管理的。因此我们要理解如何管理用户以及服务,就需要对Keystone的主要模块构成熟悉理解。
二、Keystone的主要组成
本小节将介绍Keystone对用户和服务进行管理层面上对应组成概念及作用的介绍,介绍过程中涉及的术语都会在下文进行详细介绍,可以自行查阅理解。
2.1 User
表示使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户。当User对OpenStack进行访问时,Keystone会对其身份进行验证,验证通过的用户可以登录OpenStack云平台并且通过其颁发的Token(下面会讲解)去访问资源,用户可以被分配到一个或者多个tenant或project(下文给出介绍)中。
2.2 Tenant
表示使用访问的租户,作用是对资源进行分组,或者说是为了使提供的资源之间互相隔离,可以理解为一个一个容器,也称为Project。
在一个租户中可以拥有很多个用户,用户也可以隶属于多个租户,但必须至少属于某个租户。租户中可使用资源的限制称作Tenant Quotas,联想一下Linux系统磁盘管理的磁盘配额,这个Quotas的含义就是配额、限额。用户可以根据权限的划分使用租户中的资源。
2.3 Token
表示提供进行验证的令牌,是Keystone分配的用于访问OpenStack API和资源服务的字符串文本。用户的令牌可能在任何时间被撤销(revoke),就是说用户的Token是具有时间限制的,并且在OpenStack中Token是和特定的Tenant(租户)绑定的,也就是说如果用户属于多个租户,那么其就有多个具有时间限制的令牌。
2.4 Credential
表示用户凭据,用来证明用户身份的数据,可以是用户名和密码、用户名和API Key,或者是Keystone认证分配的Token。
2.5 Authentication
表示身份认证,是验证用户身份的过程。将上面的几个结合起来简单说明一下该过程。
首先,用户申请访问等请求,Keystone服务通过检查用户的Credential确定用户身份;然后,在第一次对用户进行认证时,用户使用用户名和密码或用户名和API Key作为Credential;其次,当用户的Credential被验证之后,Keystone会给用户(用户必定至少属于一个租户)分配一个Authentication Token来给该用户之后去使用。
2.6 Service
表示服务,有OpenStack提供,例如Nova、Swift或者Glance等等,每个服务提供一个或多个Endpoint(服务的入口)来给不同角色的用户进行资源访问以及操作。
2.7 Endpoint
表示服务的入口,是一个由Service监听服务请求的网络地址。客户端要访问某个service,就需要通过该service通过的Endpoint(通常是可以访问的一个URL地址)。在OpenStack服务架构中,各个服务之间的相互访问也需要通过服务的Endpoint才可以访问对应的目标服务。
2.8 Role
表示角色,类似一访问控制列表——ACL的集合。主要是用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。其实在Keystone的认证机制中,分配给用户的Token中包含了用户的角色列表。
换言之,Role扮演的作用可以理解为:当服务被用户访问时,该服务会去解析用户角色列表中的角色的权限(例如可以进行的操作权限、访问哪些资源的权限)。
2.9 Policy
表示策略,用于控制某一个Tenant中的某一个User是否具备某个操作的权限。也就是说,通过Policy机制,依据配置文件(默认是在/etc/keystone/目录下的policy.json文件),可以决定User可以执行什么操作,不能执行什么操作。
该文件内容格式如下(大致了解一下即可):
1 { 2 "admin_required": "role:admin or is_admin:1", 34 "identity:get_project": "rule:admin_required", 35 "identity:list_projects": "rule:admin_required", ...... 45 "identity:delete_user": "rule:admin_required", 46 "identity:change_password": "rule:admin_or_owner", 47}
三、Keystone的架构理解
上篇文章介绍OpenStack的架构的时候给出过如下的一个架构图,不知道是否有所印象或者之前在其他的文章中看见过:
通过该图,我们可以直观上了解Identity Service的Keystone服务是一个提供统一整体认证的项目,不仅建立自身与用户之间的关系,也是其他服务之间进行资源访问等操作的纽带。
Keystone内部结构图如下所示:
该结构非常简单,上面是Keystone的服务和管理的API,下面是对应的各个后端服务应用,例如:令牌、编目、策略以及身份等方面的服务集合。说到这里,需要补充一点,Keystone可以集成普遍使用的目录服务,如LDAP(轻量级目录访问协议)。
四、Keystone的工作原理
通过以上内容,想必对Keystone概念主要作用、组成部分以及结构模型有了自己的理解了。那么下面来理一下Keystone是如何进行工作的,或者说它的响应的流程是怎样的。
下面通过一个用户创建实例的过程中对于Keystone认证过程,结合示意图来介绍整个Keystone服务的响应流程。在阅读整个过程的同时体会理解上面的9个组成部分的作用,进行自己的思考加深理解。
下面以该创建实例虚拟机为例描述Keystone与其他服务之间的响应流程:
一次建立:
1、用户首先向Keystone发送如用户密码之类的身份信息(用户名和密码或者用户名和API key),Keystone验证成功后向用户配发Token;
三次请求,三次确认:
2、之后用户向Nova发出带有Token的实例创建请求,Nova接收到请求后向Keystone验证Token的有效性,确定该Token是否有效;
3、上述的Token被证实有效后,由Nova向Glance服务发出带有Token的镜像传输请求,Glance同样要到Keystone去验证Token的有效性;
4、上述的Token被证实有效后Glance向Nova正式提供镜像目录查询和传递服务,Nova获取镜像后继续向Neutron发送带有Token的网络创建服务,再由Neutron向Keystone求证Token的有效性;
5、Token被证实有效后,Neutron允许Nova使用网络服务;
一个最终结果:
6、Nova启动虚拟机成功,同时向用户返回创建实例成功的通知。
五、Keystone的理论总结
本文旨在介绍Keystone的作用和工作原理,重点在于Keystone提供的认证服务,包含的9个主要部分内容,脑海里有其与其他组件以及用户之间的关系,最为重要的就是Keystone是如何工作的,要对整个响应的工作流程非常熟悉理解。
笔者能力有限,如果有什么疏漏之处还望指出,谢谢阅读!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用Float或Real数据类型的危险
SQL Prompt根据数据库的对象名称、语法和代码片段自动进行检索,为用户提供合适的代码选择。自动脚本设置使代码简单易读--当开发者不大熟悉脚本时尤其有用。SQL Prompt安装即可使用,能大幅提高编码效率。本文介绍了使用Float或Real数据类型的危险。 浮点数据类型可容纳非常大的数字,但是缺少了精度。它们对于某些类型的科学计算很方便,但是在更广泛地使用时很危险,因为它们会引入较大的舍入误差。 浮点运算就是为了避免计算中的溢出错误而容忍和管理近似。在现实世界中,我们通常关心数字的准确性,而会牺牲空间和资源以避免溢出。 科学是在误差范围内工作的,而精确在商业会计中至关重要。当我还是一名初级程序员时,我曾经写过一种我认为是银行计算交易利润非常合适的方法。在一百万英镑中,最多也就一两便士的误差,我很满意。它使用了我们当时用来开发财务软件包的PL / 1编译器中固有的计算。我向他们展示了精心制作的应用程序,他们感到震惊。冷酷无情的银行家们毫不留情地表示一百万英镑没了几分钱。他们不会接受的。我被迫用精确的汇编代码编写一个精确的二进制编码的十进制(BCD)程序包。 SQL Prompt具有...
- 下一篇
阿里云虚拟主机、轻量应用服务器和ECS云服务器的区别对比
阿里云提供云虚拟主机、轻量应用服务器和ECS云服务器三种云产品,都可以用来建站。不过对于新手来说选择方面还是有一定困难的。本文帮助大家了解三种云产品之间的区别、适用场景及优势对比,方便选择。 一、虚拟主机、轻量应用服务器和云服务器ECS 简单看来,云虚拟主机预装建站环境,用户不用自己维护服务器,自由度低,适用于新手入门;云服务器ECS技术门槛要求高一些,用户自由搭建环境,有系统最高权限,可弹性扩容;轻量应用服务器属于ECS服务器不过为了新手增加了不少辅助功能。 二、独享虚拟主机每台独享虚机的CPU内存、带宽、硬盘均为独享,具有独立 IP独享资源,空间超大,可视化控制面板,预装网站环境,入门新手和小微企业建站首选预装了常见的建站运行环境和数据库,不需要用户安装。·提供可视化的主机控制面板,各项功能能够通过点击鼠标就能完成;不需要用户参与服务器运维,由产品整体负责维护,省事省心。无登录服务器权限,无法对服务器或者运行环境配置做个性化定制。只能用来建站,无法用做其他用途。 三、轻量应用服务器支持远程登录,包括SSH方式,远程桌面RDP方式需要一个快速进入开发状态的资源集合的个人项目开发者。需...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Red5直播服务器,属于Java语言的直播服务器
- Hadoop3单机部署,实现最简伪集群