Мы запускаем несколько сред на 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 и распространять их внутри команды, чтобы:
Любые предложения приветствуются.
Вы не должны делиться этими ключами. Период.
Каждый пользователь должен создать свою собственную пару ключей 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
.