Criando Rails e servidores mysql seguros e resilientes no EC2

1

Eu estou querendo saber quais práticas devem ser usadas para criar Rails e servidores mysql seguros e resilientes no EC2. Mais especificamente, quando digo "seguro e resiliente", estou tentando equilibrar o fato de que preciso proteger os dados (dados do MySQL e logs do Rails) no armazenamento seguro do EBS em nível de bloco usando o dm-crypt. Para garantir a segurança, não estou disposto a armazenar senhas em texto não criptografado. A questão, é claro, é que, se um servidor for reiniciado, o sistema de arquivos criptografado não poderá automontar, o que significa que eu também não posso iniciar automaticamente o mysqld / nginx / passenger / etc.

Por outro lado, estou procurando uma solução resiliente no sentido de que falhas (como a perda temporária de armazenamento ou a falha de uma instância do EC2) possam ser recuperadas rapidamente através de alguma combinação de intervenção manual e automação.

A minha única opção é criar um script de shell invocado manualmente para montar o volume criptografado do EBS e iniciar os processos apropriados do servidor? Ou existe alguma ferramenta de gerenciamento de chaves mais sofisticada que possa automatizar esse processo de maneira segura?

O que as pessoas fizeram em seus ambientes de servidor de produção para esse tipo de situação?

    
por Chris Hart 05.08.2011 / 03:28

1 resposta

1

Se tudo o que você está fazendo é um requisito de conformidade para proteger os dados em repouso, não há problema em armazenar as chaves de criptografia na AMI - elas são separadas dos volumes criptografados (muito mais do que a maioria dos sistemas, na verdade, onde as chaves estão em uma partição separada dos mesmos discos que contêm a partição criptografada). Não é seguro contra alguém entrar na AMI (em execução ou não), mas se estiver em execução, eles já têm os dados do disco e, se não estiverem em execução, a AWS tem perguntas a responder, e pelo menos os dados e chaves não são t sentado à direita ao lado um do outro.

Se você tivesse uma plataforma de hardware real, você poderia usar um módulo de hardware de armazenamento de chaves seguro para armazenar as chaves de criptografia, mas, neste caso, você está provavelmente limitado a métodos manuais. Eu posso imaginar algum tipo de projeto de Rube Goldberg envolvendo instâncias de inicialização fazendo uma conexão a um sistema remoto que possuísse as chaves, dizendo "Estou pronto para começar, por favor monte meus volumes", mas a fragilidade e a fealdade geral do solução faz minha pele rastejar.

    
por 05.08.2011 / 04:14