Можно ли извлечь пользователя из контекста потока в Presto с помощью специального поставщика учетных данных для S3? - PullRequest
0 голосов
/ 09 апреля 2019

Для доступа Presto к данным на S3 мне нужно иметь возможность принимать разные роли для разных пользователей (например, Боб -> роль1 и Бренда -> роль2).Я знаю, что EMRFS предоставляет эту функциональность, однако мы убираем Presto из EMR, поэтому мы больше не можем использовать EMRFS для этого делегирования.

Presto позволяет вам написать свой собственный провайдер учетных данных S3 для собственной файловой системы S3, однако он принимает только два аргумента java.net.Uri и Hadoop org.apache.hadoop.conf.Configuration в качестве конструкторов.

Я написал пользовательский поставщик учетных данных, который показывает все свойства объекта Configuration, а также Uri, и ни один из них не содержит никакой информации, относящейся к пользователю.

Можно ли получить информацию о пользователе от провайдера без изменения исходного кода Presto?Я вижу, что PR был отправлен некоторое время назад (https://github.com/prestodb/presto/pull/2640 см. Последний комментарий), но закрыт из-за добавления поставщика пользовательских учетных данных.Приведенная выше документация намекает на то, что вы можете использовать разные роли IAM для разных пользователей, но мне еще предстоит выяснить, как передается контекст.

Спасибо!

1 Ответ

1 голос
/ 11 апреля 2019

Сегодня это невозможно. Это сложно из-за жизненного цикла PrestoS3FileSystem и из-за того, что доступ к S3 является ленивым и происходит в случайных местах, где пользовательский контекст недоступен. У меня есть несколько идей о том, как это разрешить. Другим потенциальным подходом является недавно добавленная учетная запись, которая поддерживается для GCP.

Пожалуйста, сообщите о проблеме на https://github.com/prestosql/presto, и мы сможем определить наилучший способ поддержки этого варианта использования. Мы также можем обсудить это на нашем Slack: https://prestosql.io/community.html

...