Стратегия управления доступом отдельных лиц по протоколу SSH из концентратора Ansible

Стратегия управления доступом отдельных лиц по протоколу SSH из концентратора Ansible

У моей команды есть Ansible hub, с которого мы управляем несколькими узлами. Для этого мы подключаемся к хабу по ssh и делаем sudo для общего пользователя "ansible". У этого пользователя есть пара ключей ssh, которая есть у всех узлов в их файле authorized_keys.

Это работает, но это означает, что каждый имеет доступ ко всем узлам в любое время.

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

Есть ли у кого-нибудь такая стратегия? Я думал использоватьподписанные ключи sshпредоставить временный доступ, но пока не изучил этот вопрос.

решение1

У вас есть Ansible, поэтому есть быстрое решение — используйте Ansible для этого...

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

Если вы хотите ограничить доступ на машину, вы можете настроить список пользователей на хост или группу хостов и заполнять только эти открытые ключи для этих хостов в этой группе. Также удаление пользователя с целевого хоста таким образом легко, либо используя карту и шаблон (вместо добавления открытого ключа), либо создав отрицательный список.

Таким образом, пользователь может напрямую переходить с концентратора на целевую машину, минуя пользователя Ansible.

Связанный контент