用于多租户HADOOP集群的安全设计和架构的制作方法

未命名 09-13 阅读:93 评论:0

用于多租户hadoop集群的安全设计和架构
1.本技术是于2017年5月23日提交的名称为“用于多租户hadoop集群的安全设计和架构”的中国专利申请201780044056.9的分案申请。
2.相关申请
3.本技术要求2016年5月23日提交的序列号为62/340,284的美国临时专利申请的优先权,该专利申请的公开内容通过引用以其整体并入本文。
技术领域
4.本发明总体涉及用于多租户hadoop集群的安全设计和架构。


背景技术:

5.多租户是其中软件应用程序的单个实例可以为多个客户端或租户提供服务的架构。多租户可以是经济的,因为软件开发、更新成本和维护成本是共享的。在美国专利申请公开号2010/0005055中公开了多租户的示例,所述专利申请的公开内容通过引用以其整体并入本文。


技术实现要素:

6.本发明公开了用于多租户hadoop集群的安全设计和架构。在一个实施例中,在包括多个租户和多个应用程序的多租户hadoop集群中,一种用于在多租户hadoop集群中标识、命名和创建多租户目录结构的方法可以包括:(1)租户或应用程序中的一个标识选自包括超级用户组、多个租户组和至少一个应用程序组的组的目录结构的多个组;(2)租户或应用程序中的一个为所述组中的每一个创建有效目录;(3)租户或应用程序中的一个将多个用户中的每个添加到多个租户组和应用程序组中的一个;(4)租户或应用程序中的一个为所述用户创建租户目录和主目录;以及(5)租户或应用程序中的一个将所有者、组所有者、默认权限和扩展访问控制列表分配给租户目录和主目录。
7.在一个实施例中,目录结构可以是hdfs目录结构。
8.在一个实施例中,应用程序组可以包括应用程序功能组和应用程序人类用户组。
9.在一个实施例中,添加到租户组的用户可访问租户的共享资源。
10.在一个实施例中,添加到应用程序组的用户可访问租户的应用程序资源和共享资源。
11.在一个实施例中,第一租户的共享资源与第二租户的共享资源隔离开。
12.在一个实施例中,第一租户无法访问第二租户的资源。
13.在一个实施例中,第一应用程序的共享资源与第二应用程序的共享资源隔离开。
14.根据另一个实施例,在包括多个租户和多个应用程序的多租户hadoop集群中,一种向多租户hadoop集群中的hdfs应用程序提供安全性的方法可以包括:(1)租户或应用程序中的一个针对客户端认证客户端进程;(2)租户或应用程序中的一个从客户端接收请求,该请求包括来自密钥分发中心的会话票证和临时会话密钥中的至少一个;以及(3)租户或
应用程序中的一个基于至少一个客户端授权以及会话票证和临时会话密钥中的至少一个来认证客户端。
15.在一个实施例中,密钥分发中心可以是kerberos密钥分发中心。
16.在一个实施例中,客户端可以通过提供用户名和密码与所述密钥分发中心进行验证。
17.在一个实施例中,方法还可以包括租户或应用程序中的一个确定选自包括超级用户组、多个租户组和至少一个应用程序组的组中的客户端的至少一个组。
18.根据另一个实施例,在包括多个租户和多个应用程序的多租户hadoop集群中,一种用于为多租户hadoop集群中的应用程序提供安全性的方法可以包括:(1)租户或应用程序中的一个为多个租户标识多个组和角色并标识所述角色与至少一个有效目录组之间的交叉引用;(2)租户或应用程序中的一个为组中的每一个创建有效目录;(3)租户或应用程序中的一个将多个用户中的每一个添加到租户组和应用程序组;(4)租户或应用程序中的一个为应用程序模式创建基目录;以及(5)租户或应用程序中的一个向租户分配角色和特权。
19.在一个实施例中,应用程序可以是apache hive或cloudera impala。
20.在一个实施例中,角色和特权可以基于至少一个租户应用程序要求。
21.在一个实施例中,方法还可以包括租户或应用程序中的一个通过用户名和密码来认证用户;以及租户或应用程序中的一个授权用户使用基于角色的精细粒度授权。
22.根据另一个实施例,在包括多个租户和多个应用程序的多租户hadoop集群中,一种用于为多租户hadoop集群中的应用程序提供安全性的方法可以包括:(1)租户或应用程序中的一个标识具有对hbase命名空间的权限的多个hbase命名空间和组;(2)租户或应用程序中的一个为所述组中的每一个创建有效目录;(3)租户或应用程序中的一个创建hbase命名空间以满足至少一个租户要求;以及(4)租户或应用程序中的一个为具有至少一个特权的每个应用程序创建默认角色。
23.在一个实施例中,至少一个特权可以控制对应用程序的访问。
24.在一个实施例中,方法还可以包括所述租户或应用程序中的一个使用访问控制列表来授权客户端动作。
25.在一个实施例中,方法还可以包括租户或应用程序中的一个使用基于角色的访问控制来授予客户端权限。
附图说明
26.为了更完全地理解本发明、其目的和优点,现在参考结合附图进行的以下描述,在所述附图中:
27.图1描绘了根据一个实施例的多租户集群;
28.图2描绘了根据一个实施例的多租户对象分层结构;
29.图3描绘了根据一个实施例的有效目录中的逻辑组结构;
30.图4描绘了根据一个实施例的用户到组映射;
31.图5描绘了根据一个实施例的用于创建hdfs的目录结构的方法;
32.图6描绘了根据一个实施例的hdfs目录结构;
33.图7示出了根据一个实施例的hdfs目录结构中的目录的所有权和访问控制列表;
34.图8描绘了根据一个实施例的在多租户集群中为hdfs提供安全性的方法;
35.图9描绘了根据一个实施例的在多租户集群中为hive或impala提供安全性的方法;
36.图10描绘了根据一个实施例的hive数据库和父目录的结构;
37.图11描绘了根据一个实施例的在多租户集群中为hbase提供安全性的方法;
38.图12描绘了根据一个实施例的sentry dba和租户dba的职责以及如何将必要的特权授予适当组;以及
39.图13示出了根据一个实施例的租户dba如何将必要的特权授予适当组。
具体实施方式
40.根据实施例,多租户集群可以使得多个租户能够使用例如强认证策略和授权策略而不是物理分离来安全地共享公共集群资源集。在一个实施例中,系统和方法可以实现以下中的一些或全部:(1)对现有服务水平协议(sla)的负面影响很小或没有;(2)不违反现有的安全要求和安全策略;(3)不必揭示驻留在该多租户环境中的每个租户的存在;(4)审核用户的实际数据访问的能力(人力和功能);(5)报告对数据集的当前许可的能力;(6)通过有保证的资源来运行多个并发应用程序的能力。
41.参考图1,根据一个实施例公开了多租户集群。在一个实施例中,多租户计算环境100可以包括多租户hadoop集群110。在一个实施例中,可以提供hadoop集群以用于开发、生产、质量保证等。
42.在一个实施例中,多租户hadoop集群110可以存储、处理和分析大量数据。多租户hadoop集群110可以支持包括hive、yarn、impala、hbase、hdfs等的多种服务。
43.在一个实施例中,可以提供多个实用节点1201、1202等,并且可以支持一个或多个租户1301、1302、

130n。例如,实用节点1201可以支持租户1301,而实用节点1202可以支持租户1302和1303。可以根据需要和/或期望使用任何合适的支持布置。
44.在一个实施例中,实用节点1201、1202等可以是多租户hadoop集群110与外部网络之间的接口。在一个实施例中,实用节点1201、1202等可以被用来运行客户端应用程序和集群管理工具。实用节点1201、1202等也可以被用作转移到多租户hadoop集群110中的数据的暂存区域。
45.在一个实施例中,“租户”可以是组织、垂面或应用程序内的任何商业实体,其可以对多租户计算环境100中的资源付费、负责等。租户的示例性特征可以包括:(1)多个租户驻留在单个大型集群中(例如,hadoop集群);(2)每个租户可以具有一个或多个应用程序;(3)每个应用程序可以对集群具有特定要求以满足其需要;以及(4)集群中可能存在不同类型的用户帐户。例如,可能存在服务帐户(例如,可用于运行服务(例如,hadoop服务)的帐户)、个人帐户(例如,可由访问集群的人使用的帐户)和功能帐户(例如,可用于运行应用程序的帐户)。个人帐户可以访问多个或单个租户/多个或单个应用程序。
46.参考图2,根据一个实施例公开了多租户分层结构。如图所示,每个租户1301、1302可以具有可由一个或多个用户(例如,用户1-用户13)访问的一个或多个应用程序(例如,应用程序1(app 1)、应用程序2(app 2)、

应用程序n(app n))。
47.参考图3和图4,其公开了一种根据一个实施例的用于租户组的组映射的方法。在一个实施例中,组映射策略可以是基于轻量级目录访问协议(或ldap)的组映射和静态绑定的组合。ldap组可以用于个人帐户和功能帐户,因为用户可以在有效目录(“ad”)中进行管理。静态绑定可以用于服务帐户(例如,hdfs、hive、impala等),因为这些是有限的并且可以在hadoop配置文件中进行管理。
48.下面的表i示出了根据一个实施例的用于多租户安全性要求的不同类型的组:
[0049][0050]
表i
[0051]
在一个实施例中,将用户添加到租户组将允许用户仅访问租户的共享资源,而不访问应用程序资源。将用户添加到应用程序组将只允许用户访问应用程序资源,而不允许访问租户的共享资源。
[0052]
参考图3,其示出了有效目录中的逻辑组结构,并且在图4中,示出了用户到组的映射。在图4中,实线指示用户属于该组,并且虚线指示用户属于管理组。如图所示,用户1是租户组、应用程序1组和管理组的成员;用户2是租户组和应用程序n组的成员;并且用户3是租户组、应用程序2组和应用程序n组的成员。
[0053]
参考图5,其提供了一种根据一个实施例的用于创建hdfs的目录结构的方法。
[0054]
在步骤510中,可以按照命名约定来标识组。在一个实施例中,可以使用表ii的示例性命名约定:
[0055][0056]
表ii
[0057]
应当注意的是,这种命名约定仅是示例性的,并且可以根据需要和/或期望使用任何合适的命名约定。
[0058]
在步骤520中,可以创建有效目录组,并且可以将用户添加到组。加载的代表应用程序的任何用户可以是至少两个组—租户组和应用程序组的一部分。
[0059]
在步骤530中,可以为用户创建租户目录和主目录。在一个实施例中,可以使用特定的hdfs目录结构。在图6和图7中示出了示例性目录结构,并且在下面的表iii中显示细节:
[0060][0061]
表iii
[0062]
如图6和图7所示,在一个实施例中,租户可以支持可能需要完全隔离的多个应用程序。此外,可以在相同租户下的多个应用程序之间共享数据。
[0063]
在步骤540中,可以将所有者、组所有者、默认权限和扩展访问控制列表(acl)分配给目录。如表iii所指示的,在一个实施例中,租户、应用程序和共享目录连同acl的所有权被建模,使得租户无法删除其自身的基目录,但仍然能够访问数据以满足其应用程序要求。
[0064]
图7示出了/user下的用户目录的所有权以及设置的acl。在一个实施例中,用户将不具有删除其自身的主目录的能力,但将能够访问其主目录下的所有数据。
[0065]
在一个实施例中,可以提供安全性。在一个实施例中,可以使用例如acl和sentry来实现对文件的权限的精细粒度控制。在一个实施例中,可以取决于(多个)安全要求来应用acl。sentry可以被用于使用例如hive、impala等来管理的结构化数据。
[0066]
此外,hdfs可以被配置成允许来自属于租户的有效目录组的用户的通信。在一个实施例中,默认情况下,多租户环境中的hdfs可以拒绝除了来自允许的有效目录组的用户之外的所有通信。
[0067]
参考图8,其公开了根据一个实施例的一种在hadoop多租户集群中向应用程序提供安全性的方法。在一个实施例中,应用程序可以是hadoop分发文件系统或hdfs。hdfs被设计用于存储具有流数据访问模式的非常大的文件,用于在商用硬件集群上运行。hdfs是文件的逻辑集合,在若干块上被分割和分布,其元数据被存储在“namenode”中。
[0068]
hadoop支持两种用于确定用户身份的操作模式,其可以由属性hadoop.安全.认证来指定。首先,可以使用简单认证,由此客户端进程的身份可以由主机操作系统确定。其次,
可以使用kerberos认证来认证用户。
[0069]
在一个实施例中,一旦确定了用户的用户名,就可以通过组映射服务来确定组列表,所述组映射服务可以通过hadoop安全.组.映射属性来配置。示例性组匹配选项可以包括:静态绑定(即,在hadoop配置文件中限定用户到组的映射);基于shell的组映射(即,使用命令“bash-c groups”或“net group”在主节点(namenode/资源管理器)上解析组);以及ldap组映射(即,其直接连接到ldap服务器以解析组列表)。
[0070]
在一个实施例中,多租户集群810可以处理来自客户端830的请求,所述客户端830已经使用来自客户端830的用户名和密码针对密钥分发中心(kdc)840(诸如kerberos kdc)进行认证。kdc 840可以通过用户目录820来验证用户名/密码。如果成功验证,则kdc可以向客户端830提供一个或多个会话票证和/或临时会话密钥。客户端830可以将会话票证/临时会话密钥提供给多租户集群810。在一个实施例中,多租户集群810可以使用临时会话密钥对客户端830进行认证并基于客户端830的授权来兑现来自客户端的请求。
[0071]
参考图9,其公开了根据另一个实施例的一种用于在hadoop多租户集群中向应用程序提供安全性的方法。在一个实施例中,应用程序可以是用于提供数据摘要、查询和分析的apache hive数据仓库基础结构。hive查询语言(hiveql)包括sql的子集和可用于对存储在hdfs中的大型数据集运行分析查询的一些扩展。hive可以将数据结构化为易于理解的数据库概念,如表、列、行和分区。
[0072]
在另一个实施例中,应用程序可以是cloudera impala。impala是用于存储在运行apache hadoop的计算机集群中的数据的开源大规模并行处理(mpp)sql查询引擎。impala与apache hive元存储数据库集成以在两个部件之间共享数据库和表。与hive的高度集成以及与hiveql语法的兼容性允许用户使用impala或hive来创建表、发出查询、加载数据等。
[0073]
在一个实施例中,可以使用认证(例如,使用由ldap支持的kerberos或用户/密码验证)和授权(例如,使用sentry以用于基于角色的精细粒度授权)来实现hive和impala的安全性。在一个实施例中,预限定的目录结构可以隔离由每个租户存储的结构化数据。可以为每个租户创建一个基目录,其中租户可以在hdfs中存储多个结构化数据模式。
[0074]
在步骤910中,可以按照命名约定来标识组和角色。在一个实施例中,可以标识角色与有效目录组之间的交叉引用。在一个实施例中,可以使用表iv的示例性命名约定:
[0075][0076]
表iv
[0077]
应当注意的是,该命名约定仅是示例性的,并且可以根据需要和/或期望使用任何合适的命名约定。
[0078]
在步骤920中,可以创建有效目录组,并且可以将用户添加到组。代表应用程序机载的任何用户可以是至少两个组—租户组和应用程序组的一部分。
[0079]
在步骤930中,可以针对模式创建结构化数据的基目录。在一个实施例中,可以使用特定目录结构。在图10中示出了示例性目录结构,并且在下面的表v中显示出细节:
[0080][0081]
表v
[0082]
图10示出了hive数据库连同父目录的结构。它示出了每个租户的hive基目录位于其自己的租户目录中。在表v中示出了hive模式目录上的所有者、组和权限。
[0083]
可以将基目录所有权给予用户hive和组hive。可以使用例如sentry中设置的精细粒度授权来控制对这些hive模式上的租户用户的权限。sentry授权可以自动转换成hdfs文件和目录上的扩展acl。
[0084]
在一个实施例中,子目录的属性可以包括从父、acl和sentry策略继承的权限。
[0085]
在步骤940中,可以设置具有特权的角色。在一个实施例中,角色和与角色一起的特权的输入可以由租户的一个或多个应用程序的要求来驱动。
[0086]
在一个实施例中,每个租户可以被赋予具有对其自身模式的所有特权的dba角色。这将使租户自己管理对其模式的授权。可以将dba角色分配到特定有效目录组,其中仅具有
附加特权的服务帐户作为成员被机载。
[0087]
在一个实施例中,在创建角色之后,可以将这些角色分配到在先前步骤910和920中提供的有效目录组。
[0088]
在一个实施例中,分配可以导致将特权作为hdfs acl自动分配到文件和目录。这可以向数据提供一致的授权,无论是从hive、impala还是直接通过hdfs接口访问数据。
[0089]
参考图11,根据另一个实施例公开了一种在hadoop多租户集群中向应用程序提供安全性的方法。在一个实施例中,应用程序可以是hbase,hbase是提供对那些大数据集的实时读/写访问的开源nosql数据库。
[0090]
在一个实施例中,kerberos可以用于认证,由此hbase服务器和客户端可以利用hdfs、zookeeper和彼此来安全地标识其自身。访问控制列表或acl可以用于按列、列族和列族限定符来授权各种操作(读取(read)、写入(write)、创建(create)、管理(admin))。可以向用户和组两者授予和撤销hbase acl。
[0091]
在一个实施例中,hbase安全模型可以使用rbac(基于角色的访问控制),由此访问权限可以将访问权限存储在元数据层处并且可以在用户试图访问表或列时应用该访问权限。
[0092]
在一个实施例中,hbase可以在系统、命名空间、表和列族级别对acl使用相同的权限集。在较高级别下授予的权限可以由处于较低级别的对象继承。例如,如果向组授予了命名空间级别读取权限,则该组的成员可以读取该命名空间中的所有表。
[0093]
可以为组分配有效地使得对命名空间的所有权达到租户级别的特权。租户管理员/数据库管理员可以控制谁可以访问其命名空间内的哪些表。在一个实施例中,可能需要环境中的每个级别的不同组来管理hbase结构化数据。
[0094]
下面的表vi示出了根据一个实施例的不同组类型和职责。
[0095][0096]
表vi
[0097]
下面的表vii描述了根据一个实施例的不同类型的用户或组的目标和责任。表vii仅是示例性的;可以根据租户的应用需求创建访问模型。
[0098]
[0099][0100]
表vii
[0101]
在步骤1110中,可以按照命名约定来标识hbase命名空间和组的名称以及对它们的权限。在一个实施例中,可以使用表vii的示例性命名约定:
[0102]
表viii
[0103]
应当注意的是,该命名约定仅是示例性的,并且可以根据需要和/或期望使用任何合适的命名约定。
[0104]
在步骤1120中,可以创建有效目录组,并且可以将用户添加到组。在一个实施例中,可以标识拥有和管理命名空间的用户,并且可以根据需要创建有效目录中的hadoop组。
[0105]
在步骤1130中,可以创建满足租户要求的命名空间。
[0106]
在步骤1140中,可以针对每个应用程序创建默认角色,并且默认角色可以具有读取和/或写入特权中的一个或多个。
[0107]
提供以下非限制性示例。
[0108]
示例1:hdfs场景—将两个租户机载到多租户hadoop集群—零售银行业务和企业营销。
[0109]
这些租户中的每一个都具有它们希望在多租户集群上运行并具有特定安全要求的多个应用程序:
[0110][0111]
表ix
[0112]
要求如下:将两个租户与表ix中列出的应用程序一起添加,并向信用卡应用程序提供对个人银行业务应用程序中的数据的只读访问。
[0113]
在一个实施例中,hadoop超群可以是下面描述的解决方案的先决条件。该过程的概述如下:(1)标识租户和应用程序的有效目录组;(2)为租户创建有效目录组;(3)为用户创建必要的目录和主目录;(4)向目录分配所有者、组和权限;以及(4)acl。
[0114]
首先,可以根据上面讨论的命名约定来标识表x中的组。
[0115]
类型名称hadoop组租户零售银行业务nd-mt-rtlbnk租户企业营销nd-mt-corpmkt应用程序信用卡nd-mt-rtlbnk-cc/nd-mt-rtlbnk-cc-f应用程序个人银行业务nd-mt-rtlbnk-pbank/nd-mt-rtlbnk-pbank-f应用程序抵押nd-mt-rtlbnk-mtg/nd-mt-rtlbnk-mtg-f应用程序运动nd-mt-corpmkt-camp/nd-mt-corpmkt-camp-f应用程序总体营销nd-mt-corpmkt-gmkt/nd-mt-corpmkt-gmkt-f
[0116]
表x
[0117]
接下来,可以创建有效目录组。
[0118]
接下来,可以将用户添加到组。
[0119]
接下来,可以通过具有适当权限的超级用户权力来创建表xi中的hdfs目录。
[0120][0121][0122]
表xi
[0123]
示例2:使两个租户(零售银行业务和企业营销)加入到多租户hadoop集群。此外,如表xii所示,这些租户中的每一个可能具有它们希望在多租户集群上运行并具有特定安全要求的多个应用程序:
[0124][0125]
表xii
[0126]
要求:(1)标识拥有和管理数据库的用户并在必要时在有效目录中创建hadoop组;(2)为每个租户创建dba角色并附加特定数据库;以及(3)为具有读取特权、写入特权或两者特权的每个应用程序创建默认角色。
[0127]
在一个实施例中,可以设置sentry管理组,其可以被命名为“nd-mt-admin”。
[0128]
在使用sentry管理用户的情况下,可以为每个租户设置dba角色,并且可以将角色分配给hadoop组。例如,在下面的表xiii中示出了租户dba和相关角色。
[0129][0130][0131]
表xiii
[0132]
在下面的表xiv中示出了示例性hadoop组以及此解决方案中的每个租户应用程序的数据库的名称。
[0133][0134]
表xiv
[0135]
在一个实施例中,为了建立“零售银行业务”租户帐户和数据库,可以使用以下步骤:(1)通过授权选项创建名为“mt_rtlbnk_dba”的角色;(2)将角色“mt_rtlbnk_dba”授予组“nd-mt-dig-dba”;以及(3)将对uri(hdfs中的用于存储此租户的结构化数据的位置)的完全权限授予角色“mt_rtlbnk_dba”。这允许一个或多个租户级别dba访问指定hdfs位置中的数据,并且组nd-mt-rtlbnk-dba中的任何用户都可以当做用于零售银行业务的租户dba。
[0136]
接下来,(4)创建数据库“db_rtlbnk_cc”;(5)将对数据库“db_rtlbnk_cc”的所有
特权授予租户dba角色“mt_rtlbnk_dba”;(6)创建数据库“db_rtlbnk_pbank”;以及(7)将对数据库“db_rtlbnk_pbank”的所有特权授予租户dba角色“mt_rtlbnk_dba”。
[0137]
在一个实施例中,为了设置“公司营销”租户dba角色和数据库,可以使用以下步骤:(1)创建具有授予特权的名为“mt_corpmkt_dba”的角色;(2)将角色“mt_rsk_dba”授予组“nd-mt-corpmkt-dba”;以及(3)将对uri(hdfs中的用于存储该租户的结构化数据的位置)的完全权限授予角色“mt_corpmkt_dba”。这允许一个或多个租户级别dba访问指定hdfs位置中的数据,并且组nd-mt-corpmkt-dba中的任何用户都可以作为用于风险的租户dba工作。
[0138]
接下来,(4)创建数据库“db_corpmkt_camp”;(5)将数据库“db_corpmkt_camp”的所有特权授予租户dba角色“mt_corpmkt_dba”;(6)创建数据库“db_corpmkt_gmkt”;以及(7)将数据库“db_corpmkt_gmkt”的所有特权授予租户dba角色“mt_corpmkt_dba”。
[0139]
在一个实施例中,每个租户可能具有特定于应用程序的安全性要求,并且它们在每个应用程序中需要以下三个角色-只读、写入和全部。这些角色可以是租户的应用程序级sentry角色和特权。
[0140]
在一个实施例中,可以通过例如sentry管理创建以下角色:用于“信用卡”应用程序的角色(“mt_rtlbnk_cc_insert”;“mt_rtlbnk_cc_read”;和“mt_rtlbnk_cc_all”);用于“个人银行业务”应用程序的角色(“mt_rtlbnk_pbank_insert”;“mt_rtlbnk_pbank_read”;“mt_rtlbnk_pbank_all”)。在一个实施例中,sentry dba可以创建应用程序安全性要求所需要的任何附加角色。
[0141]
图12描绘了根据一个实施例的sentry dba和租户dba的职责以及如何将必要的特权授予适当组。
[0142]
图13示出了根据一个实施例的租户dba如何将必要的特权授予适当组。
[0143]
应当注意的是,尽管已经公开了若干实施例,但本文公开的实施例并非互相排斥。
[0144]
在下文中,将描述本发明的系统和方法的实施方式的总体方面。
[0145]
例如,本发明的系统或本发明的系统的部分可以处于“处理机”(诸如通用计算机)的形式。如这本文所使用的,术语“处理机”应当被理解为包括使用至少一个存储器的至少一个处理器。至少一个存储器存储指令集。指令可以永久地或临时地存储在处理机的一个或多个存储器中。处理器执行存储在一个或多个存储器中的指令用于处理数据。指令集可以包括执行一个或多个特定任务(诸如以上描述的那些任务)的各种指令。这种用于执行特定任务的指令集可以被表征为程序、软件程序或简单地表征为软件。
[0146]
在一个实施例中,处理机可以是专用处理器。
[0147]
如以上所指出的,处理机执行存储在一个或多个存储器中的指令以处理数据。例如,这种数据处理可以响应于处理机的一个或多个用户的命令,响应于先前的处理,响应于另一个处理机的请求和/或任何其他输入。
[0148]
如以上所指出的,用于实现本发明的处理机可以是通用计算机。然而,上述处理机还可以利用各种其他技术中的任何一种,包括专用计算机,计算机系统(包括例如微型计算机、小型计算机或主机、编程微处理器、微控制器),外围集成电路元件,csic(客户专用集成电路)或asic(专用集成电路)或其他集成电路,逻辑电路,数字信号处理器,可编程逻辑装置(诸如fpga、pld、pla或pal),或者能够实现本发明的过程的步骤的任何其他装置或装置
布置。
[0149]
用于实现本发明的处理机可以利用合适的操作系统。因此,本发明的实施例可以包括运行以下的处理机:ios操作系统、os x操作系统、android操作系统、microsoft windows
tm
操作系统、unix操作系统、linux操作系统、xenix操作系统、ibm aix
tm
操作系统、hewlett-packard ux
tm
操作系统、novell netware
tm
操作系统、sun microsystems solaris
tm
操作系统、os/2
tm
操作系统、beos
tm
操作系统、macintosh操作系统、apache操作系统、openstep
tm
操作系统或其他操作系统或平台。
[0150]
应当理解的是,为了实践如上所述的本发明的方法,处理机的处理器和/或存储器物理上不必位于相同地理位置。也就是说,由处理机使用的处理器和存储器中的每一个可以位于地理上不同的位置并且被连接以便以任何合适的方式通信。附加地,应当理解的是,处理器和/或存储器中的每一个可以由不同的物理件设备组成。因此,处理器不必是一个位置中的一个单件设备,并且存储器不必是另一个位置中的另一个单件设备。也就是说,预期处理器可以是两个不同物理位置中的两件设备。两件不同设备可能以任何合适的方式连接。附加地,存储器可以包括两个或更多个物理位置中的两个或更多个存储器部分。
[0151]
为了进一步说明,如上所述,处理由各种部件和各种存储器执行。然而,应当理解的是,根据本发明的另一实施例,如上所述的由两个不同部件执行的处理可以由单个部件执行。另外,如上所述的由一个不同部件执行的处理可以由两个不同的部件执行。以类似的方式,根据本发明的另一实施例,如上所述的由两个不同存储器部分执行的存储器存储可以由单个存储器部分执行。另外,如上所述的由一个不同的存储器部分执行的存储器存储可以由两个存储器部分执行。
[0152]
另外,可以使用各种技术来提供各种处理器和/或存储器之间的通信,以及允许本发明的处理器和/或存储器与任何其他实体通信;即例如获得进一步的指令或访问和使用远程存储器存储。例如,用于提供这种通信的此类技术可以包括网络、互联网、内联网、外联网、lan、以太网、经由小区塔或卫星的无线通信、或者提供通信的任何客户端服务器系统。此类通信技术可以使用任何合适的协议,诸如tcp/ip、udp或osi。
[0153]
如上所述,可以在本发明的处理中使用指令集。指令集可以呈程序或软件的形式。例如,软件可以呈系统软件或应用程序软件的形式。例如,软件也可以呈单独程序的集合、较大程序内的程序模块、或程序模块的一部分的形式。所使用的软件还可以包括以面向对象编程形式的模块化编程。软件告诉处理机如何应对正在处理的数据。
[0154]
此外,应当理解的是,在本发明的实现和操作中使用的指令或指令集可以呈合适的形式以使得处理机可以读取指令。例如,形成程序的指令可以呈合适编程语言的形式,所述编程语言被转换为机器语言或目标代码以允许一个或多个处理器读取指令。也就是说,使用编译器、汇编器或解释器将以特定编程语言编写的编程代码或源代码的行转换为机器语言。机器语言是特定于具体类型的处理机(即例如特定于具体类型的计算机)的二进制编码的机器指令。计算机理解机器语言。
[0155]
可以根据本发明的各种实施例使用任何合适的编程语言。示意性地,所使用的编程语言可以例如包括汇编语言、ada、apl、basic、c、c++、cobol、dbase、forth、fortran、java、modula-2、pascal、prolog、rexx、visual basic和/或javascript。此外,不必将单一类型的指令或单一编程语言与本发明的系统和方法的操作结合使用。而是,可以根据需要
和/或期望使用任何数量的不同编程语言。
[0156]
而且,在本发明的实践中使用的指令和/或数据可以根据需要利用任何压缩或加密技术或算法。加密模块可以用于加密数据。此外,例如,可以使用合适的解密模块来解密文件或其他数据。
[0157]
如上所述,本发明可以示意性地以处理机的形式实现,包括例如包括至少一个存储器的计算机或计算机系统。应当理解的是,根据需要,使得计算机操作系统能够执行上述操作的指令集(即例如,软件)可以包含在一个或多个各种介质中的任一个上。另外,由指令集处理的数据也可以包含在一个或多个各种介质中的任一个上。也就是说,用于保存本发明中使用的指令集和/或数据的特定介质(即处理机中的存储器)可以例如采用各种物理形式或传输中的任一个。示意性地,介质可以成以下的形式:纸、纸透明胶片、光盘、dvd、集成电路、硬盘、软盘、光盘、磁带、ram、rom、prom、eprom、电线、电缆、光纤、通信信道、卫星传输、存储卡、sim卡或其他远程传输、以及可由本发明的处理器读取的任何其他数据介质或数据源。
[0158]
此外,在实现本发明的处理机中使用的一个或多个存储器可以成各种形式中的任一个以根据需要允许存储器保存指令、数据或其他信息。因此,存储器可以呈数据库的形式以保存数据。例如,数据库可以使用任何期望的文件布置,诸如平面文件布置或关系数据库布置。
[0159]
在本发明的系统和方法中,可以利用各种“用户接口”来允许用户与用于实现本发明的一个或多个处理机接口连接。如本文所使用的,用户接口包括由处理机使用的任何硬件、软件、或硬件和软件的组合,其允许用户与处理机交互。例如,用户接口可以呈对话屏幕的形式。用户接口还可以包括以下中的任一个:鼠标、触摸屏、键盘、小键盘、语音阅读器、语音识别器、对话屏、菜单框、列表、复选框、切换开关、按钮、或允许用户在其处理指令集和/或向处理机提供信息时接收关于处理机操作的信息的任何其他装置。因此,用户接口是提供用户与处理机之间的通信的任何装置。例如,用户通过用户接口提供给处理机的信息可以呈命令、数据选择、或某个其他输入的形式。
[0160]
如上所述,用户接口由处理机利用,所述处理机执行指令集以使得处理机为用户处理数据。用户接口通常由处理机使用以用于与用户交互以便传送信息或从用户接收信息。然而,应当理解的是,根据本发明的系统和方法的一些实施例,人类用户实际上不必与本发明的处理机所使用的用户接口交互。相反,还预期本发明的用户接口可以与另一个处理机(而不是人类用户)交互,即传送和接收信息。因此,其他处理机可以被表征为用户。此外,预期本发明的系统和方法中利用的用户接口可以部分地与一个或多个其他处理机交互,同时还部分地与人类用户交互。
[0161]
本领域技术人员将容易理解的是,本发明易于广泛使用和应用。在不脱离本发明的实质和范围的情况下,除了本文中描述的那些之外,本发明的许多实施例和改编,以及许多变化、修改和等同布置将在本发明及其前面的描述中显而易见或被合理建议。
[0162]
因此,尽管这里已经关于本发明的示例性实施例详细描述了本发明,但应当理解的是,本公开仅是本发明的说明和示例并且用于提供本发明的可实现的公开。因此,前述公开内容不旨在被解释或限制本发明或者以其他方式排除任何其他此类实施例、改编、变化、修改或等同布置。

技术特征:
1.一种向多租户hadoop集群中的hdfs应用程序提供安全性的方法,其包括:在包括多个节点、多个租户和多个应用程序的单个多租户多节点hadoop集群中:所述租户或应用程序中的一个为客户端认证客户端进程;所述租户或应用程序中的一个从所述客户端接收请求,所述请求包括来自密钥分发中心的会话票证和临时会话密钥中的至少一个;所述租户或应用程序中的一个基于至少一个客户端授权以及所述会话票证和所述临时会话密钥中的所述至少一个来认证所述客户端;以及所述租户或应用程序中的一个将所有者、组所有者、默认权限和扩展访问控制列表eacl分配给多个租户目录和多个主目录,其中所述eacl防止未经授权的租户访问所述租户目录和所述主目录中的资源。2.根据权利要求1所述的方法,其中所述密钥分发中心是kerberos密钥分发中心。3.根据权利要求1所述的方法,其中所述客户端通过提供用户名和密码与所述密钥分发中心进行验证。4.根据权利要求3所述的方法,其还包括:所述租户或应用程序中的一个确定选自包括超级用户组、多个租户组和至少一个应用程序组的组的所述客户端的至少一个组。5.一种用于为多租户hadoop集群中的应用程序提供安全性的方法,其包括:在包括多个节点、多个租户和多个应用程序的单个多租户多节点hadoop集群中:所述租户或应用程序中的一个为多个租户标识多个组和角色并且标识所述角色与至少一个有效目录组之间的交叉引用;所述租户或应用程序中的一个为所述组中的每一个创建有效目录;所述租户或应用程序中的一个将多个用户中的每一个添加到租户组和应用程序组;所述租户或应用程序中的一个为应用程序模式创建基目录;所述租户或应用程序中的一个使用扩展访问控制列表eacl向所述租户分配角色和特权;以及所述租户或应用程序中的一个创建租户共享空间,以用于在所述租户内的应用程序之间共享数据,其中所述eacl防止未经授权的租户访问所述租户共享空间。6.根据权利要求5所述的方法,其中所述应用程序是apache hive。7.根据权利要求5所述的方法,其中所述应用程序是cloudera impala。8.根据权利要求5所述的方法,其中所述角色和特权基于至少一个租户应用程序要求。9.根据权利要求5所述的方法,其还包括:所述租户或应用程序中的一个通过用户名和密码来认证用户;以及所述租户或应用程序中的一个使用基于角色的精细粒度认证授权所述用户。10.一种用于为多租户hadoop集群中的hbase提供安全性的方法,其包括:在包括多个节点、多个租户和多个应用程序的单个多租户多节点hadoop集群中:所述租户或应用程序中的一个标识具有对hbase命名空间的权限的多个hbase命名空间和组;所述租户或应用程序中的一个为所述组中的每一个创建有效目录;所述租户或应用程序中的一个创建所述hbase命名空间,以满足至少一个租户要求;
所述租户或应用程序中的一个为具有至少一个特权的每个应用程序创建默认角色;所述租户或应用程序中的一个创建租户共享空间,以用于在所述租户内的应用程序之间共享数据,其中扩展访问控制列表防止未经授权的租户访问所述租户共享空间。11.根据权利要求10所述的方法,其中所述至少一个特权控制对所述应用程序的访问。12.根据权利要求10所述的方法,其还包括:所述租户或应用程序中的一个使用访问控制列表来授权客户端动作。13.根据权利要求10所述的方法,其还包括:所述租户或应用程序中的一个使用基于角色的访问控制来授予客户端权限。

技术总结
本申请公开了用于多租户Hadoop集群的安全设计和架构。在一个实施例中,在包括多个租户和多个应用程序的多租户Hadoop集群中,一种用于在多租户Hadoop集群中标识、命名和创建多租户目录结构的方法可以包括:(1)标识选自由超级用户组、多个租户组和至少一个应用程序组组成的组的目录结构的多个组;(2)为所述组中的每一个创建有效目录;(3)将多个用户中的每一个添加到所述多个租户组和所述应用程序组中的一个;(4)为所述用户创建租户目录和主目录;以及(5)将所有者、组所有者、默认权限和扩展访问控制列表分配给所述租户目录和所述主目录。目录。目录。


技术研发人员:A
受保护的技术使用者:摩根大通国家银行
技术研发日:2017.05.23
技术公布日:2023/9/12
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐