无需密码即可避免HDFS文件访问

时间:2016-06-14 07:20:07

标签: hadoop hdfs

我创建了一个HDFS用户externUser,他拥有HDFS中的文件夹/user/externUser。权限设置为drwx------,请参见下面的屏幕截图:

Screenshot

我正在使用HDP 2.4.2和Ambari 2.2.2

现在我编写了一个Java应用程序,它使用以下代码打开并读取此用户文件夹中的csv文件:

System.setProperty("HADOOP_USER_NAME", "externUser");
Configuration conf = new Configuration();
Path path = new Path(hdfs://namenode_url:8020/user/externUser/test.csv);
FileSystem fs = path.getFileSystem(conf);
FSDataInputStream input = fs.open(path);

BufferedReader br = new BufferedReader(new InputStreamReader(input));
String headerRow = br.readLine();
String[] headers = headerRow.split(";");
br.close();

我正在从远程主机运行Java应用程序。令人惊讶的是,我可以使用此代码段访问该文件,没有指定用户的密码!有人可以解释这种行为以及如何使文件更安全吗?

如果没有以“正确”的用户身份登录,则无法通过Ambari HDFS视图(上面的屏幕截图)进行访问...

1 个答案:

答案 0 :(得分:1)

您已安装了不安全的群集。默认的身份验证模式是SIMPLE。见core-default.xml。在这种模式下,每个用户都可以假装成他/她想要的另一个用户。在您的代码中,您的预定是&ex ;Utern'。

您应该设置安全模式。唯一支持的secure mode hadoop是Kerberos。我并不熟悉Ambari,但是有大量关于在Ambari中启用Kerberos的热门文档。

更多信息:
Setting Up Kerberos for Use with Ambari