EMR高安全解决方案项目实践

  • 收获赞:
  • 擅长领域:

借助EMR产品高安全版本能力,为云上企业提供金融级数据安全管控能力,帮助客户提升隐私数据保护能力,管理云上数据安全风险。本方案涉及的关键字有:Kerberos、Ranger、LDAP、Jindo、弹性伸缩、OSS、闪电立方等。

概述

信息化时代来临,数字化转型也一直是各个企事业单位的发展方向,大量的企业数据、个人隐私和行为数据的产生,带来数据安全管理的各种问题。同时,随着国家数据安全相关的法令法规日益完善,各级单位和企业、尤其是金融行业对数据安全管控能力的需求越来越迫切。EMR是一款基于开源体系构建的云上大数据平台,为满足越来越多的安全管控诉求,近期推出了一套EMR高安全版本,并在金融行业的客户做了深度实践。本方案希望能够通过项目实践案例,为后续有类似需求的客户提供一些参考和帮助。

目标读者:具备一定的开源技术栈基础,能够了解主流开源组件的基本用法。

方案架构

方案架构

方案整体采用存算分离架构,数据存储在OSS上,通过JindoFS进行数据交互,计算集群分为两个(一个用于做批量数据处理,一个用于数据分析),由于批量数据处理的集群负荷高峰期在夜晚,数据分析的集群负荷高峰期在白天,所以采用弹性伸缩的方案(晚上批处理集群弹出task节点做数据处理,白天分析集群弹出task节点做数据分析和即席查询),用户管理使用OpenLDAP,权限管理使用Ranger,本项目的任务调度采用客户自建的XXLJOB,鉴权认证采用Kerberos。

方案实施

数据迁移

本方案涉及数据源,是存储在客户线下IDC机房里的CDH中,数据迁移方案采用闪电立方。

数据迁移

迁移问题

  1. 目录挂载点自己就掉了(后续修改了nfs gataway的一个参数为soft后,挂载点没再掉,但会出现input/output error错误)

  2. 小文件拷贝速度慢。

根因分析

  1. 客户使用的NFS Gateway模式挂载HDFS文件,NFS Gateway模式不稳定导致IO慢,很多任务都hang住了。

  2. 我们官网推荐使用Fuse-DFS挂载文件系统,但是客户现场无法使用,原因是客户的CDH集群里启用了HDFS ACL,但是Fuse-DFS不支持在开启ACL的情况下使用。

解决方案

将HDFS数据直接通过Hadoop Distcp工具 + JindoSDK,写入到minioss中(服务器+闪电立方),完成数据的拷贝

  1. 服务器上架、IP配置,并测试与HDFS数据源的连通性

  2. IDC机房HDFS数据源集群部署JindoSDK程序并调试

  3. 服务器挂载闪电立方设备,并部署minioss并测试连通性

  4. 数据迁移:将HDFS数据直接通过Hadoop Distcp工具+ JindoSDK,写入到minioss中(服务器+闪电立方),完成数据的拷贝。其中,每台服务器为16核64GB起步配置,需占有2U的机柜空间,功率均为550W。

hadoop jar jindo-distcp-3.7.2.jar  -Dfs.jfs.cache.use-second-level-domain=true --src hdfs://nameservice1/logs/hsis --dest oss://test/logs/hsis --ossKey 9XYTBMI1VKJBQSZMQ1OW --ossSecret xBqhglWIUvlxRS8CzRqOYawS1H+0nwJWrFNW2YPv --ossEndPoint 10.67.4.xxx --queue root.hdfs --parallelism 50 --policy Standard

账号体系构建

账号体系

账号体系采用OpenLDAP+Kerberos+Ranger方案,由于集群开启了Kerberos,如何将用到的大数据组件和现有账号体系关联起来,是非常关键的。关键配置过程如下:

  1. EMR-3.22.0及之后版本,默认启动了OpenLDAP服务。E-MapReduce支持Knox与OpenLDAP集成,您可以通过OpenLDAP管理用户。具体参见OpenLDAP用户管理

  2. Hue作为一个数据开发平台,支持连接各种执行引擎,例如Hive、Spark、Impala和Presto。当这些执行引擎开启LDAP认证后,Hue需要进行相应的配置后才能成功连接。如何配置Hue连接开启LDAP认证的执行引擎,具体参见Hue连接开启LDAP认证的引擎

  3. E-MapReduce从2.7.x和3.5.x版本开始支持创建安全类型的集群。高安全类型集群中的开源组件以Kerberos的安全模式启动,因此只有经过认证的客户端(Client)才能访问集群的服务(例如HDFS)。具体参见开启Kerberos

  4. Ranger Usersync集成LDAP,Ranger提供了一个用户同步工具。您可以从Unix或者LDAP中拉取用户和用户组的信息。这些用户和用户组的信息被存储在Ranger Admin的数据库中,可以在定义策略时使用。您在配置Ranger的Policy时,可以授权LDAP中的用户或用户组访问组件。具体参见Ranger Usersync集成LDAP

  5. Ranger的用户可以分为Internal User和External User。LDAP和UNIX用户同步至Ranger后属于External User,在Ranger WebUI中创建的用户属于Internal User。在Ranger中配置权限时,可以给Internal User和External User授权。Ranger Admin集成LDAP后,LDAP中的用户可以登录Ranger WebUI。登录后,Ranger会在用户管理中同步创建该用户为External User。初始状态下,该用户仅能查看Ranger Service和Policy。管理员用户admin可以在用户管理中,升级普通用户为管理员用户。

  6. 服务开启LDAP认证功能后,访问服务时需要提供LDAP身份认证(LDAP用户名和密码),以便于提升服务的安全性。开启LDAP功能对接的LDAP为E-MapReduce自带的OpenLDAP。开启LDAP认证的功能可以方便您使用LDAP认证,避免了复杂的配置过程。如何一键开启和关闭LDAP认证,具体参见管理LDAP认证

数据权限管理

Apache Ranger提供集中式的权限管理框架,可以对Hadoop生态中的HDFS、Hive、YARN、Kafka、Storm和Solr等组件进行细粒度的权限访问控制,并且提供了Web UI方便管理员操作。具体参见Ranger功能概述

添加Ranger服务

新建集群时,在E-MapReduce控制台可选服务区域,直接勾选Ranger组件新建ranger服务

已有集群时,可以在集群管理页面添加Ranger服务。已有集群添加ranger

访问Ranger UI

在访问Ranger UI之前,需要确认已设置安全组,即Hadoop集群允许您通过当前网络访问该集群。具体详情请参见访问链接与端口

  • 进入集群详情页面。

  • 在左侧导航栏中,选择访问链接与端口。单击RANGER UI所在行的链接。

  • 在Ranger UI登录界面,输入用户名和密码(默认的用户名和密码均为admin)。

  • 首次登录后,需要修改密码。

组件集成Ranger

通过插件的方式,Ranger与集群中的开源组件进行集成。通过Ranger可以对组件进行细粒度的访问权限控制。您可以将集群中的组件集成到Ranger,以控制相关权限,详情请参见以下配置:

常见问题

Q1:EMR-GateWay集群的hosts未在EMR-Hadoop集群上同步,导致开启Kerberos后,在EMR-GateWay集群上执行spark-shell报错,EMR-Hadoop集群上的节点不能解析EMR-GateWay集群的机器。

A:手工将Gateway集群的主机名、IP映射信息,添加到EMR主集群所有节点的/etc/hosts配置文件。如果是弹性伸缩场景,可以通过引导脚本,在EMR主集群弹性扩出来的节点/etc/hosts配置文件添加Gateway主机名、ip信息。

Q2:默认密码无法登录Ranger UI时,如何处理?

A:如果默认密码被修改,您可以按照如下方法处理。

登录集群的Master节点,执行如下命令重置admin的密码。

mysql -urangeradmin -prangeradmin
update ranger.x_portal_user set password="ceb4f32325eda61xxxxxxxxc0f371" where login_id="admin";