我创建了一个HDFS用户externUser
,他拥有HDFS中的文件夹/user/externUser
。权限设置为drwx------
,请参见下面的屏幕截图:
我正在使用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视图(上面的屏幕截图)进行访问...
答案 0 :(得分:1)
您已安装了不安全的群集。默认的身份验证模式是SIMPLE。见core-default.xml。在这种模式下,每个用户都可以假装成他/她想要的另一个用户。在您的代码中,您的预定是&ex ;Utern'。
您应该设置安全模式。唯一支持的secure mode hadoop是Kerberos。我并不熟悉Ambari,但是有大量关于在Ambari中启用Kerberos的热门文档。