阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Keystone初入门知识

156次阅读
没有评论

共计 2287 个字符,预计需要花费 6 分钟才能阅读完成。

导读:本博文简要介绍 openstack 中 keystone 模块,受众是刚接触 openstack 的同学。

  • 什么是 keystone?
  • 为什么要 keystone?
  • keystone 为什么要设计成这样?
  • keystone client 有哪些命令?
  • keystone 工作流程?

为了形象介绍 keystone 概念,我们假设 OpenStack 为一家新成立的公司,其主要业务是对外提供服务,具体服务请自行脑补 ^^.
新公司刚开业,为首之际当然是招聘员工。小型创业公司人手不要多,每个服务来一个就够用。经过一番拼搏,最后脱颖而出的有 nova,glance,neutron 等。公司老板想,人数不多嘛,大家互相见一见就认识了,不如就由 nova 负责他们的信息认证。
公司人手招够,开始对外服务,作为第一波顾客的我们来到 OpenStack 柜台。一看有客人到来,负责安全认证的 nova 赶紧上来问我们是谁,打哪而来,准备去哪。我们刚准备回答,glance 楼上大喊一声将 nova 叫走。老板一看 nova 业务繁忙也确实忙不过来,是应该考虑再招一个人,这个人工作内容是什么呢,老板开始思考。无论如何,先招待第一波客人是关键,于是老板亲自来招待我们。 首先当然是登记个人信息,注册一个账号。信息不用多,名字,密码,邮箱即可。老板想,最好是有这样的一个表让顾客申请,叫做 user。

Keystone 初入门知识

  • admin 系统管理员
  • test 普通 User
  • glance,nova OpenStack 服务提供模块

此表设计当真简介明了,无差别对待员工和顾客,等等,这样怎么体现我们员工的优越性。得做点什么区分一下我们的员工和顾客。为了方便管理, 最好有一张区别身份的表, 就叫做 tenant 吧 ,nova 啊,glance 统统塞到 service 好了,留一个 admin 是我日后要找的管理员。
Keystone 初入门知识

突然楼上 nova 电话打叫保安,好像是有一个顾客偷偷跑到他们后台办公地方。老板一想 nova 可是公司核心员工,所做的都关乎公司核心机密,怎么好让顾客能让公司里随便出入呢。一定要杜绝这个现象,要在顾客信息里加一栏权限。但是刚才客户表也填好了,也不好让顾客重新填。 那就干脆重新弄一张表来记录用户的权限,就叫它 role 吧
Keystone 初入门知识
每一个用户可以分配不同的角色,如这里列出有 member 和 admin。

老板终于解决了用户信息的问题,刚想坐下来喝杯茶休息一下,我们的 glance 又来了。glance 问老板,我找不到 nova 了,老板想了下 nova 业务众多,给他分配的办公室也多,找起来是不方便。 最好可以记录下每个员工的位置信息,这样新员工入职后,也方便老员工去找。最好是先记录每个员工是干什么的,再记录他们办公在哪,而且这两张表还要分开,因为办公室有可能更改。 记录员工工作内容的就叫 service,记录员工工作地方的就叫 endpoint 好了。
Keystone 初入门知识

这样一来,终于解决了用户信息,权限的问题,我们也方便去找哪个员工此时在哪。想到此时老板就对要招的新员工的工作有个定位了,他就是管理所有人信息,记录每个人的权限,记录每个员工的职位,以及办公地点。有了上述信息后,他就可以验证每个顾客和员工的身份信息。恩,他就叫 keystone.


keystone 正式加入 Openstack 后,第一天上班老板交给他一本岗位手册,上面告知它的工作内容是什么。 首先他需要认证用户的身份合法并且具有执行相应操作的权限,其次用户在使用服务时,提供服务的人(比如 nova)是其本人。最后 Openstack 各个组件间交互时,也要由他验证身份和权限。除此之外还要维护下表列出的一些表单,主要操作是增删改查。

typeDescriptionAddDeleteUpdateGet
user 用户,理解为公司内员工 createdeleteupdate/password-updatelist/get
tenant 租户,理解为公司内不同的部门 createdeleteupdatelist/get
role 角色,理解为公司部门内不同的权限 createdelete list/get
service 服务,用于注册服务 createdelete list/get
endpoint 端点,用于记录服务地址 createdelete list/get
ec2-credentials 信任证书 createdelete list/get
user-role 绑定用户和权限的关系 addremoveupdatelist

keystone 工作一段时间后,发觉每次验证用户的账号密码,很是麻烦,效率太低,而且用户等待时间也过久,严重印象了服务质量。于是他向老板提出建议,能不能发一个 token 给验证过的用户,让用户在之后的一段时间里可以使用 token 作为身份信息,那这样验证起来效率就高很多。老板一听感觉还不错,就答应了。于是就有了这样的验证机制:

  • admin_token 认证
  • 用户密码方式认证
    • 本地认证
    • Token 认证
    • 外部认证

很快公司又出台了 keystone 工作流程以为提高 keystone 服务质量。
服务间访问流程如下:

  1. 创建 keystone client 对象。通过 keystone client 向 keystone 服务器发送认证请求,申请用户 token。
  2. 创建要访问的组件相应的 client 对象,根据对象找到其 endpoint 信息
  3. client 向 openstack 服务发送 http 请求,通过 auth_token 过滤器认证。认证通过后,openstack 调用相应的方法处理请求。

至此新员工 keystone 工作介绍就告一段落了。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-08/134168.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2287字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中