Ansible sudo с ограничительным разрешением - PullRequest
0 голосов
/ 23 февраля 2020

У нас есть случай использования, когда s sh пользователь test2 получает разрешение на запуск определенного сценария, принадлежащего другому пользователю test3. Ниже приведены разрешения, предоставленные в файле /etc/sudoers.

test2 ALL=(test3) NOPASSWD: /home/test3/start.sh

Это хорошо работает, когда мы запускаем ssh test2@target_host sudo -u test3 /home/test3/start.sh

Мы хотели выполнить задачу s sh через ansible стать method:sudo и стать_пользователем, и это никогда не работает. мы обнаружили, что ansible изменяет инструкцию, как показано ниже, во время фактического выполнения, и это никогда не совпадает с разрешениями для файла sudoer.

sudo -H -S -n  -u test3 /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-knavgwllrftljavwujkveyjcctlgkbda ; /usr/bin/python /var/tmp/ansible-tmp-1582478029.04-74694013835195/AnsiballZ_command.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''

похоже, что наш единственный вариант - обновить разрешения, как показано ниже но этот тип дает полное разрешение оболочки на пользователя test3, который никогда не будет удовлетворять нашим требованиям безопасности

test2 ALL=(test3) NOPASSWD: /bin/sh

Кто-нибудь сталкивался с подобной ситуацией, как это раньше? для контролируемого исполнения. Обратите внимание, что test2 и test3 не являются пользователями sudo.

1 Ответ

0 голосов
/ 24 февраля 2020

Поскольку для выполнения этого файла, принадлежащего test3, требуется только test2 пользователь, как насчет предоставления test2 разрешения на чтение и выполнение этого файла (и каталога, в котором он находится):

setfacl -m u:test2:rx /home/test3
setfacl -m u:test2:rx /home/test3/start.sh

Тогда вам вообще не нужны вещи become.

...