Prática recomendada para gerenciar arquivos AWS SSH .pem dentro de equipe [duplicada]

7

Estamos executando vários ambientes no EC2 usando o VPC. Em cada VPC, temos um host de bastiões reforçado configurado, que é usado como ponto inicial de entrada do SSH na rede.

Para acessar hosts em nossas sub-redes VPC privadas, um usuário primeiro o SSH para o host de bastiões e, em seguida, o SSH para outros hosts nas sub-redes. Para fazer isso, o usuário encaminha as chaves SSH (baixadas como arquivos .pem da AWS) quando elas fazem a conexão SSH inicial. Por exemplo:

ssh -A [email protected]
ssh [email protected]

O objetivo do host bastião é permitir que os membros da equipe acessem com segurança nossos ambientes, desde que eles tenham ambas as chaves .pem. Os membros da equipe são confiáveis e dentro de uma única organização.

Minha pergunta é: Qual é a melhor maneira de gerenciar e distribuir os arquivos .pem dentro da equipe para que:

  1. Os membros da equipe podem encontrar os arquivos .pem corretos para o ambiente ao qual desejam se conectar
  2. O armazenamento dos arquivos .pem é seguro
  3. Podemos autorizar explicitamente usuários individuais a acessarem as chaves

Todas as sugestões são bem-vindas.

    
por Rob Blake 09.06.2015 / 18:12

1 resposta

24

Você não deve compartilhar essas chaves. Período.

Cada usuário deve gerar seu próprio par de chaves SSH e sua chave pública deve ser implantada em cada sistema ao qual eles precisam acessar. As chaves privadas são nomeadas como são por um motivo - elas devem ser privadas para cada usuário, geradas por elas, protegidas com uma frase secreta e mantidas em um local seguro na estação de trabalho desse usuário. Mesmo com uma equipe totalmente confiável, o uso de credenciais compartilhadas vai contra todas as melhores práticas existentes (por diversos motivos).

Quando você começa a usar chaves por usuário, ambos os outros problemas desaparecem.

Além disso, para evitar o estúpido rigamarole dual-ssh, basta colocar o seguinte em sua configuração ssh de usuários:

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

Depois de fazer isso, seus usuários poderão executar um único comando para se conectar diretamente ao host interno, por exemplo, $ ssh internal-host.example.com .

    
por 09.06.2015 / 18:20