开发者论坛 | 海睿思 轻量化数据中台生态引领者

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 308|回复: 0

谈谈Hadoop安全的那些事儿(上)

[复制链接]

2

主题

2

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2022-3-16 14:00:12 | 显示全部楼层 |阅读模式

随着大数据的日益流行,hadoop已经成为大数据处理的基础平台,当hadoop被更多公司使用时平台的安全性也为人们所关注。对于处理大数据的组织来说这意味着什么?意味着你拥有的数据越多,对数据的保护就越重要。意味着不仅要安全有效地控制离开自有网络的数据,还必须做好网络内部的数据访问控制。依据数据的敏感程度,我们可能要确保数据分析师能看到的数据是可以让他们分析的数据,并且必须明白发布这些数据及其分析结果可能产生的后果。
Apache Hadoop是最流行的大数据处理平台之一。尽管最初设计Hadoop时根本没考虑安全问题,但它的安全模型在不断地演进。“Hadoop安全”市场曾出现过爆炸性的增长,很多厂商都发布了“安全加强”版的Hadoop和对Hadoop的安全加以补充的解决方案。要让Hadoop达到安全性要求的巨大需求使得Hadoop一直在发生着变化,今天我们就来说说Hadoop安全的那些事儿。
一、Hadoop基础框架
在讲安全之前,先要做个基础普及。我猜国内很多安全人员对Hadoop的框架完全不了解,或知道的很少。
Hadoop在应用当中,业务首要考虑的是性能扩展、集群存储扩展,而在方法上主要依靠开源。了解Hadoop框架的意义在于,框架里的每个组件都存在潜在风险。每个node都是对等的,且互相通信,通信包括很多内容,比如取保数据正确复制、node在线离线、存储优化等功能,但这也就是说,他们之间是互相信任的,这就是一个风险。
MapReduce只是Hadoop底层一个分布式任务处理系统,整个Hadoop的框架是这样的:



你也可以把它看成是类似LAMP堆栈,可以根据自己的业务情况添加组件。例如你用HBase来存储数据,以实现毫秒级的检索,但对多字段的组合查询却比较弱,这时你可能就需要Solr来做组合查询。用Sqoop来帮你从传统关系型数据库导数据,用Pig来实现高级MapReduce功。Spark,Drill,Impala和Hive都可以用来做SQL查询。所以整个Hadoop是灵活、定制、模块化的。
灵活性带来了复杂性,也给安全带来了难度。每个模块都有不同的版本、配置,甚至需要单独的身份验证,因此每个模块都是风险点。所以就有了Sentry,可以为整个Hadoop生态系统统一实现授权,未来也许还有新的安全模块出现。
二、系统安全
在Hadoop的系统层面:
1、身份验证和授权
基于角色的权限访问控制(RBAC)是整个访问控制的核心,RBAC就是把角色和权限进行关联,这个关联包括了角色、组、表、标签以及其他各种可用数据。认证和授权在大型企业里,是需要跨团队的合作的,比如与SSO的集成是和IT打配合,数据字段密级的颗粒控制和数据平台配合实现。Hadoop生态里,身份是个比较复杂的内容,Hadoop在设计的时候就尽可能的与权威身份源松耦合,Hadoop默认使用Kerberos作为认证协议,但Kerberos对更高级的身份特征认证支持是不够的。
2、静态数据保护
静态数据的保护其实就是指加密,HDFS支持原生静态加密,防止直接从磁盘读取数据。但是敏感数据可不仅仅存在于HDFS层,日志、交换文件、消息队列、元数据库等其他地方也会有大量敏感数据存在。
3、多租户
Hadoop通常都是为多租户提供服务,例如我所在的公司,租户包括了不同的bg,也包括收购投资的公司,也有与外部合作的租户。租户之间的数据应该隔离或者加密,有的公司用的ACL来控制,而在云端,多数是通过区域密钥加密。
4、节点通信
举例来说,Hadoop和MongoDB默认是非安全通信方式,用的是基于TCP / IP,未加密的RPC。虽然提供了TLS和SSL,但是很少用在节点之间。
5、客户端交互
Client是和resource manager、node之间交互的。因此Client可以做出攻击行为,比如恶意占用资源、利用漏洞攻击。而Hadoop是一个分布型的架构,传统上的防火墙之类的工具不适合。
6、分布式节点
有一句话很经典,移动计算比移动数据便宜,数据在有资源的地方计算,从而实现大规模并行处理。分布式会让环境更复杂,从而产生更多的攻击面,补丁、配置管理、身份验证、静态数据保护、一致性都成为问题。
三、运营安全
除了系统安全之外,还有操作运维上的安全。运维一般都希望提供配置管理、补丁升级、策略维护之类的功能。而Hadoop之前是没有这些东西的,就算是现在也缺少成熟的运营手段。在这部分存在的问题是:
1、身份验证和授权
身份和身份验证是安全的核心,在这方面Hadoop做了大量的集成,从最初不提供认证,到集成LDAP,Active Directory,Kerberos、X.509,通过这些集成,可以基于角色映射授权,也可以扩展到更细粒度的授权(比如Apache Sentry),再到自定义。
2、特权访问
在公司里,可能负责操作系统的是一个管理员,Hadoop是另一个管理员,他们都可以访问集群的文件,所以需要分隔管理角色,把不必要的访问限制到最低。对于直接访问数据,可以通过基于角色授权、访问控制列表等的组合管理方式。对于管理角色则可以通过三权分立来分隔。再强一些,则是加密和密钥管理,HDFS加密。
3、配置和补丁管理
集群可能有几百个节点,对这些节点统一做配置和补丁管理是个难题,比如新增节点和原有节点配置不统一这类问题。现有的配置管理工具都是在底层平台上,NoSQL系统还没有对应的配置管理,另外市面上也没有针对Hadoop做特定检查的扫描器。
4、软件依赖
Hadoop有很多不同组件,每个组件有自己的配置、补丁、验证方式。好在Docker技术的出现从很大程度上可以缓解这个问题。
5、应用和节点的身份验证
如果攻击者可以添加一个节点进入集群,就可以渗透到数据层,这就直接绕过了身份认证。通过节点进一步拿到Kerberos密钥表文件,则可以伪造身份。这时候则可以考虑证书,虽然证书部署会变得复杂一些,但提高了安全性。
6、日志审计
如果发生数据泄漏,能不能从日志上进行追踪?大数据环境里有一些开源工具可以用,比如Facebook开源的Scribe或者Logstash,日志可以存放在集群里面,不过这样也有被篡改风险,所以很多公司会考虑Splunk等专用平台,把日志传到其他平台。Hadoop 里有很多组件,不同的日志格式,所以还需要做日志的聚合。另外仅有用户、ip这些信息不够,还要知道查询语句是什么。
7、监控和阻断
最常见的场景,计算平台资源不足,原因是某些熊孩子在平台上跑了一些垃圾任务占用了资源。又或者你发现一个恶意查询,这时候就得有手段阻止。Hadoop提供了一些监控工具,这些工具一般是嵌入在Hive或Spark这样的服务中,对恶意查询进行过滤。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|开发者论坛 | 海睿思 轻量化数据中台生态引领者 ( 苏ICP备13008384号-7 )

GMT+8, 2022-7-4 22:46 , Processed in 0.046217 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表