Armazenando credenciais da AWS com segurança em uma máquina pessoal

10

Como posso armazenar com segurança credenciais da AWS em máquinas pessoais?

Em detalhe:

Todo mundo em nossa equipe exige credenciais de segurança da AWS para executar tarefas administrativas (as credenciais são separadas por função). Essas credenciais geralmente são armazenadas em texto sem formatação em alguns arquivos de configuração no disco. Eu acho isso muito inseguro, especialmente considerando que as credenciais são distribuídas pelos membros da equipe, acabam no backup etc.

Eu preferiria armazenar essas credenciais na forma criptografada (semelhante às chaves ssh, por exemplo). Existe alguma maneira automatizada de fazer isso? Ou preciso hackear algum script bash que usa, por exemplo, openssl para criptografar dados?

Há muita informação na web sobre como proteger credenciais em uma instância do EC2. Há até essa funcionalidade de funções do Amazon IAM , mas também se aplica apenas ao EC2.

arnuschky
fonte
1
Esta é uma ótima pergunta e estou muito interessado nas respostas.
ceejayoz

Respostas:

4

Vale a pena investigar https://github.com/realestate-com-au/credulous . Na descrição do projeto:

credulous é uma ferramenta de linha de comando que gerencia credenciais da AWS (IAM) com segurança . O objetivo é criptografar as credenciais usando a Chave SSH pública de um usuário, para que apenas o usuário que possui a chave SSH privada correspondente possa vê-las e usá-las. Além disso, a ferramenta também permitirá que o usuário gire facilmente suas credenciais atuais sem interromper o fluxo de trabalho atual do usuário.

Há um artigo introdutório do blog em http://techblog.realestate.com.au/protecting-your-aws-keys-with-credulous/ .

mvermaes
fonte
Impressionante, este é exatamente o que eu estava procurando (e que eu não conseguiram encontrar no meu próprio ...)
arnuschky
Veja também github.com/99designs/aws-vault
Yves M.
4

Ótima pergunta - e, dependendo da pessoa que responder, você provavelmente terá algumas rotas a seguir. Vou dar um exemplo do que usamos:

  1. Crie funções do IAM com base na política de personalização do usuário (desenvolvedor, infraestrutura, segurança, auditoria etc.) para permitir ou negar ações específicas com base no acesso do usuário.

Exemplo: permita todas as ações ec2 para o administrador. Ou permita apenas o acesso com base em uma tag ou sub-rede para um desenvolvedor, etc.

  1. Inicie instâncias do ec2 Linux usando funções específicas do IAM. Inicie uma instância para cada função ou usuário específico (ajuste o tamanho / tipo da instância de acordo com a necessidade, orçamento, etc.)

  2. Configure o grupo de segurança para cada instância para permitir apenas sub-redes específicas ou IPs individuais, para que você possa bloquear a entrada de tráfego no SSH.

  3. Defina um usuário / senha personalizados para SSH ou ingresse no domínio.

  4. Faça com que cada usuário efetue logon ou SSH na instância do Linux atribuído à sua função ou acesso ao usuário.

  5. As chaves e o acesso da API agora são herdados da própria função do IAM da instância, tornando irrelevante a necessidade de armazenar as chaves do usuário. Apenas certifique-se de bloquear o grupo de segurança, conceda apenas acesso a usuários específicos na caixa Linux. O usuário deve poder escrever scripts usando a API da AWS / usar a funcionalidade de ferramentas da API normalmente.

Estamos usando esse método há cerca de um ano - com ajustes de segurança adicionais, como tempo de acesso concedido, adquiridos no AWS HSM e ele funciona muito bem.

Espero que isso ajude você ou alguém por aí.

Scott Moore
fonte
Boa ideia, obrigado! Não pensei nisso. Nenhuma opção para nós no momento devido aos custos envolvidos, mas vou manter isso em mente.
Arnuschky 20/09/14