openstack 之keystone基础.docx

上传人:b****5 文档编号:4935332 上传时间:2022-12-11 格式:DOCX 页数:7 大小:248.60KB
下载 相关 举报
openstack 之keystone基础.docx_第1页
第1页 / 共7页
openstack 之keystone基础.docx_第2页
第2页 / 共7页
openstack 之keystone基础.docx_第3页
第3页 / 共7页
openstack 之keystone基础.docx_第4页
第4页 / 共7页
openstack 之keystone基础.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

openstack 之keystone基础.docx

《openstack 之keystone基础.docx》由会员分享,可在线阅读,更多相关《openstack 之keystone基础.docx(7页珍藏版)》请在冰豆网上搜索。

openstack 之keystone基础.docx

openstack之keystone基础

openstack之~keystone基础

1第一:

keystone是什么?

  keystone是 OpenStackIdentityService的项目名称,是一个负责身份管理验证、服务规则管理和服务令牌功能。

它实现了openstack的identityAPI。

或者说是整个openstack架构的注册表。

  简单例子:

谁家的房子不上锁,一家几口人之间晚上睡觉,还有关上门呢。

keystone就是房子的一扇门,是家人(组件之间),或者访客(用户)需要敲门

2第二:

keystone优势

  keystone提供认证服务,安全,解决分布式环境下的统一认证方式。

(解耦)

3第三:

keystone的功能:

 

openstack是一个SOA架构,理论上各子项目独立提供相关服务,互不依赖。

实际上所有的组件都依赖keystone,它有两个功能:

(1)用户信息管理:

为了验证用户身份的合法性。

提供user管理,租户管理

(2)服务注册表管理:

keystone是整个openstack框架的注册表,其他的服务(nova,glance等等)需要通过keystone注册企其服务的Endpoint(服务访问的url)。

openstack架构体系中,任何服务之间的相互调用都需要经过keystone来进行身份验证,进而获取到目标服务的Endpoint来找到目标服务。

4第四:

keystone详解:

part1

user---》用户:

  使用Openstack的user,可以是人、服务、系统,只要使用Openstack服务的对象都叫做用户。

Credentials---》资格证书:

是用户人份的证据,eg:

省份证,可分为:

   1.用户名和密码/用户名和ApiKey

   2.一个keystone分配的身份token

Authentication---》身份验证

1.是验证用户身份的过程。

Keystone服务通过检查用户的Credential来确定用户的身份。

2.第一次使用用户名/密码或者用户名/APIkey作为credential。

当用户的credential被验证后,Keytone会给用户分配一个authenticationtoken供该用户后续的请求使用。

 

3.Keystone中通过Policy(访问规则)来做到基于用户角色(Role)的访问控制。

Token---》令牌

1.是一个访问OpenstackAPI和资源的数字字符串,访问资源时通过令牌认证通过,不在需要自己的秘钥,而该令牌是用户身份鉴定完毕之后颁发的。

在keystone中主要是引入令牌机制来保护用户对于资源的访问,同时引入PKI(公钥基础实施)对令牌加以保护。

2.颁发的令牌也就是Token,他有可能任何时候被撤销,它包含了在指定范围和有效时间内可以被访问的资源。

Role---》角色

  1.一个role可以看做是一个acl集合,主要是权限管理。

  2.可以通过user指定role,让user获取role的权限。

eg:

dba用所有数据库的权限

  3.在keystone中,在颁发给user的token里面包含role的列表,被访问的各个组件服务会判断user的角色和user提供的token中包含的角色,以及每个角色访问资源或者操作的权限。

  4.系统默认使用的是roleadmin角色和成员roleuser角色(role_member_)

  5.user验证是必须带有定制的Project(Tenant),role会被分配到指定的Project(Tenant)中

Policy---》策略

  1.用户:

Openstack对用户的验证除了Openstack的身份验证以外,还需要验证用户对某个服务是不是有访问的权限。

Policy机制就是用来控制某一个用户在某一个Project(Tenant)中资源的操作权限,简单的说,该用户有啥权限,能操作什么,不能操作什么,就是Policy规定的。

  2.对于keystone服务来说,Policy就是一个json文件,rpm包默认路径是/etc/keystone/policy.json。

通过该配置文件,keystone可以对user进行权限管理。

Project(Tenant)---》项目(租户)

一个用于分组或者隔离资源的容器。

一个tenant可能对应一个客户、账号、组织或者项目。

在OpenStack中,用户至少必须在一个tenant中。

tenant容器的可使用资源的限制成为TenantQuota,它包括tenant内各子资源的quota。

Service---》服务 

  OpenStack中的各个服务,比如Nova、Swift或者Glance等。

Endpoint ---》端点

1.是一个可以通过网络来访问和定位某个Openstackservice的地址,通常是一个URL

2.不同的region有不同的endpoint(我们可以通过endpoint的region属性去定义多个region)。

3.endpoint告诉openstackservice去哪里访问特定的service。

如:

当Nova需要访问Glance服务去获取image时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。

4.Endpoint分为三类:

∙adminurl–>给admin用户使用,Port:

35357

∙internalurl–>OpenStack内部服务使用来跟别的服务通信,Port:

5000

∙publicurl–>其它用户可以访问的地址,Port:

5000

Service与Endpoint关系介绍:

1.在openstack中,每一个service都有三种endpoint.Admin,public,internal(创建完service后需要为其创建APIEndPoint. )

2.Admin是用作管理用途的,如它能够修改user/tenant(project)。

权限最大,

3.public是让客户调用的,比如可以部署在外网上让客户可以管理自己的云。

4.internal是openstack内部服务调用的。

5.三种endpoints在网络上开放的权限一般也不同。

Admin通常只能对内网开放,public通常可以对外网开放,internal通常只能对安装有openstack对服务的机器开放。

V3新增的概念:

1.Tenant重命名为Project

2.添加了Domain的概念

3.添加了Group的概念

  V3利用Domain实现真正的多租户(multi-tenancy)架构,Domain担任Project的高层容器。

云服务的客户是Domain的所有者,他们可以在自己的Domain中创建多个Projects、Users、Groups和Roles。

通过引入Domain,云服务客户可以对其拥有的多个Project进行统一管理,而不必再向过去那样对每一个Project进行单独管理。

  Group是一组Users的容器,可以向Group中添加用户,并直接给Group分配角色,那么在这个Group中的所有用户就都拥有了Group所拥有的角色权限。

通过引入Group的概念,KeystoneV3实现了对用户组的管理,达到了同时管理一组用户权限的目的。

这与V2中直接向User/Project指定Role不同,使得对云服务进行管理更加便捷。

  

  v3版本domain,group,project,user和role的关系图:

 如上图所示,在一个Domain中包含4个Projects,可以通过Group2将Role Sysadmin直接赋予Domain,那么Group2中的所有用户将会对Domain中的所有Projects都拥有管理员权限。

也可以通过Group1将Role Engineer 只赋予Project1,这样Group1中的User就只拥有对Project1相应的权限,而不会影响其它Projects。

 

part2

  keystone管理和保存了user信息,管理user相关的project,role,group和domain等;用户credential的存放位置,验证关系,token的管理,下图是各部分关系

part3:

  官网解释:

∙User:

has account credentials,isassociatedwithoneormoreprojectsordomains(用户:

有用户凭证,并且与一个或多个项目或域有关联)

∙Group:

acollectionofusers,isassociatedwithoneormoreprojectsordomains(组:

用户集合,域一个或者多个项目或域有关联)

∙Project:

unitofownershipinOpenStack,containsoneormoreusers(项目:

在openstack单元中,具有所有权,包含一个或者多个用户)

∙Domain:

unitofownershipinOpenStack,containsusers,groupsandprojects(域:

在openstack中单元中具有所有权,包含用户,组和项目)

∙Role:

afirst-classpieceofmetadataassociatedwithmanyuser-projectpairs.(角色:

加载上一个项目下面的一个用户给用户附上一个role的关联)

∙Token:

identifyingcredentialassociatedwithauseroruserandproject(令牌:

与用户或者项目关联的凭证)

∙Extras:

bucketofkey-valuemetadataassociatedwithauser-projectpair.(额外:

与用户项目对关联的key-value数据对)

∙Rule:

describesasetofrequirementsforperforminganaction.(规则:

描述执行动作的一组要求)

5第五:

keystone与openstack其他组件的关系

6第六:

keystone与其他组件协同工作流程

 以用户新建一台vm为例介绍整体流程中keystone发挥的作用

7第七:

keystone工作流程图

(1)User从Keystone获取令牌以及服务列表;

(2)User访问服务时,亮出自己的令牌。

(3)相关的服务向Keystone求证令牌的合法性。

8

 

1.用户alice登录keystone系统(password或者token的方式),获取一个临时的token和catalog服务目录(v3版本登录时,如果没有指定scope,project或者domain,获取的临时token没有任何权限,不能查询project或者catalog)。

2.alice通过临时token获取自己的所有的project列表。

3.alice选定一个project,然后指定project重新登录,获取一个正式的token,同时获得服务列表的endpoint,用户选定一个endpoint,在HTTP消息头中携带token,然后发送请求(如果用户知道projectname或者projectid可以直接第3步登录)。

4.消息到达endpoint之后,由服务端(nova)的keystone中间件(pipeline中的filter:

authtoken)向keystone发送一个验证token的请求。

(token类型:

uuid需要在keystone验证token,pki类型的token本身是包含用户详细信息的加密串,可以在服务端完成验证)

5.keystone验证token成功之后,将token对应用户的详细信息,例如:

role,username,userid等,返回给服务端(nova)。

6.服务端(nova)完成请求,例如:

创建虚拟机。

7.服务端返回请求结果给alice。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1