浅谈openstack中鉴权模块keystone

来源:互联网 发布:php判断上传文件类型 编辑:程序博客网 时间:2024/06/05 22:34

    由于工作需要对于研究openstack中鉴权部分已有大半年,从G版本到现在的havana,期待着Icehouse,虽然期间也零零碎碎的接触过别的模块,但是始终keystone才是我的主场,下面废话也不多说,进入正题。

    keystone中最容易让人迷惑的不是每个对象的概念,而是它们之间错综复杂的关系,首先对于基本概念这里也不免俗套的要先介绍一遍:

    user:顾名思义,用户。

    role:角色,这个对象的存在是很重要的。

    group:群组,管理用户的对象,

    project:租户,也可以理解为资源的集合,

    domain:我称它为域,v3中存在的对象,其下可以挂user和project。

    service:服务,例如当前openstack中每个模块都算一个服务,那么在keystone就会注册一个属于自己的服务。

    endpoint:它的存在是为了解决服务之间访问的问题,记录这对应服务的访问url。

    trust:v3中存在的对象,信任关系。

    credential:证书,对于openstack来说要兼容ec2那么该证书代表的就是导入的ec2证书保存到keystone之后的对象。

    番外:

    consumer:消费者,这个在oauth1(H版本加入)中创建的对象。

    accesstoken和requested token等这些都是oauth1中存在的对象,这样就先不多讲,暂时工作中还没涉及到使用该功能。

    鉴权过程分为两个部分:

 1. 模块之间访问的鉴权,比如你直接申请创建一个虚拟机,那么这个权限的控制过程就是通过keystoneclient转发到keystone进行权限认证。

而这个认证的核心是token,token的由来就要说到第二部分。

2. 直接和keystone交互的鉴权,比如创建一个用户等,或者该用户想操作openstack其他模块的功能需要先通过keystone申请一个token,代表着用户所属的角色,在policy.json文件中有对每个role可以操作什么动作有具体的规定。

先大概说这么多吧,后续再补进,这篇博客也是写了半年才完,期间经历了工作的更换,从研究openstack到另外一个领域,但是openstack我是不会放弃的。

    

0 0