1

我是 hadoop 和 Flume NG 的新手,我需要一些帮助。我不明白 hdfs 安全性是如何实现的。

以下是 Flume 用户指南中的配置行:

# properties of hdfs-Cluster1-sink agent_foo.sinks.hdfs-Cluster1-sink.type = hdfs agent_foo.sinks.hdfs-Cluster1-sink.hdfs.path = hdfs://namenode/flume/webdata

这是否意味着任何知道我的 hdfs 路径的人都可以将任何数据写入我的 hdfs?

4

1 回答 1

1

这个问题来自前一段时间,但我会尝试为任何其他处理 Flume 和 HDFS 安全性的开发人员回答这个问题。

Flume 的 HDFS 接收器只需要保存数据的端点。这样的端点是否安全,它完全取决于 Hadoop,而不是 Flume。

Hadoop 生态系统有多种实现安全性的工具和系统,但重点关注这些原生元素,我们将讨论身份验证和授权方法。

身份验证基于 Kerberos,并且与任何其他身份验证机制一样,它是确定某人或某物实际上是否是其被声明为谁或什么的过程。因此,使用 auth 仅知道 HDFS 用户名是不够的,但您必须通过先前针对 Kerberos 进行身份验证并获得票证来证明您拥有这样的用户。身份验证可以基于密码或基于密钥表;您可以将密钥表视为包含身份验证密钥的“证书文件”。

授权可以在文件系统上实现,通过决定哪些权限具有 HDFS 中的任何文件夹或文件。因此,如果某个文件只有 600 个权限,那么只有它的所有者才能读取或写入它。可以使用其他授权机制,如 Hadoop ACL。

话虽如此,如果你看一下Flume sink,你会发现有几个关于 Kerberos 的参数:

  • hdfs.kerberosPrincipal – 用于访问安全 HDFS 的 Kerberos 用户主体
  • hdfs.kerberosKeytab – 用于访问安全 HDFS 的 Kerberos 密钥表

在 Kerberos 术语中,主体是 Kerberos 可以为其分配票证的唯一身份。因此,对于 HDFS 上的每个启用用户,您都需要在 Kerberos 中注册一个主体。如前所述,keytab 是某个主体拥有的身份验证密钥的容器。

因此,如果您想保护 HDFS,请安装 Kerberos,为每个启用的用户创建主体和密钥表,并正确配置 HDFS 接收器。此外,在您的 HDFS 中适当地更改权限。

于 2015-02-27T09:06:26.800 回答