
У моей команды есть Ansible hub, с которого мы управляем несколькими узлами. Для этого мы подключаемся к хабу по ssh и делаем sudo для общего пользователя "ansible". У этого пользователя есть пара ключей ssh, которая есть у всех узлов в их файле authorized_keys.
Это работает, но это означает, что каждый имеет доступ ко всем узлам в любое время.
Мне бы хотелось иметь какой-то подход, который позволит нам ограничивать пользователей, чтобы они могли получать доступ только к определенным узлам. Мы могли бы добавлять/удалять ключи отдельных лиц из authorized_keys каждого узла по мере необходимости, но это кажется слишком сложным для управления. Мне бы хотелось чего-то, чем было бы легко управлять, чтобы мы могли быстро авторизовать/деавторизовать пользователя для разных узлов.
Есть ли у кого-нибудь такая стратегия? Я думал использоватьподписанные ключи sshпредоставить временный доступ, но пока не изучил этот вопрос.
решение1
У вас есть Ansible, поэтому есть быстрое решение — используйте Ansible для этого...
Если у всех пользователей на концентраторе есть открытый ключ, вы можете использовать эти открытые ключи и пользователя ansible для публикации открытого ключа пользователя на целевых хостах.
Если вы хотите ограничить доступ на машину, вы можете настроить список пользователей на хост или группу хостов и заполнять только эти открытые ключи для этих хостов в этой группе. Также удаление пользователя с целевого хоста таким образом легко, либо используя карту и шаблон (вместо добавления открытого ключа), либо создав отрицательный список.
Таким образом, пользователь может напрямую переходить с концентратора на целевую машину, минуя пользователя Ansible.