É seguro armazenar o certificado / chave em uma AMI privada?

1

Existe alguma implicação importante na segurança do empacotamento de uma AMI privada que contenha a chave privada / certificado & variáveis de ambiente?

Para resiliência, estou criando uma imagem do EC2 que deve ser capaz de inicializar e se configurar sem qualquer intervenção. Após o boot, ele tentará:

  • Anexar & montar volumes específicos do EBS
  • Associe um IP elástico específico
  • Começar a emitir backups do (s) volume (s) do EBS para o S3

No entanto, para fazer isso, ele precisará dos arquivos private key / pem e precisará que certas variáveis de ambiente estejam disponíveis na inicialização. Como esta é uma AMI privada, estou pensando se será "seguro" armazenar essas variáveis / arquivos diretamente na imagem, para que eu não precise especificar nenhuma informação de dados do usuário e, portanto, possa iniciar uma nova instância remotamente ( do meu iPhone, se necessário) caso a instância seja encerrada por qualquer motivo.

    
por Phillip B Oldham 22.04.2010 / 11:01

4 respostas

2

Uma AMI privada é segura, não me preocupo com a possibilidade de alguém hackear seus dados do S3. No entanto, um servidor em execução é tão seguro quanto você fez e você deve assumir que é hackable. Portanto, suas chaves, que são realmente a chave para Tudo na sua conta, não devem ficar por aí.

Certifique-se de que os scripts de inicialização excluam as chaves do disco e não as retenham, a menos que haja um bom motivo.

Se o seu servidor usa outros serviços da AWS e precisa das chaves para acessá-los, considere ter várias contas da AWS para vários serviços e consolidar o faturamento para sua conveniência.

Você também pode usar serviços de gerenciamento externos como RightScale, Scalr ou Eucalyptus.

    
por 02.06.2010 / 20:17
2

Eu sei que esta questão está morta há muito tempo, mas surgiu um novo recurso da AWS (meados de 2012) que fornece uma resposta melhor do que era possível anteriormente. Eu achei muito útil e pensei que futuros pesquisadores também poderiam.

Você não precisa mais armazenar chaves em uma instância da AWS para que o código nessa instância possa fazer chamadas da AWS. Agora você pode aproveitar as funções do IAM ( anunciado aqui) para conceder permissões da AWS em vez de armazenar localmente chaves ou certificados privados. As funções são aplicadas às instâncias no lançamento e fornecem acesso seguro baseado em token aos serviços da Amazon. Estes são tokens efêmeros, de rotação automática, armazenados em variáveis de ambiente e não em disco, então acredito que essa seria a maneira mais segura de lidar com os requisitos originais.

Isso não se aplica a chaves SSH gerais que você pode precisar em um ambiente Linux, mas elas não estariam vinculadas a suas contas da AWS e devem ser gerenciadas separadamente. As funções apenas medeiam seu acesso ao Amazon Services.

Uma coisa interessante sobre os Papéis é que você deve atribuí-los no lançamento da instância, mas é possível alterar o que eles são capazes a qualquer momento. Para o exemplo fornecido, você pode conceder à instância a função de mapear um EIP, montar volumes EBS e gravar em um bucket S3 específico e, em seguida, adicionar a capacidade de criar e pesquisar filas SQS mais tarde, se necessário, sem precisar alterar nada a instância.

    
por 02.11.2012 / 20:40
1

As AMIs que são armazenadas diretamente no S3 serão criptografadas pela Amazon e assinadas com suas chaves (consulte "O processo de criação de uma AMI que usa um armazenamento de instância como seu dispositivo raiz faz o seguinte:" em link ).

No entanto, as AMIs armazenadas nos volumes do EBS são baseadas em instantâneos, que não são criptografados: aws.amazon.com/ec2/faqs/#Do_you_offer_encryption_on_Amazon_EBS_volumes_or_snapshots

Em ambos os casos, você deve dar uma olhada crítica nas permissões no bucket S3 que contém sua AMI. Por padrão, o bucket só será acessível pela sua conta, mas você também pode adicionar mais proteção usando as ACLs do S3.

    
por 02.06.2010 / 21:16
0

Não consigo pensar em uma maneira mais segura de fazer isso, já que uma AMI privada é protegida pelos mesmos níveis de segurança da AWS que sua conta do EC2.

Uma alternativa seria armazenar as chaves em um repositório de código-fonte e verificá-las quando você inicializar a instância do EC2; Embora você esteja enviando as chaves pela rede, você pode criptografar o tráfego (por exemplo, com svn: ssh ou https para o Subversion).

    
por 22.04.2010 / 17:18