Flume-ng hdfs安全性

时间:2014-05-20 10:56:21

标签: hadoop hdfs cloudera flume flume-ng

我是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?

1 个答案:

答案 0 :(得分:1)

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

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

Hadoop生态系统有几个用于实现安全性的工具和系统,但是关注那些 native 元素,我们讨论了身份验证和授权方法。

身份验证基于Kerberos,并且与任何其他身份验证机制一样,它是确定某人或某事实际上是声明的人或事物的过程。因此,通过使用auth,通过了解HDFS用户名是不够的,但您必须通过先前对Kerberos进行身份验证并获取故障单来说明您拥有此类用户。身份验证可以基于密码或基于密钥表;你可以看到keytabs作为"证书文件"包含身份验证密钥。

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

据说,如果您查看Flume sink,您会发现有一些关于Kerberos的参数:

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

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

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