Это кошмар каждого системного администратора. По сути, мы хотим контролировать, кто и к каким хостам имеет доступ. Как бы просто это ни звучало, проблема состоит в том, чтобы найти масштабируемое решение, не требующее особого обслуживания (затраты на управление). Мы используем bcfg2 для Config Mgmt очень похож на Cfengine & puppet.
Некоторые способы:
Сетевые группы очень масштабируема, но связана с огромными накладными расходами на управление. Поддержка хостов, групп хостов, сетевых групп пользователей (отдельно от групп ldpa) кажется очень большим бременем, но это выполнимо.
ldap.conf (см. сообщение jmozdzen от 1 июля) и контроль доступа на основе LDAp. Мы могли бы создать шаблон ldap.conf для каждого хоста и создать группу с именем хоста и участниками в качестве пользователей. Но недостатком является то, что вы не можете указать группу ldap (команду пользователей) для доступа, а только индивидуально.
sshd_config ограничение. Но это не работает, если пользователи входят в систему изначально.
Проверка атрибута хоста. Отказ от комментариев pam_check_host_attr в ldap.conf и добавление имени хоста для каждого пользователя работает хорошо, но автоматизация не проста.
У кого-нибудь есть другой подход к этой проблеме, который хорошо масштабируется и автоматизирован?
Я использую что-то похожее на ваш «Вариант 2» - настройку LDAP (pam_ldap / nss_ldap), где каждый класс серверов имеет группу в LDAP (db, web и т. Д.), И членам этой группы разрешено входить в систему к этому классу сервера. Это примерно те же накладные расходы, что и сетевые группы, но он работает хорошо, потому что наши списки пользователей относительно статичны (у вас есть доступ к списку машин, и этот доступ почти всегда).
Мы не разрешаем вход в консоль для пользователей LDAP (только учетные записи аварийной службы и root могут входить в систему локально, и эти пароли тщательно охраняются), поэтому в нашем случае ограничения, специфичные для ldap, нужно применять только к sshd.
Другой интересный подход предлагается в модуле nssov OpenLDAP. Увидеть ПРОЧТИ МЕНЯ для подробностей.