Доступ к WebHDFS с несколькими пользователями - PullRequest
0 голосов
/ 23 сентября 2019

Как видно из заголовка, возможно ли создать службу, которая может обрабатывать запросы 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 может работать, и мне просто нужно понять концепцию.Спасибо

...