As variáveis de ambiente do Elastic Beanstalk são um local apropriado para armazenar valores secretos?

14

Implantei meu aplicativo Django no Elastic Beanstalk com a intenção de usar sua interface de configuração de variáveis de ambiente para armazenar minhas chaves de API em vez de armazená-las na minha origem (conforme descrito aqui link ).

Depois de fazer isso, descobri que o que o Beanstalk chama de variáveis de ambiente não são, na verdade, variáveis de ambiente do shell (como mencionado aqui link ) e são armazenados na instância em um arquivo de configuração (conforme descrito aqui link ).

Isto parece ser um problema de segurança para mim. Isso não derrota o propósito de manter as chaves secretas fora da fonte? Eu entendo que eles não estão mais no repositório, mas eles ainda estão acessíveis na instância.

Estou entendendo mal o risco? Eu sou sysadmin por herança, então, por favor, desculpe minha ignorância aqui. Devo apenas carregar as variáveis do Beanstalk como variáveis de ambiente shell através do arquivo de configuração e seguir em frente, já que o arquivo só é acessível via root ou minha preocupação é válida? Obrigado.

    
por M. Keller 16.07.2015 / 00:48

1 resposta

12

O ponto de manter os segredos fora do código-fonte é para que eles não entrem no controle de origem . Isso é particularmente útil em projetos de código aberto.

Quando implantado, não importa se o segredo está em um arquivo ou envvar. O importante é que apenas o usuário do sistema operacional que seu programa está executando pode lê-lo. Este é o padrão para envios, o que é conveniente.

O Root sempre pode ler tudo. Então, a Amazon pode saber seus valores secretos, se quiserem, porque eles são raiz.

Eles suportam módulos caros de segurança de hardware (HSM), o que tornaria suas chaves ilegíveis. Claro, eles ainda poderiam usar o HSM para descriptografar suas coisas, apenas nunca obter a chave real.

Então, você precisa confiar na Amazon, ou hospedar as coisas por conta própria, ou colocar.

    
por 16.07.2015 / 05:18