OpenStack入门之核心组件梳理(1)——Keystone篇

OpenStack入门之核心组件梳理(1)——Keystone篇

前言

? 先前的文章中笔者从整体上介绍了有关OpenStack相关内容,包括:概念、主要组件及项目、部署节点类型以及整体架构。那么从本文开始我们将介绍有关OpenStack核心项目的理论知识,逐一详细介绍各个服务项目。

? 友情链接:下面的三篇文章对于初学者或多或少可以帮你在宏观上了解云计算以及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是如何工作的,要对整个响应的工作流程非常熟悉理解。

? 笔者能力有限,如果有什么疏漏之处还望指出,谢谢阅读!

原文地址:https://blog.51cto.com/14557673/2475859

时间: 2024-10-15 14:06:58

OpenStack入门之核心组件梳理(1)——Keystone篇的相关文章

OpenStack入门篇(七)之认证服务Keystone

一.Keystone的概述 Keystone是Openstack的组件之一,用于为Openstack家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌的发放和校验,服务列表,用户权限的定义等.Openstack中任何组件均依赖与Keystone提供的服务. 二.Keystone的功能 用户与认证 用户权限与用户行为追踪. 服务目录 为每个组件服务提供一个可用的服务目录和相应的API入口端点. 三.Keystone基本概念 User 使用服务的用户,可以是人,服务或者系统,只要是使用了op

OpenStack入门——理论篇(二):OpenStack的节点类型和架构(含登录的仪表板界面示例)

OpenStack入门--理论篇(二):OpenStack的节点类型和架构(含仪表板界面示例) 前言 ? 看了网上的一些博客对OpenStack架构的描述,大部分都是将官网的架构图截取下来(还是纯英文文字描述的图片)或者直接将描述翻译为中文直接复制粘贴过来了.如果对于初学者而言,这或许是有字天书了.所以笔者先前的一篇文章是介绍了关于OpenStack的基础知识和核心的组件服务.而本文先从OpenStack部署的节点结构描述,再来对其整体架构进行阐述. 一.OpenStack节点类型 ? 在介绍O

二、OpenStack入门 之 架构分析

OpenStack入门 之 架构分析 写在前面 学习目标: 了解 OpenStack 各组件的逻辑关系: 了解 OpenStack 的各组件的通信和部署关系: 了解 OpenStack 的工作流程: 接下来我会掌握: OpenStack 组件间的逻辑关系: OpenStack 的API: OpenStack 组件间的通信关系: OpenStack 中几种不同的存储: OpenStack 工作流程: OpenStack 的部署架构: OpenStack 各组件之间的关系有:逻辑关系,通信关系,部署

OpenStack入门到实战视频教程全集下载(罗勇老师经典教程系列)

全网最经典的openstack 视频教程,现在免费了! 罗老师讲得实在是太好了,目前绝对是全网最好的openstack 入门视频,而且讲得特别细,非常适合初学者学习,收集了好久终于齐了,现在贡献给大家.<openstack实战演练与开发入门>http://pan.baidu.com/s/1mgN3oX6 罗老师,很善于总结与分享,个人博客干货也不少.http://yongluo2013.github.io/ 课程介绍 2.OpenStack概论3.实例:OpenStack自动安装(Fuel)4

OpenStack入门之初步认识

一.OpenStack 入门 之 基础知识 二.OpenStack 入门 之 基本组件 三.OpenStack 入门 之 各组件解析(基础) 四.OpenStack 入门 之 各组件解析(进阶) 五.OpenStack 入门 之 实际操作 六.OpenStack 入门 之 扩展话题 七.OpenStack 入门 之 若干讨论 写在前面 从 OpenStack 基础知识开始学起,剖析 OpenStack 架构,分析 OpenStack 的各个组件的功能.原理和使用方法,通过实战演练来掌握 Open

(转)OpenStack入门

第一部分 OpenStack及其构成简介 一.云计算 云计算是一种计算模型,它将诸如运算能力.存储.网络和软件等资源抽象成为服务,以便让用户通过互联网远程享用,付费的形式也如同传统公共服务设施一样.因需而定.提供方便.动态改变和无限的虚拟化扩展能力是云计算的几个重要特征. 不同的“云”对应着不同的基础设施.下面是三种广义的“云”: l 基础设施即服务(IaaS) l 平台即服务(PaaS) l 软件即服务(SaaS) 译者注:Open为开放之意,Stack则是堆砌,OpenStack合起来如其名

一、OpenStack入门 之 初步认识

OpenStack入门 之 初步认识 写在前面 从 OpenStack 基础知识开始学起,剖析 OpenStack 架构,分析 OpenStack 的各个组件的功能.原理和使用方法,通过实战演练来掌握 OpenStack 的部署和操作.为今后学习 OpenStack 的高级课程以及基于 OpenStack 构建企业级云计算系统打下基础. 在接下来的几天里,我将会学到以下主要内容: OpenStack 基础知识 OpenStack 各组件间的关系社交网络挖掘算法与实践 OpenStack 各组件解

三、OpenStack入门 之 各组件解析

OpenStack入门 之 各组件解析 写在前面 学习目标: 掌握 OpenStack 的各组件的架构和功能 本次笔记的内容有: Nova 组件解析 Swift 组件解析 Cinder 组件解析 Neutron 组件解析 Horizon 组件解析 Glance 组件解析 Keystone 组件解析 是常用的 7 个组件: 负责虚拟机创建.管理和销毁.提供计算资源服务的 Nova: 提供对象存储服务的分布式存储 Swift: 提供块存储服务的 Cinder: 提供虚拟机镜像管理和存储服务的 Gla

七、OpenStack入门 之 若干讨论

几个讨论题 仅供参考,如有雷同,纯属呵(qiao)呵(he) 1. 讨论:如何回馈 OpenStack 社区 张三: 积极关注并回馈社区,贡献代码,争取成为 committer: 积极将研发使用中遇到的问题及代码 ,回馈到社区: 将 issue.idea.丰富的 feature 提交到 bluePrint,提交到社区: 利用自己的一切资源致力于扩大中国 IT 力量在国际的影响力!(评:看到这句好欣慰!我想如果有更多这样的同学在,中国的 IT 前途很有希望): 李四: 关注各种社区并加入到符合自己