这个问题来自前一段时间,但我会尝试为任何其他处理 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 中适当地更改权限。