2015-12-21 2 views

ответ

1

Это вообще хорошая практика, чтобы использовать отдельные специализированные учетные записи служб для различных серверных процессов, где это возможно. Это ограничивает поверхность атаки в том случае, если злоумышленник нарушает один из процессов. Например, если злоумышленник скомпрометировал процесс A, тогда злоумышленник мог делать такие вещи, как файлы доступа, принадлежащие запущенной в процессе учетной записи. Если процесс B использовал ту же учетную запись, что и процесс A, тогда файлы, созданные процессом B, также были бы скомпрометированы. Используя отдельную учетную запись для процесса B, мы можем ограничить влияние уязвимости.

Помимо этого общего принципа существуют другие соображения, специфичные для реализации Hadoop, которые делают желательным использование отдельных учетных записей.

HDFS имеет концепцию super-user. Суперпользователем HDFS является учетная запись, которая запускает процесс NameNode. Суперпользователь имеет особые привилегии для запуска команд администрирования HDFS и доступа ко всем файлам в HDFS, независимо от настроек разрешений в этих файлах. Демоны YARN и MapReduce не требуют привилегий суперпользователя HDFS. Они могут работать как непривилегированный пользователь HDFS, получая доступ только к файлам, для которых у них есть разрешение. Запуск всего с одинаковой учетной записью непреднамеренно увеличил бы привилегии для демонов YARN и MapReduce.

При запуске в защищенном режиме YARN NodeManager использует LinuxContainerExecutor для запуска процессов контейнера в качестве пользователя, подавшего заявку YARN. Это работает с помощью специального исполняемого файла setuid, который позволяет пользователю, которому запущен NodeManager, переключиться на выполнение процесса как пользователя, подавшего заявку. Это гарантирует, что пользователи, отправляющие приложения, не могут эскалировать права, запустив код в контексте другой учетной записи пользователя. Однако сами исполняемые файлы setuid - это мощные инструменты, которые могут вызвать проблемы с эскалацией привилегий при неправильном использовании. Документация LinuxContainerExecutor описывает очень специфические шаги для установки разрешений и конфигурации для этого исполняемого файла setuid. Если отдельная учетная запись не использовалась для запуска демонов YARN, то этот исполняемый файл setuid должен быть доступен для большего набора учетных записей, что увеличит поверхность атаки.

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