2016-06-14 5 views
0

Я создал пользователя HDFS externUser, которому принадлежит папка /user/externUser в HDFS. разрешения установлены на drwx------ см скриншот ниже:Избегайте доступа к файлам HDFS без пароля

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

Вы установили незащищенный кластер. Режим аутентификации по умолчанию - SIMPLE. См. core-default.xml. В этом режиме каждый пользователь может притворяться другим пользователем по своему усмотрению. В вашем коде вы считаете себя «externUser».

Необходимо настроить безопасный режим. Поддерживается только secure mode hadoop Kerberos. Я не знаком с Амбари, но есть много документов о том, как горячо включить Kerberos в Амбари.

Дополнительная информация:
Setting Up Kerberos for Use with Ambari

+0

Спасибо, я погляжу на это! –

Смежные вопросы