【问题标题】:Flume-ng hdfs securityFlume-ng hdfs 安全性
【发布时间】:2014-05-20 10:56:20
【问题描述】:
我是 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 写入任何数据?
【问题讨论】:
标签:
hadoop
hdfs
cloudera
flume
flume-ng
【解决方案1】:
这个问题是很久以前提出的,但我会尝试为任何其他处理 Flume 和 HDFS 安全性的开发人员回答这个问题。
Flume 的 HDFS 接收器只需要保存数据的 endpoint。这样的端点是否安全,它完全取决于 Hadoop,而不是 Flume。
Hadoop 生态系统有多种实现安全性的工具和系统,但我们关注的是那些 native 元素,我们讨论的是身份验证和授权方法。
身份验证基于 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 中适当更改权限。