Последние обновления операционных систем, брандмауэры... Снаружи наша
система – неприступный бастион. А изнутри? Редко меняющиеся и «расползающиеся»
пароли, приходящие и уходящие пользователи, пересылка паролей по незащищеным
каналам... Знакомо? Тогда эта статья для вас.
Многие системные администраторы, которые назначают пароли системным учетным
записям на серверах, а затем раздают их пользователям (например, программистам и
дизайнерам), сталкиваются с проблемой «расползания» паролей среди
пользователей. И в результате невозможно определить, какие пользователи к
какому ресурсу имеют доступ. К тому же, если
используются пароли, то их необходимо менять каждые несколько месяцев, и при
рассылке обновленных паролей существует опасность их «утечки».
Поэтому я полностью отказался от использования
паролей и перешел к системе аккредитации пользователей. Каждый пользователь
имеет свой публичный ключ SSH, который однозначно его идентифицирует, и таким
образом, создавая список публичных ключей для какого-нибудь ресурса, можно
управлять списком аккредитованных пользователей.
Затем я некоторое время использовал инструмент
для централизованного управления серверами cfengine для копирования ключей
пользователей на сервера. Но при этом возникла проблема, что из-за сложности cfengine
системные администраторы 3-го и 4-го уровней не могли управлять аккредитацией
пользователей.
К тому же из-за хранения ключей во множественных
файлах на множественных серверах бывает проблематично определить, к каким
ресурсам имеет доступ тот или иной пользователь, и, например, в случае ухода
пользователя или утери приватного ключа есть вероятность «прозевать» какой-либо
файл с этим ключом.
Конечно, можно было бы написать несколько
простейших скриптов, которые раскладывали бы ключи по серверам и уничтожали бы
неизвестные ключи. Но такие «самопальные» скрипты, как показывает практика,
требуют немало времени на сопровождение при расширении систем, тестирование,
документирование и обучение коллег системных администраторов, которые должны
обеспечить работу этих скриптов в случае отсутствия разработчика.
Поэтому возникла идея по хранению ключей в централизированной
базе данных.