openstack的keystone认证服务

一、keystone 简介

keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云平台中第一个即需要安装的服务。

二、keystone主要功能

  • 管理用户及其权限
  • 其他组件地址管理:负责存放其他组件URL路径的目录
  • 3A服务认证:账号(账户管理)、身份认证、办法授权

三、keystone基本概念

3.1 keystone介绍

在这里插入图片描述

keystone的相关概念可以以一个城市的酒店服务来举例说明:

酒店就类似于project项目,酒店提供住宿的服务service,user相当于客人,endpoint相当于客人住酒店时的询问的酒店的地址,role为角色,如客人定了个豪华套房,name他就是贵宾,定了标间,他就是普通客人,credentials相当于入住酒店时提供的身份证,酒店前台利用身份证获取身份信息并提供房间,这个过程相当于authentication,办理入住后拿到的房卡相当于token,利用token就可以刷开房间门进行住宿这项service。

① 用户(User)

  • 用户:指代任何使用 OpenStack 的实体,可以是真正的用户,其他系统或者服务。。就像Linux系统里的用户有普通用户、root、系统用户等。
  • 在OS中是通过一串字符串来表示,id
  • 用户在登录时会分配到令牌,通过令牌来访问其他服务

② 凭证(Credentials)

  • 是用户用来验证自己身份信息的数据,如令牌、用户名密码、apikey等

③ 验证( Authentication)

  • 验证是否合法、令牌是否有效(是否过期)。是 Keystone 验证 User 身份的过程。User 访问 OpenStack 时向 Keystone 提交用户名和密码形式的 Credentials,Keystone 验证通过后会给 User 签发一个 Token 作为后续访问的 Credential。

④ 令牌(Token)

  • 用于访问各个服务api或资源的一串字符串,临时令牌具有一定的时效性,过期便失效。是由数字和字母组成的字符串,User 成功 Authentication 后 Keystone 生成 Token 并分配给 User。

    • Token 用做访问 Service 的 Credential

    • Service 会通过 Keystone 验证 Token 的有效性

    • Token 的有效期默认是 24 小时

⑤ 租户( oject)

  • 独立的资源容器。oject 用于将 OpenStack 的资源(计算、存储和网络)进行分组和隔离。
    根据 OpenStack 服务的对象不同,Project 可以是一个客户(公有云,也叫租户)、部门或者项目组(私有云)。

    这里请注意:

    • 资源的所有权是属于 Project 的,而不是 User。
    • 在 OpenStack 的界面和文档中,Tenant / Project / Account 这几个术语是通用的,但长期看会倾向使用 Project
    • 每个 User(包括 admin)必须挂在 Project 里才能访问该 Project 的资源。 一个User可以属于多个 Project。
    • admin 相当于 root 用户,具有最高权限
    • Horizon 在 Identity->Projects 中管理 Project
    • 通过 Manage Members 将 User 添加到 Project

⑥ 服务(service)

  • OS中提供的服务,如glance镜像,nova计算,swift存储。服务提供了一个或多个端口以供访问。(OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。每个 Service 都会提供若干个 Endpoint,User 通过 Endpoint 访问资源和执行操作。)

⑦ 端点、端口(Endpoint)

  • 用于访问某个服务的URL地址,api接口。

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

    • Admin:只能被管理员访问

    • Public:可以被全局访问

    • Private:只能被openstack 内部服务访问

⑧ 角色(Role)

  • 用户权限的集合,如管理员拥有最高权限。Role就是角色。Role代表一组用户可以访问的资源权限。例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的或者租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,也就是说所有的租户都有角色role所规定的权限;在租户内的role中,用户仅拥有租户内橘色规定的权限。

3.2 Keystone基本架构

在这里插入图片描述

  • Token: 用来生成和管理token

  • Catalog:用来存储和管理service/endpoint

  • Identity:用来管理tenant/user/role和验证

  • Policy:用来管理访问权限

3.2 访问请求控制(Token)

  • Service(nova,glance,swift等服务需要在keystone上注册)
  • Endpoint(service暴露出来的访问地址)
  • Token(访问资源的令牌,具有时效性)

3.4 注册表服务 (Catalog)

openstack服务需要注册到keystone注册表中

四、keystone 工作流程

4.1 工作流程图

在这里插入图片描述

4.2 工作过程描述

  • ① user使用命令或控制台登录,需要先将自己的资格证书发给keystone,认证成功后,keystone会给与用户一个临时令牌和一个访问服务的端点
  • ② user把临时的令牌交给keystone,发送创建虚拟机请求,nova收到令牌后,会向拿着令牌向keystone确认合法性,keystone认证成功后返回给nova
  • ③ nova创建虚拟机需要镜像,所以拿着请求镜像服务的令牌给与glance服务,glance收到令牌后拿着令牌向keystone认证合法性,keystone认证成功后返回给glance,此时glance服务将nova所请求的镜像给与nova
  • ④ nova创建虚拟机需要虚拟网络,所以向neutron发出请求,neutron收到nova给与的令牌向keystone认证合法性,是否可用,keystone认证成功后返回给neutron,随即neutron给与nova提供所需的网络服务
  • ⑤ 最后nova服务开始创建vm虚拟机,创建完成后返回信息给user: the vm is create sucessfull
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值