在openstack中的keystone模块中,对于它中涉及的一些概念进行了学习,借鉴了前辈们的经验和查阅一些资料,记录下来的自己的理解:
在这个keystone中,主要围绕的就是user和tenant,由于又涉及了一些其他方面的问题,进而才引入了其他的概念。user和tenant的关系就像住宾馆的住户和宾馆的关系:
user就是当住户去宾馆居住的时候,住户就是user,而宾馆就是tenant。宾馆只提供房间,住户只需要住房。这是以前的住宾馆的形式。
现在,我们住宾馆的时候,过程就相对复杂了:开房间要身份证,房间的钥匙是一个可以当卡刷的牌子,进出宾馆的时候需要用钥匙来开启宾馆的大门,同时宾馆还提供了诸如饮食,娱乐,健身等各种服务,而且服务的层次不同,房间也不同,房间中的配置也不同。这个时候,和宾馆的关系就复杂了。这个时候的涉及到的一些概念如下:
user:住进宾馆的人,即是住户。在v3版本中,引入了group的概念,它是user的集合。
credentials:在查找的资料中,它指的是开启房间的钥匙,而我的理解是它是身份证,是宾馆允许你居住的一个凭证,只有拥有了这个凭证,宾馆才允许你居住。
authentication:在查找的资料中,这个是宾馆从安全的角度考虑,拒绝不必要的人进出宾馆,专门设置的机制,只有拥有钥匙的人才可以进出。我的理解是有两个方面,一方面是对要居住人的身份验证,即是这个人身份的合法性的验证,这个时候的user是没有钥匙的,只有通过了这个验证,才允许这个user居住进去。另一方面,是在这个user已经通过了身份验证,允许住进来,这个user已经拥有了钥匙,这个钥匙可以理解为token。这个时候,user可以凭借这个token,来表明他的身份,他所可以享有的服务,服务的等级等等这些信息。
token:在上面的理解中,涉及到了token,token是什么呢?token一种钥匙,是user的身份象征。是住户在入住宾馆和通过身份验证后,宾馆给予住户的象征身份的凭证,凭借它,可以进出宾馆,可以选择宾馆提供的服务,在住户进行选择宾馆的服务的时候,通过这个token就可以判定住户的身份,vip的等级等等这些信息。是住户身份的一个象征。
tenant:宾馆,在v3版本中,引入了domain的概念,即是域。在一个区域domain中,宾馆可以有很多个,一个宾馆可以有很多个住户,一个住户可以选择不同的宾馆;在不同的区域domain,可以拥有相同名称的宾馆,可以是同一个人。
service:服务,宾馆提供的服务,通过验证token,可以确定这个token的拥有者的身份,vip的等级,所能享受的服务等等。是服务的一个统称。比如:宾馆提供的饮食服务,娱乐服务等。
endpoint:具体的一种服务,通过token确定了这个token拥有者的权限,进而可以享受的具体的服务。是每种服务中具体的一些服务。比如:饮食类中的吃烧烤服务,健身类中的打羽毛球服务等。
role:权限。vip的等级越高,享有的权限越高。要依据住户的token,来确定住户是否具有享有所提供服务的权限,依据住户的vip等级,不同的等级,所享有的服务,服务的层次是不同的。
以上这些是个人的理解