【课程笔记】华为 HCIP-Cloud Computing 云计算04:OpenStack认证管理
Keystone—OpenStackIAM服务(统一身份认证)—云服务Keystone是OpenStack中安全认证的相关服务类型,主要提供人机认证和机机认证两种认证模式,涵盖了主流的所有认证方法,保证了OpenStack集群的内部安全作为OpenStack中的重要组件,Keystone是一个共享性服务,即所有的用户和服务组件都需要和Keystone建立连接。Keystone作为OpenStack
OpenStack认证管理
目录
一、Keystone简介
Keystone—OpenStack IAM服务(统一身份认证)—云服务
Keystone是OpenStack中安全认证的相关服务类型,主要提供人机认证和机机认证两种认证模式,涵盖了主流的所有认证方法,保证了OpenStack集群的内部安全
作为OpenStack中的重要组件,Keystone是一个共享性服务,即所有的用户和服务组件都需要和Keystone建立连接。Keystone作为OpenStack中的认证组件,如果出现问题,会导致集群整体的不可用
Keystone基本概念
(1)Domain域:域主要是负责做逻辑隔离的,即在一个物理环境下,通过域可以逻辑将其划分为多个逻辑环境。物理上是一体的,但是逻辑上是隔离的,在不同的域中的用户是无法感知其他域的任何信息的。域的ID必选全局唯一
(2)Group组:组的概念是对域的进一步细分,域内的组之间是可以互相感知的,我们可以认为OpenStack环境是总公司,域是子公司,组是部门
(3)User用户:用户是最终OpenStack的使用单位,用户一般是归属于Group的
(4)Role角色:角色是一类具有相同特征的权限的对象,角色一般是权限的集合体,我们将多种权限分配给角色,让角色携带有对OpenStack的操作权限。权限是能否做某些相关的操作在集群中。通过分配权限给角色,对应的角色能在集群中做什么样的操作也就固定了
(5)Project项目
为什么要有项目:当一个部门中同时有多个项目组在做不同的工作的时候,由于部门本身概念等同于Group,所以部门中所有的员工都是互相可见的。这也就代表其他人创建的资源,所有用户都可以看到,当该部门的资源过多的时候,如果进行管理就成为了一个问题,比如部门中多个项目组之间就冗余导致资源使用混乱
-
通过定义项目,可以给部门做逻辑资源分割,例如打车的app和导航的app之间,会有比较多的信息共用,信息共用如果不做逻辑划分就容易产生冲突,切分成项目之后,这些资源就可以得到比较有效的管理
(6)资源:资源的本质就是服务的集合,不同的服务提供了项目所需要的各类型的资源
(7)Service服务:对于一类资源的生命周期进行管理的业务的统称就叫做服务
(8)Endpoint端点:访问服务的方式,也是服务对外暴露的接口,可以是web,也可以是cli,也可以是API
(9)认证
Token令牌:一般用于用户和服务之间的访问进行使用,服务通过令牌解析判断访问的用户是否是合法的
-
Credential凭证:用户登录的时候使用比较多的,比如登录OpenStack或者登录资源(VM),体现方式为用户名和密码
User用户 -加入> Group组;Role角色 -绑定> Group组;User用户 -继承角色,获取权限> Role角色
二、Keystone架构
Keystone各组件作用
(1)Keystone API:接收外部请求
(2)Keystone Middleware:缓存Token等,减轻Keystone Services压力
(3)Keystone Services:不同的Service提供不同的认证或鉴权服务
(4)Keystone Backends:实现Keystone服务,不同的Service由不同的Backend提供
(5)Keystone Plugins:提供密码、Token等认证方式
Keystone架构
(1)访问与中间件API&Middleware
-
API接口:提供外部访问内部的端口
-
中间件:主要是负责缓存已经经过验证的令牌,提升访问效率,降低访问延迟
(2)服务层Service:主要是对外提供认证服务,包含有Token认证、权限与角色封装、认证策略、日志记录等相关功能
(3)后端层Backend:负责存储Keystone的相关数据,尤其是权限、角色等相关信息
(4)认证层Plugin:主要负责维护凭证和令牌信息
三、Keystone对象模型
Keystone对象管理
(1)identity身份
-
用户
-
组
(2)Resource资源
-
域
-
项目
(3)Assignment分配
-
角色:包含权限、内置、自定义
-
角色分配
(4)Token令牌
(5)Catalog目录
-
端点:服务的访问方法
四、Keystone工作原理和流程
OpenStack资源创建流程(简)
(1)用户提交任务之后,Horizon会调用API接口将用户在web上配置的参数转换为指令下发
(2)在指令下发之前,首先用户需要提供自己的用户名和密码发送给keystone,用于获取访问对应服务的令牌。在实际操作中,我们是不需要做这一步的,因为Horizon已经替代用户自动发送了
(3)keystone收到信息之后,会通过自身的keystone的keystone Service模块的identity进行验证,实际的验证工作是由keystone plugin完成的
(4)验证完成之后,keystone会生成该用户的访问令牌,默认为fernet模式,并反馈给用户
(5)用户获取令牌之后,就会将命令和令牌一次性传输给对应的服务,相关的服务收到之后,会首先对令牌进行解密,然后将令牌信息发送给keystone
(6)keystone收到服务的验证信息之后,首先会确认令牌是否会被篡改,如果被篡改则反馈连接不合法,如果确认正常,则keystone连接keystone service,查询本地的Assignment、resource、endpoint并反馈给查询服务
(7)服务收到信息之后,会根据endpoint显示的url反馈给用户。同时服务会执行用户下发的命令(前提是用户具有权限可以执行)
(8)如果在执行的过程中,需要跨服务创建资源,则由收到用户请求的服务作为代理,将命令和用户的令牌一起发送给其他服务
(9)其他相关服务收到信息之后,同5-8步执行
(10)当任务执行完成之后,收到请求的服务会向用户反馈执行完成,同时经过一段时间之后,令牌过期
OpenStack资源创建流程(详)
(1)用户通过使用用户名密码登录horizon或者是CLI
(2)Horizon收到用户登录请求首先会联系keystone,验证用户是否合法
(3)keystone收到请求之后,验证用户是否合法,同时反馈用户的权限信息给Horizon
(4)登录完成之后用户进行操作,当用户需要下发命令,所有的操作在提交的时候统一转化为API指令
(5)在命令下发之前,首先Horizon会替代用户携带用户名和密码信息发送给keystone,请求获取令牌
(6)keystone收到请求之后,首先会转发请求给keystone service,通过identity服务进行验证,实际上是通过keystone plugin服务进行查询。确认用户合法之后,Service会中的token会要求plugin服务会生成令牌,令牌生成之后,会由Token通过API反馈给用户
(7)令牌获取之后,用户(Horizon)会将自身的请求和令牌一起交给对应的服务
(8)服务收到请求和令牌之后,首先会用令牌联系keystone,确认合法性和权限
(9)keystone收到了服务的请求之后,首先把令牌发送给service的token服务,token会验证令牌是否合法
(10)确认合法之后,Service会查询identity获取用户的组信息,查询Assignment查询角色分配与权限,查询resource(policy)获取域和项目信息,最后查询catalog根据权限获取端点url。然后将这些信息统一反馈给服务
(11)服务收到之后,会根据用户的相关信息进行任务执行,同时会将url透传给用户,通过Horizon打开对应的url链接
(12)如果需要跨服务执行,则重复服务的查询和执行步骤
(13)当任务执行完成之后,向用户反馈写完成,等待令牌过期
(14)在任务执行过程中,Horizon会周期性的查询执行进度
更多推荐
所有评论(0)