Как видно из заголовка, возможно ли создать службу, которая может обрабатывать запросы WebHDFS от нескольких пользователей в одной и той же области?
Я довольно растерялся по этому вопросу, искал в Интернете и нашел многовещей, но, похоже, никто не отвечает на мой вопрос.
Я использую SpringBoot для проверки этого, и до сих пор я сделал следующее:
application.yml:
# HDFS properties
hdfs:
user: user1
config.path: file:/environment/hadoop-config/local.xml
base:
path: /user/${hdfs.user}
data.path: ${hdfs.base.path}/data
-
@Bean("FileSystem")
public FileSystem hadoopConfig(
@Value("${hdfs.config.path}") final Resource hdfsConfig,
@Value("${hdfs.user}") final String hdfsUser
) throws IOException {
final org.apache.hadoop.conf.Configuration config = new org.apache.hadoop.conf.Configuration();
config.addResource(hdfsConfig.getInputStream());
UserGroupInformation.setConfiguration(config);
UserGroupInformation.setLoginUser(UserGroupInformation.createRemoteUser(hdfsUser));
final FileSystem fileSystem = FileSystem.get(config);
return fileSystem instanceof WebHdfsFileSystem ? fileSystem : null
}
Как видите, этот компонент настроен для работы только с одним пользователем.
Exp.сценарий.Пользователь 1 имеет разрешение на чтение только своих данных и отправляет запрос на перечисление данных в / user1 / data / foo, в то же время Пользователь 2 имеет разрешение на чтение только своих данных и отправку для вывода данных в / user1 / data / foo иполучает отказ.Возможно ли это?
Может ли в файле JAAS определяться несколько принципалов?Опыт.
client {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal=“user1@EXAMPLE.COM”
useKeyTab=true
keyTab=“/etc/secrets/user1.keytab"
storeKey=true;
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal=“user2@EXAMPLE.COM”
useKeyTab=true
keyTab=“/etc/secrets/user2.keytab"
storeKey=true;
};
Обычная Java может работать, и мне просто нужно понять концепцию.Спасибо