云计算的鉴权和租户管理
来源:互联网 发布:知乎玲珑邪僧 编辑:程序博客网 时间:2024/05/16 14:21
jacerlee@126.com
黑米老爸
欢迎转载,转载请注明出处
前言
研究openstack算起来有三年多了,接触过计算、网络、存储,一直在打酱油,虽然对openstack的代码还算了解,但对于架构、对于需求、对于openstack背后的实现原理,从没有深入的去研究过。借这次做系统设计的机会,去静下心来研究云计算、研究openstack。记录总结下来,有些东西可能理解的不对,希望各位大牛能在评论中留言指正。
1、鉴权和租户
1.1 鉴权
云计算平台的最重要的本质是什么?资源管理和分配,将所有的物理资源通过一定的手段收集起来统一分配给用户使用。对于用户来说,感知不到资源的收集和管理,资源按需申请。
2、云计算的租户管理
2.1 云计算的租户需求
- 公有云:
- 私有云:
3、openstack认证管理
Openstack由于项目庞大,组件众多,为了方便管理,使用统一的认证管理和服务管理。Openstack的服务管理和权限管理都是基于keystone来实现的。首先介绍一下keystone的功能。
3.1 keystone作用
Keystone主要功能为两方面:
1. 判断用户合法性
2. 提供服务列表和服务地址
3.2 keystone中的概念
Tenant
租户。即一个资源申请的最小单位,可以对租户进行配额限定,包括CPU、内存、存储资源等。
Role
角色。配置给user的权限。分为admin和非admin角色(实际上可以为一个字符串)。
User
User即我们说的最终用户(ps:最终用户不仅仅指一个操作用户,也可以是一个分布式应用程序)。User将会调 用API进行一系列操作,申请资源等。所以需要将user划归到租户下,同时要给其加上role以限制其操作权限。
User在keystone中是独立创建的,但是必须绑定tenant和role才能使用,一个user可以同时绑定多个tenant和role。
Token
令牌。每一个user去请求API时,首先需要鉴权,每次都用带用户名和密码吗?为了安全,同时也为了简便,使用token机制。token是 user向keystone获取的,user第一次使用用户名和密码获取token,使用此token可以向各个服务发送API请求,由各服务再向keystone确认token的有效性。当然,token是有时效性的,过期了就不能用了。
Service
服务。Keystone提供系统服务目录。所以新加的服务都需要在keystone注册,这样可以很方便的查询目前可提供的服务。需要注册的内容包括:服务名称和服务地址。
Endpoint
Endpoint
即服务地址。Keystone又把其划为内部服务地址(private url)和外部服务地址(public url)。
关键的两点:1) User从Keystone获取令牌、服务列表和服务地址;
2) User访问服务时,亮出自己的令牌。相关的服务向Keystone求证令牌的合法性。
3.3 用户合法性校验
- 流程详解:
2. User访问API(例如创建虚拟机),在request中带入token;
3. Nova收到token后,首先会去keystone对token验证;
4. 验证成功,继续后续流程;
5. 要获取image时,glance会将token拿去验证;
6. 获取网路时,quantum会将token拿去验证;
7. 流程走完,nova返回successful
总结来说,token服务于整个流程。
3.4 服务列表管理
Openstack服务众多,并且可以部署在不同的服务器上,所以需要一个统一的服务管理。Keystone提供了一个服务列表和服务地址管理。
例如:
计算服务部署在192.168.0.1服务器上,网络服务部署在192.168.0.2服务器上,对于用户来说,要访问计算服务,就得使用计算服务的IP地址,访问网络服务,使用网络服务的IP。如果没有一个统一的服务管理,用户需要记录服务列表和各个服务地址。导致用户上层设计复杂。
Openstack提供的服务管理,能够使用户访问一个地址就能获取所有服务列表和地址。
具体流程如下:
用户向keystone获取token;
Kestone返回token给用户,同时消息中的catlog带有服务列表和地址信息;
用户获取catlog,从而获取服务列表和地址;
用户根据服务地址进行访问
4、Openstack权限和租户管理
4.1 访问权限管理
访问权限分为两部分理解:
1. API访问权限
2. 访问范围权限
- Policy的介绍
以nova为例,policy文件的位置在:/etc/nova/policy.json,下面先来看几条rules,了解其基本含义:
"compute:create": "", "compute:create:attach_network": "", "compute:create:attach_volume": "", "compute:create:forced_host": "is_admin:True",
语法规则为:rule:[result]
rule:指这条规则是干啥的,通常对应一个action,以类似scope:action的形式给出,scope表示作用范围,action表示执行哪种操作
result: 表示这条rule的判定结果或者如何进行判定,比如"compute:create:forced_host": "is_admin:True",如果执行此操作的用户具有admin角色(role),则这条结果的判定结果就是True,表示可以访问。实际生产环境中,根据不同服务需求,还可以加入tenant的自动匹配比较,由于这块还没研究透,后续再补充。
另外,rule是可以嵌套的,比如"compute:stop": "rule:admin_or_owner",表示compute:stop这条规则的结果为admin_or_owner这条规则的结果,而admin_or_owner规则如下:
"admin_or_owner规则如下:
"admin_or_owner": "is_admin:True or project_id:%(project_id)s",
如果调用这个操作的用户的角色是admin,就返回True,或者返回用户所属的project的id.
- policy框架访问流程
2. 服务根据policy框架(具体代码见附件),读取policy.json文件;
3. 根据policy.json文件来进行API的访问控制和访问范围。
租户是申请资源的最小单位,同时也是资源隔离的最小单位。所以,对于整个系统来说,需要对每个租户的资源进行限制,以避免资源的无限消耗。
1、租户申请和注销
初始使用超级token创建一个超级管理员用户,使用这个用户去创建租户和注销租户。
2、配额
Openstack提供了API去修改配额,默认的配额在初始配置中配置。
3、用户管理
Openstack提供了API去绑定用户和租户,一个租户内可以有多个用户,同时,一个用户也可以加入多个租户。用户只有绑定了租户才能够对服务进行操作,任何一个虚拟机实例一定都属于某个租户。
- 云计算的鉴权和租户管理
- 租户和应用程序管理
- 剖析SalesForce的多租户架构(PAAS\SAAS\云计算)
- 基于多租户的云计算Overlay网络
- 云计算架构基础之多租户数据架构 (一) 三种模式和影响选择的因素
- 云计算(租户模式杂七杂八)
- OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)
- OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)
- 多租户云计算网络-刘新民(多租户 网络)
- 多租户架构对云计算都有哪些影响?
- 云计算基础--多租户技术
- Oracle12.2 多租户环境下的授权管理
- 云计算架构基础之多租户数据架构 (二) 三种模式实现相关的一些模式
- [推荐]应当承认‘外来人口’的租户权
- 【Cherry云计算】ECS - ECS实例的管理和操作
- openstack 中用户、租户和角色的理解
- openstack 中用户、租户和角色的理解
- 云计算时代的管理
- STL容器类map学习
- [python]糗百热点爬虫
- 整数转换成罗马数字
- 真假硬币
- kft-activiti-demo学习(目录)
- 云计算的鉴权和租户管理
- Qt数据库之访问 SQLite
- CentOS6.5二进制包安装MySQL5.6
- Qt 访问 MySQL
- 《飞轮效应:数据驱动的企业》
- 微信公众平台针对iBeacon 增加摇一摇周边功能
- Qt数据库之数据库常用操作
- Java网络编程从入门到精通(26):在服务端接收和发送数据
- iptables raw表