Назад | Перейти на главную страницу

Есть ли способ настроить sudo, чтобы не нужно было искать имена групп / или ускорить разрешение имен групп sssd?

У меня есть большое количество хостов Linux, которые подключены с помощью sssd в домен Windows Active Directory (AD) для поиска пользователей / групп. В основном это работает нормально, за исключением одной проблемы; sudo.

Из того, что мне удалось найти в ходе тестирования, каждый раз, когда вы запускаете sudo команда sudo пытается разрешить все имена всех групп, в которых находится пользователь. Поскольку sssd только по умолчанию кэширует gid и должен выполнять медленный поиск имени (при условии, что что-то не вызвало sssd для кэширования недавно названных групп на хосте) это может вызвать sudo чтобы сделать паузу на 45 секунд для учетных записей во многих группах, прежде чем она дойдет до запроса пароля для продолжения sudo команда.

Из моего тестирования это разрешение имени группы происходит независимо от того, есть ли sudo правила, применяемые к пользователям, использующим их группы. Я тестировал изменение значений group_source в sudo.conf но это, похоже, не имело большого эффекта.

Удаление всех наших пользователей из большинства групп, в которых они находятся, на самом деле не вариант (решение по безопасности инфраструктуры, которое я не могу контролировать), поэтому мне остается попытаться найти способ остановить sudo долгая пауза, пока ищутся все идентификаторы групп.

Единственное решение, которое я придумал до сих пор, - запускать cronjob каждые 15 минут, чтобы сделать что-то вроде getent group делать sssd постоянно храните имена групп в кэше в памяти, но это кажется хакерским решением. Так что я надеюсь, что у кого-нибудь в сети может быть лучшее решение для ускорения sudo в этой ситуации?

Я бы предложил либо установить ignore_group_members возможность true, или связать кеш с tmpfs, или дождаться апстрима 1.14.

Причина, по которой разрешение группы является медленным, заключается в том, что сохранение группы при обновлении кеша после истечения срока действия кеша всегда записывает полный объект группы в кэш на диске, даже если ничего не изменилось. В 1.14 мы меняем логику кеширования, чтобы обновлять кеш только в том случае, если что-то действительно изменилось, см. One Fourteen повышения производительности.

Настройка ignore_group_members приведет к тому, что группы будут казаться пустыми, что уменьшит их размер и ускорит время сохранения кеша. Обратите внимание, что это не повлияет на sudo функциональность, потому что sudo использует initgroups() чтобы узнать, в каких группах состоит пользователь, а не getent group и группы инициализации.

Я также написал сообщение в блоге на sssd настройка производительности некоторое время назад, хотя она ориентирована на сервер IPA, многие моменты относятся к sssd-ad конфигурация тоже.