一、IaaS单租户面临的问题
基于IaaS单租户大数据产品架构如上图所示。在这类生态环境中,IaaS平台通常作为同一租户存在,当用户产生新需求时,通过IaaS平台申请一批集群(虚机),在这些集群上部署相应的开源产品。从隔离的角度出发,这种生态面临以下问题:
- 首先,IaaS单租户大数据产品架构在实际使用时存在一定的逻辑问题。使用者进行数据分析时,需要了解使用的每种产品的具体逻辑,例如运行SQL时,需要理解Hive的逻辑,使用Spark时,需要学习spark的相关知识。当使用产品数量较少时,使用成本还能够得到有效控制;当需要多种产品相互协助使用时,学习成本便成几何倍数增加。并且,通常两款不同的开源产品之间的逻辑模型相互间无法识别,当遇到鉴权等问题时,逻辑问题更加突出。
- 其次,每一种开源产品在运行级别上都有其自身的优先级定义。在使用同一种开源产品时,任务的优先级会按照开源产品自身的优先级体系进行运行,高优先级的任务会比低优先级的任务得到更多的资源,运行的时长也会得到更好地保障。当同时使用多款开源产品时,基于IaaS单租户大数据产品架构无法做到运行优先级的全局最优化。
- 最后,上述这些开源产品通常会提供用户自定义逻辑,例如MR或Hive提供的UDF。当用户自定义的代码在大数据产品内运行时,会造成一定的安全风险。例如,Hadoop Yarn在运行用户自定义代码时,仅仅使用比较简单的Linux Container机制进行隔离。使用这种机制运行隔离时,用户的代码逻辑和Hadoop自身进程是运行在同一个内核(kernel)下的,也就是说如果这部分用户代码逻辑包含的攻击程序能够影响机器kernel,则在同一个内核下运行的大数据产品进程也会随之受到影响。通常情况下,大数据产品的一个Job会根据数据分片的大小同时运行在集群的大部分机器、甚至所有机器上。这种情况下,安全的风险便放大至整个集群。一种极端的情况是:当利用一个内核的漏洞攻击一台机器成功时,当所提交的Job分片足够大时,可能会使得整个计算集群瘫痪。
二、什么是多租户
多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。
三、多租户提供什么功能
1. 租户管理
Pandora数据工厂以多租户的形式提供给用户接入,每个租户对应一个团队或者一个项目。用户使用大数据平台前,需要开通租户,通过租户来进行平台的计算资源和存储资源。
2. 资源隔离
Pandora数据工厂要求实现租户间的资源隔离和数据隔离,具体有一下几个要求:
- 一是逻辑隔离:
从租户的角度出发,每个租户都有自己独立的逻辑模型,拥有自己独立的资源以及基于相同的逻辑模型实现的统一授权模型。
- 二是资源隔离:
计算资源、数据资源、存储资源的隔离能力。
- 三是运行隔离机制:
在运行时,对于不同租户的任务,能够实现统一的、全局最优的任务调度能力以及计算资源和存储资源的隔离能力。
3. 权限管理
- 一是用户访问的权限
用户接入大数据平台进行操作访问对象的时候进行认证鉴权,防止非法的用户接入。
- 二是数据访问的权限
租户之间的数据是相互隔离的,如需访问需要授权,来保障用户的数据安全,提供租户间数据权限共享的能力。
- 三是大数据组件访问的权限
大数据组件包括hdfs、hive、yarn、hbase、spark、kafka、zakaban、关系数据库等都是基于Kerberos进行用户鉴权,在 使用服务组件前,需要先进行授权。默认情况下,租户权限是根据租户模板在开通租户时默认授权的,提供对组件使用权限 的授权与权限回收的功能。
4. 权限策略
策略管理中可以预定义一系列的租户策略信息,包括yarn队列的调度策略、租户预分配的计算资源和存储资源配置策略和租户数据权限策略。