首页 / 新闻

06.

09

2017

利用Transwarp Guardian保障HDFS安全

技术博客

Hadoop集群的安全日渐成为讨论焦点。据报道(http://thehackernews.com/2017/06/secure-hadoop-cluster.html),MongoDB服务器超过47800台,泄露数据量为25TB,与之相比,Hadoop服务器虽然仅有4487台,但是通过HDFS泄漏的数据量却超过了5000TB,这反映了Hadoop集群特别是HDFS,其中隐藏的巨大安全隐患。因此将Hadoop运行在安全模式下是大势所趋,加强Hadoop安全是必要且紧迫的。

为了广泛应对各种潜在安全挑战,Guardian 5.0在原有安全解决方案的基础上提供了更加完整的功能以及方便的操作,包括用户认证、授权、配额管理以及资源控制。用户认证通过LDAP以及KERBEROS协议,确保只有经过身份甄别的用户才能访问系统,授权保证只有被赋予权限的用户才可以访问系统资源,配额管理与资源负责控制用户使用的资源大小,三个部分一同保证TDH平台大数据安全。本文将通过Guardian 5.0的安全配置操作方式介绍如何对HDFS进行安全管理,实现有效的数据防盗。

 

新版Transwarp Guardian架构


Guardian 5.0的底层用改进的Guardian Directory Service代替OpenLDAP+Kerberos的方案,用同一套用户统一了LDAP/Kerberos认证方式,避免了OpenLDAP使用Kerberos认证,提高了LDAP认证效率。

第二层是独立的服务Guardian Server,实现了对完整ARBAC(Administrative Role-Based Access Control)模型的支持,提供REST API,用户友好的Web UI,密码策略等,并实现JWT Token机制服务于SSO。此外,Guardian Server实现了用户认证授权的统一化,使得从Web服务,如Workflow,Rubik到Hadoop底层都可以使用同一套用户,同一套机制实现授权;同时也开放了LDAP接口、REST API和LoginService以供第三方应用使用Guardian用户进行认证和授权的整合。

Guardian在第三层以插件的形式,为TDH各个组件提供了认证、授权、组映射以及配额管理,使得Hadoop组件可以使用统一的用户、组和权限管理模型。 

 

HDFS的权限管理


普通Hadoop集群中的各个组件通常使用不同模型进行权限管理。例如HDFS使用类似POSIX ACL的权限模型,用HDFS shell授权;Hive使用基于角色的RBAC模型,用SQL授权;而HBase使用的是基于组的RBAC权限模型,使用HBase shell授权。这就意味着为三个组件授权需要登录三个系统,使用三种不同的模型授权,为权限运维造成不小的难度。

为了解决此问题,Guardian 5.0引入了增强的ARBAC(Administrative Role Based Access Control)模型,统一了各个组件的权限管理,可以使用统一的Web UI或者REST API进行授权,同时兼容了SQL、HBase shell授权。

配置方法

下面我们将介绍如何利用Guardian管理HDFS的权限。

Guardian对于HDFS预设了以下五种权限:

1. READ:读权限

2. WRITE:写权限

3. EXEC:可执行权限

4. ADMIN:当用户拥有某个目录ADMIN权限时,他可以赋予和修改其他用户对于这个目录的权限。

5. ACCESS:服务级别的权限控制,只有当用户对于HDFS拥有ACCESS权限时,才能访问该服务,否则即使他拥有该服务资源的权限也无权访问。该权限的定义可以帮助管理员从服务级别直接控制用户访问。注意,ACCESS只能在GLOBAL中进行权限编辑。

现在以管理员的视角来看看,具体应该如何进行HDFS权限管理。

我们以管理员身份点击Guardian主页导航栏中的“权限”,在下拉列表中选择要配置的HDFS服务(如hdfs1)。

点击“权限”进入HDFS1权限配置页面,可以查看并修改HDFS的权限设置。通过在搜索栏中输入资源关键字,可以快捷地找到相关的目录或文件。

管理员可以在在该页面上对全局或者某一特定目录配置权限,对象可以是用户、组或者角色。

权限管理页面的第一项"GLOBAL"对应HDFS服务全局的权限,例如在上图中,alice用户拥有对HDFS全局的READ权限和ADMIN权限;public角色具有ACCESS权限,表示允许访问HDFS服务。所以,管理员可以通过对每位用户赋予public角色,使他们获得对HDFS的访问权。

下面的HDFS路径项用于对HDFS实现目录层级的更细粒度的权限划分。例如管理员可以对alice赋予/user目录的READ权限,再单独赋予/user/alice目录ADMIN权限。

点击任意目录项的“编辑”,对该项的权限进行修改。对组的权限赋予相当于赋予了该组内所有用户同样的权限,对角色的权限赋予相当于赋予了拥有该角色的用户同样的权限。

以alice用户为例:

1)为alice用户勾选READ权限,表示赋予alice对/training目录的写权限;

2)取消选中所有权限或直接点击删除,则删去alice对此目录的所有权限;

点击用户/组/角色列表最后一行末尾的,可以直接为任意用户/组/角色赋予/training目录的权限。

对/training目录拥有ADMIN权限的用户可以将此目录的权限赋予其他用户/组/角色。

另外管理员还可以通过点击页面右侧的“添加权限”按钮 ,增加任意用户/组/角色对任意路径的权限。

选择多个目录路径,将可以批量地为多个用户/组/角色配置多个目录的权限。

HDFS配额设置


Guardian 5.0提供了对HDFS的配额设置,从而简化了资源管理,使得集群资源使用情况被可视化。

配置方法

点击“权限”页面上的“配额”标签,切换到资源配额管理页面。此页面集中展示了HDFS目录项的路径、分配空间和最大文件数量等信息,方便用户统一管理配额。通过在搜索栏中输入路径关键词,管理员可以快捷地检索到相关目录。

例如需要修改"health-check-dir"目录的配额时,找到该项,点击操作栏中的按钮开始修改配额。点击按钮可直接删除对该项的配额管理设置。

点击页面右侧的“添加配额”按钮,此处以层级目录的形式展示文件系统,方便在目录名称模糊时进行查找。

勾选多个目录路径可以批量地进行配额管理。

点击确定,完成配置。

 

总结和展望


Guardian 5.0把权限和配额的配置方式从传统的命令行转变为对于用户更加友好的界面交互,使得安全防护更易实现。Guardian将持续致力于实现一个完整的、易用的大数据安全解决方案,今后会不断开发各种新的功能,为企业大数据安全保驾护航。

对此篇文章如有任何问题,欢迎以邮件形式联系我们:bigdataopenlab@transwarp.io