文章目录
前言
Keystone在OpenStack中的定位为全局身份服务的验证授权,其它的服务的API在接收到请求之后会向keystone做一个认证,是否有权限进行操作,如有,按照需求中不同的功能模块去分发给自己后端的子功能模块。
宏观上keystone是一个小型的认证机构。本文会从微观上讲解keystone如何进行授权认证的。
一、Keystone概述
1.1 Keystone主要功能
-
身份认证(Authentication):令牌的发放和效验
(a.令牌发放,校验/认证)令牌管理
Auth:授权,权限管理有关 -
用户授权(Authorization):授予用户在一个服务中所拥有权限
(b.控制用户可用授权的权限的范围和使用期限)
例如:规定只可以到机械学院计算机专业大一02班进行授课,时间为一个星期 -
用户管理(Account):管理用户账户
(c.管理用户) -
服务目录(Service Catalog):提供可用服务的API端点
(d.提供所需调用/使用的服务对应的API(URL)位置)及授权,鉴权通过后,会指引目标服务的endponit(API–>Web路径–>URL路径)具体位置
例如:机械学院9号楼110教室
1.2 Keystone管理对象
管理对象 (多元化,管理的对象类型非常丰富)
keystone不仅可以为客户进行授权,分发令牌,也可以给openstack内部权限进行管理
- user:指使用Openstack service的用户
- Project(Tenant):可以理解为一个人,或者服务所拥有的资源的集合
- Role:用于划分权限。通过User指定Role,使User获得Role对应操作权限
- Authentication:确定用户身份的过程
- Token:是一个字符串表示,作为访问资源的令牌。Token包含了在指定范围和有效时间内,可以被访问的资源。
- Credentials:用于确认用户身份的凭证。用户的用户名和密码,或者是用户吗和API密钥,或者身份管理服务提供的认证令牌
- Service:Openstack service,即Openstack中运行的组件服务。如nova、swift、glance、neutron、cinder等
- Endpoint:一个可以通过网络来访问和定位某个Openstack service的地址,通常是一个URL。
1.3 Keystone认证流程
以创建虚拟机为场景来介绍
① 从概述角度来看
- keystone在创建虚拟的过程中,对用户及其他组件之间的交互进行认证
- keystone会颁发令牌并进行校验
② 从整体认证流程角度来看:
- 首先user会通过命令或horizon的方式进行登录(验证方式包括令牌、密钥等);
- keystone会想user发送credentials用于表示验证成功,同时向user发送一个Token(可以使用服务的权限范围和时间)和Endpoint(API地址或者具体的URL);
- user通过Token和Endpoint向nova的API发送申请创建虚拟机的请求;
- nova会向keystone认证user的Token是否可用;
- keystone认证成功;
- nova拿着user的Token和Image向glance提出需要镜像的请求;
- glance会拿着nova给的Token向keystone认证,是否可用;
- keystone认证成功;
- glance会给nova具体的Image本身;
- nova拿着user的Token令牌和network需求向neutron发出请求;
- neutron拿着nova给的Token去向keystone认证,是否可用;
- keystone认证成功;
- neutron会提供给nova的具体的网络服务本身;
- nova开始创建VM,创建成功后返回信息给user;
- user收到虚拟机创建成功的信息。
③ 从宏观角度来看