Hadoop 安全、隔离和加固

信息安全 硬化 文件系统 防御
2021-08-14 13:47:35

这是一个多部分的问题,真正回到主要问题:

如何最好地保护Hadoop维基百科)集群中的数据。

(当前版本,香草主分支发行版 - 尽管我愿意听到其他人的消息)。经过大量搜索和研究,我还没有想出很多...

我的场景是一个服务提供商,它托管和处理来自几个大企业客户(多租户)的大量数据。这些客户不直接访问 Hadoop,而只能通过 SaaS 应用程序访问。然而,这些客户通常是直接的竞争对手,而且往往非常偏执(这是有道理的,因为每个人都可能对某些针对其他人的公司间谍活动感到高兴......)。

我的老派、下意识的反应是为每个客户部署单独的、孤立的实例。但是,这不切实际,也不允许利用 Hadoop 的优势和功能。
另外,我很难相信对于 Hadoop 的所有大用户来说,对于这些问题没有好的解决方案......

特别是,我正在研究这些问题:

  • 限制对每个应用程序使用的特定用户的访问(每个客户的应用程序用户)
  • 加密
  • 客户之间的隔离,即不允许一个客户查看另一个客户。
  • 一般硬化建议

我设法提出了一些方向,但无法验证这些方向是否是好的方向,或者是否有更好的解决方案。

  • 服务级别授权
  • 网络/系统隔离,防止应用程序以外的任何人直接访问
  • 每个应用程序用户(即客户)的文件/文件夹权限。
    我用这种方法发现的问题:
    • 权限只应用于 NameNode;直接访问 DataNodes 仍然可以提供访问权限。
    • 身份验证有点“不确定”,至少在他们添加 Kerberos 支持之前(之后,我们将不得不看到重新实现......)
    • 在我看来,这并没有在客户之间提供足够的隔离。
  • HDFS 联合/命名空间
    这可能能够提供更好的权限隔离,更不用说单独的服务器和为每个客户分配的带宽(以防止一个人尝试通过 NameNode 单点故障对另一个人进行 DoS)。但是我还没有找到任何关于真实世界使用的真实信息,或者它如何经得起滥用。
    此外,这并没有解决软身份验证的问题(是吗?)和直接 DataNode 块访问(是吗?)
  • 对于数据加密,我在 HDFS 加密(所有节点之间共享的单个对称密钥)或应用程序级加密(并且密钥(或密钥,例如每个客户一个)仍然需要分发给每个任务MapReduce 作业的节点)。
1个回答

这实际上取决于您试图保护您的数据的人。

我已经在每个节点上建立了使用eCryptfs的 Hadoop 集群,以确保数据可以在节点之间透明地共享,同时也确保所有数据在写入磁盘之前都经过加密。如果您试图保护数据免受云环境中虚拟机底层磁盘或远程网络存储的物理盗窃的影响,这将提供可衡量的隐私和保护级别。

全面披露:我是作者之一,也是 eCryptfs 用户空间实用程序的当前维护者。