避免无密码访问hdfs文件

ehxuflar  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(442)

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

我正在使用hdp2.4.2和ambari2.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视图(上面的屏幕截图)进行访问。。。

fv2wmkja

fv2wmkja1#

你安装了一个不安全的群集。默认的身份验证模式很简单。请参阅core-default.xml。在这种模式下,每个用户都可以按照自己的意愿伪装成另一个用户。在你的代码中,你的名字是“externuser”。
你应该设置安全模式。唯一支持的安全模式hadoop是kerberos。我不熟悉ambari,但是有很多关于hot在ambari中启用kerberos的文档。
更多信息:
设置kerberos以便与ambari一起使用

相关问题