keystone服务的详解

一:keystone服务

作用:

1:提供其余组件的所有认证服务,令牌的管理,所有的组件都要经过keystone服务的通过,才能使用相对应的功能,每一次使用服务的时候,都需要验证

2:用户管理:验证用户的身份合法

1:概念

项目(project):个人和服务所拥有的资源集合,在一个项目中可以包含多个用户,每个用户可以根据自己的权限来使用项目中的资源,自带admin项目

用户(user):访问openstack的对象,用户拥有证书(credentials),分配个一个项目或者多个项目,自带admin用户,拥有admin权限

证书(credentials):确认用户身份的凭证,可以是用户名和密码,用户的api和token

令牌(token):认证通过后,返回一个令牌,里面包含了在指定范围和有效时间可以被访问的资源,保存了账户和密码以及使用的权限

角色(role):用户权限的划分,可以给user指定role,使user获得role对应的操作权限,keystone返回给user的token包含了role列表,被访问service,会判断访问它的user和user提供的token中所包含的role(其实是交给了keystone,它来判断的)

服务(service):openstack中运行的组件服务

端点(endpoint):通过网络来访问和定位某个服务,是一个url。分为三类

  admin-url 管理员使用的

  internal-url:内部组件互相通信

  public-url:其他用户访问地址

2:keystone工作的原理

非常的好理解:首先用户提交自己的信息与数据库进行校验,成功后,返回一个token和endpoint,然后用户通过token和endpoint来操作openstack中的资源

官方:

  1. User/API 想创建一个实例,首先会将自己的Credentials发给Keystone。认证成功后,keystone会颁给User/API一个临时的令牌(Token)和一个访问服务的Endpoint。

  2. User/API 把临时Token提交给Keystone,Keystone返回一个Tenant(Project)。

  3. User/API 向Keystone发送带有特定租户的凭证(交互权限),告诉Keystone User/API在哪个项目中,Keystone收到请求后,会发送一个项目的Token到User/API (访问权限),User/API 拿着Token和Endpoint找到可访问服务。

 4. 服务向keystone进行认证,Token是否合法,它允许访问使用该服务(判断用户/API中role权限)?

 5. Keystone向服务提供额外的信息。User/API是允许方法服务,这个Token匹配请求,这个Token是User/API的

 6. 服务执行User/API发起的请求,创建实例

 7. 服务会将状态报告给用户/API。最后返回结果,实例已经创建

例子:用户登录openstack平台时,先进行验证,验证成功后,返回一个临时令牌,然后我想要使用nova服务,将令牌给keystone,然后返回一个项目的token,我拿着token和endpoint去访问服务,服务拿到token后去找keystone进行验证。成功后,服务执行用户的请求,然后将信息返回给用户

认证的分为2种

第一种:判断用户的凭证是否合法,用户初次登录系统的时候,会向keystone提交用户名,密码等验证信息,keystone会判断是否为合法用户,如果是的话,向用户发布一个令牌,用于后续的验证,里面包含了用户使用服务的权限,令牌的失效时间

第二种:判断用户的令牌是否合法,当用户已经登陆到openstack后,使用任何组件,都要提交令牌,提供的服务将令牌给keystone进行认证,是否合法,认证成功后,服务就会响应用户的请求

二:keystone服务的操作

1:域的操作

#创建域
openstack domain create qq

#修改域
openstack domain set --disable --name ww qq

#查看域的详细信息
openstack domain show ww

#删除域(域的状态必须是关掉的)
openstack domain delete ww  

2:项目的操作

在创建项目时,要指定域,不指定域的话,就是默认的域,删除的时候,也要指定域,从哪个域中删除的

#创建项目
openstack project create aa

#修改项目(目前,只能修改名字,不能修改域)
openstack project set --name ee aa

#查看项目的详细信息
openstack proejct show ee

#删除项目
openstack project delete ee --domain default

3:用户的操作

在创建用户的时候,需要指定域(不指定就是默认域),删除的时候,也不要域

#创建用户,需要添加密码
openstack user create --domain default  --password 000000 --email qq.com pp

#修改用户(用户的姓名,密码,邮箱)
[root@controller ~]# openstack user set --password 111111 --name ww pp

#查看用户的详细信息
[root@controller ~]# openstack user show ww

#删除用户
[root@controller ~]# openstack user delete ww

4:角色的操作

角色就是一群用户的集合,在这个项目里有没有样的权限(操作)

#创建角色
[root@controller ~]# openstack role create xx

#绑定角色(就是用户绑定项目的某个角色)
[root@controller ~]# openstack role add --project project --user pp xx

#撤销权限(就是用户取消在项目中某个角色)
[root@controller ~]# openstack role remove --project project --user pp xx

#查看角色的详细信息
[root@controller ~]# openstack role show xx

#删除角色
[root@controller ~]# openstack role delete xx

5:服务的操作

#创建服务(服务包括服务的类型和服务的名字)
[root@controller ~]# openstack service create --name ww oo

#修改服务(名字)
[root@controller ~]# openstack service set --name ss oo

#查看服务的详细信息
[root@controller ~]# openstack service show oo

#删除服务
[root@controller ~]# openstack service delete oo

6:端点操作

端点就是一个服务的url(访问服务的ip地址)

#创建端点
openstack endpoint create --region RegionOne qq publice http://controller:9292

#修改端点
openstack endpoint set --region  WQWE endpoint_id

#查看端点的详细信息
openstack endpoint show endpoint_id

#删除端点
openstack endpoint delete endpoint——id

三:图解

 

posted @ 2023-11-01 21:45  q_7  阅读(171)  评论(0编辑  收藏  举报