Назад | Перейти на главную страницу

Рекомендации по управлению файлами .pem AWS SSH внутри группы

Мы запускаем несколько сред на EC2 с использованием VPC. В каждом VPC настроен защищенный хост-бастион, который используется в качестве начальной точки входа SSH в сеть.

Чтобы получить доступ к хостам в наших частных подсетях VPC, пользователь сначала SSH к хосту-бастиону, а затем SSH к другим хостам в подсетях. Для этого пользователь пересылает ключи SSH (загруженные как файлы .pem с AWS) при первоначальном подключении по SSH. Например:

ssh -A ec2-user@bastion-host.on.aws
ssh ec2-user@app-server.on.aws

Вся цель хоста-бастиона - предоставить членам команды безопасный доступ к нашим средам, если у них есть оба ключа .pem. Члены команды пользуются доверием в рамках одной организации.

Мой вопрос: как нам лучше всего управлять файлами .pem и распространять их внутри команды, чтобы:

  1. Члены группы могут найти правильные файлы .pem для среды, к которой они хотят подключиться.
  2. Хранение файлов .pem безопасно
  3. Мы можем явно разрешить отдельным пользователям доступ к ключам

Любые предложения приветствуются.

Вы не должны делиться этими ключами. Период.

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

Когда вы начнете использовать индивидуальные ключи, обе другие проблемы исчезнут.

Вдобавок, чтобы избежать глупого двойного ssh-ригама, просто добавьте в конфигурацию ssh ваших пользователей следующее:

Host internal-host.example.com 
  Hostname internal-host.example.com 
  User ubuntu
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand ssh bastion-host.example.com nc %h %p 2> /dev/null

После этого ваши пользователи смогут запустить одну команду для прямого подключения к внутреннему хосту, например $ ssh internal-host.example.com.