Как безопасно управлять закрытыми ключами для пар ключей, управляемых EC2?

8

Для запуска экземпляра EC2 вам нужна пара ключей. Как вы справляетесь с ситуацией, когда инженер с доступом к закрытому ключу для этой пары ключей покидает компанию? Будет ли работать добавление индивидуального доступа по ssh и деавторизация исходной пары ключей сразу после запуска экземпляра?

Джефф
источник
1
повторно развернуть новые экземпляры экземпляров EC2 и удалить старые со старой парой ключей?
sdolgy

Ответы:

10

Когда сотрудник или подрядчик покидает компанию, вам необходимо отключить любой привилегированный доступ к ресурсам компании. Это включает в себя (но не ограничивается) ваши ключевые проблемы SSH:

  1. Удалите открытый ключ ssh из всех файлов авторизованных ключей во всех запущенных экземплярах. Замените их новым сгенерированным открытым ключом ssh, который известен только людям, которые должны иметь доступ.

  2. Удалите все записи пары ключей в EC2, которые были известны усопшим, чтобы новые экземпляры не могли быть запущены с этими парами ключей. Замените их новыми записями пар ключей, возможно, с теми же именами, если ваш

Альтернативный метод, который вы предлагаете, также хорош, и я использую его: отключите исходный ключ ssh и добавьте отдельные открытые ключи ssh для каждого разработчика, чтобы они могли войти в систему со своим обычным закрытым ключом ssh. Это может быть сделано для входа в общую учетную запись или для каждого разработчика, получающего свою собственную индивидуальную учетную запись пользователя (мой выбор).

После ухода сотрудника вам придется не только очистить работающие серверы, но и процесс, который добавляет ключи ssh на новые серверы. И, когда сотрудник присоединяется, вам нужно сделать обратное: добавить ключи ssh к работающим серверам и обновить новый процесс сервера.

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

Эрик Хаммонд
источник
3

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

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

Когда вы разрешаете использование общих учетных данных:

  • Невозможно использовать логи, чтобы узнать, кто на самом деле / был на хосте
  • Невозможно удалить пользователя без удаления всех пользователей (включая экстренный доступ, для чего на самом деле предназначен этот закрытый ключ EC2)
kgilpin
источник
2

См. Документацию Amazon по ротации учетных данных .

Используйте что-то вроде puppet или solid ssh script, чтобы обойти и заменить все экземпляры старого ключа, если вы не хотите перезапускать все ... или просто перезапускать все.

Джефф Ферланд
источник
Я думаю, что он говорит не о ключах учетной записи, которые вы можете вращать, а о личном ключе .pem для входа в ssh.
2
Вход в ssh контролируется записями ~ / .authorized_keys. Изначально они запускаются процессом запуска EC2, поэтому для их замены или перезапуска необходимо использовать марионетку или сценарии.
Джефф Ферланд
хорошо. Я этого не знал :).
Да все верно. Для обычных учетных записей я мог бы использовать sshd для использования LDAP и, таким образом, иметь возможность деактивировать пользователя один раз из LDAP. Но ключи запуска управляются AWS. Поэтому я считаю, что решение puppet / chef, заключающееся в удалении ключа запуска из каждого файла author_keys каждого сервера, является подходящим решением. Думаю, я бы также хотел, чтобы у каждого администратора был свой собственный ключ запуска AWS, поэтому я удаляю доступ только одному пользователю за раз.
Джефф
@Jeff Если SSH настроен для ссылки на LDAP и игнорирует авторизованные ключи, тогда ключ запуска будет иметь значение только для управления запуском и завершением экземпляра. Это зависит от того, как вы строите свой имидж.
Джефф Ферланд