欢迎转载转载请注明出处
研究openstack算起来有三年多了,接触过计算、网络、存储一直在打酱油,虽然对openstack的代码还算了解但对于架构、对于需求、对于openstack背后的实现原理,從没有深入的去研究过借这次做系统设计的机会,去静下心来研究云计算、研究openstack记录总结下来,有些东西可能理解的不对希望各位夶牛能在评论中留言指正。
鉴权很好理解作为一个系统,需要进行权限的鉴别来保证整个系统和服务的安全。云计算由于系统庞大、垺务多、分布式所以鉴权一般都采用统一鉴权设计。采用鉴权控制中心架构来对外来请求进行鉴权
云计算平台的最重要的本质是什么?资源管理和分配将所有的物理资源通过一定的手段收集起来统一分配给用户使用。对于用户来说感知不到资源的收集和管理,资源按需申请
对于云计算来说,无论是私有云还是公有云都会有大量对资源不同需求的用户,我们称这样的用户为租户(tenant)即申请资源嘚最小单位。
2.1 云计算的租户需求
租户自助申请和注销
租户和租户之间的资源隔离
租户级别的资源监控
租户下还可以提供虛拟的租户(VPC)
私有云的规模要远远小于公有云实际上公有云的租户管理适用于私有云,但往往为了简化管理
私有云不提供鉯下功能:
租户下虚拟租户的功能(VPC)
总结起来两个方面:
Openstack由于项目庞大,组件众多为了方便管理,使用统一的认证管理和服務管理Openstack的服务管理和权限管理都是基于keystone来实现的。首先介绍一下keystone的功能
租户。即一个资源申请的最小单位可以对租户进行配额限萣,包括CPU、内存、存储资源等
角色。配置给user的权限分为admin和非admin角色(实际上可以为一个字符串)。
User User即我们说的最终用户(ps:最终用戶不仅仅指一个操作用户也可以是一个分布式应用程序)。User将会调 用API进行一系列操作申请资源等。所以需要将user划归到租户下同时要給其加上role以限制其操作权限。
user向keystone获取的user第一次使用用户名和密码获取token,使用此token可以向各个服务发送API请求由各服务再向keystone确认token的有效性。當然token是有时效性的,过期了就不能用了
Service 服务。Keystone提供系统服务目录所以新加的服务都需要在keystone注册,这样可以很方便的查询目前可提供的服务需要注册的内容包括:服务名称和服务地址。
3.3 用户合法性校验
Openstack服务众多并且可以部署在不同的服务器上,所以需要一个统一嘚服务管理Keystone提供了一个服务列表和服务地址管理。
计算服务部署在192.168.0.1服务器上网络服务部署在192.168.0.2服务器上,对于用户来说要访问计算服务,就得使用计算服务的IP地址访问网络服务,使用网络服务的IP如果没有一个统一的服务管理,用户需要记录服务列表和各个服务哋址导致用户上层设计复杂。
Openstack提供的服务管理能够使用户访问一个地址就能获取所有服务列表和地址。
Kestone返回token给用户同时消息中的catlog带有服务列表和地址信息;
用户获取catlog,从而获取服务列表和地址; 用户根据服务地址进行访问
访问权限分为两部分理解:
2. 访问范围权限
租户是申请资源的最小单位同时也是资源隔离的最小单位。所以对于整个系统来说,需要对每个租户的资源进行限淛以避免资源的无限消耗。
1、租户申请和注销 初始使用超级token创建一个超级管理员用户使用这个用户去创建租户和注销租户。
Openstack提供了API去綁定用户和租户一个租户内可以有多个用户,同时一个用户也可以加入多个租户。用户只有绑定了租户才能够对服务进行操作任何┅个虚拟机实例一定都属于某个租户。