Criptografa em jenkins ou S3 e descriptografa na instância EC2

1

Eu quero automatizar a implantação de novo código no meu aplicativo usando o AWS CodeDeploy. Estou usando o AWS para executar meu aplicativo. O que eu quero fazer é o seguinte:

  1. Crie o aplicativo em jenkins (também é executado na AWS)
  2. Envie o aplicativo compilado no S3, juntamente com algumas variáveis de ambiente que devem ser definidas automaticamente por ganchos do CodeDeploy (AfterInstall)
  3. O CodeDeploy cuidará das outras etapas

O que eu quero saber é, existe uma prática da AWS para criptografar esses env vars (eles estão em um arquivo de texto) enquanto no S3 e descriptografá-los quando dentro da instância? Se não, você tem alguma indicação de como eu poderia conseguir o que eu quero (alguma segurança em relação a estas variáveis de env quando estiver no S3)?

P.S. O motivo para fazer o upload dessas env envs no S3 e definir em cada implementação é porque elas tendem a mudar. Eu não quero assá-los na imagem. Além disso, afastar-se do env vars não é uma opção.

    
por alkis 15.05.2016 / 15:03

1 resposta

2

Ao colocar dados no Amazon S3, há duas maneiras de criptografar os dados:

  1. Criptografia do lado do cliente ou
  2. Criptografia do lado do servidor.

Criptografia do lado do cliente

A Amazon não possui nenhum mecanismo interno de criptografia do lado do cliente. Você terá que rolar isso sozinho: Criptografe os dados no Jenkins usando sua ferramenta favorita e faça o upload. Quando os objetos são baixados do S3, descriptografe os objetos depois que eles forem baixados.

Uma maneira de fazer isso é usar 7z para compactar e criptografar o arquivo usando a criptografia AES256. Outro está usando o OpenSSL.

Criptografia do lado do servidor

A Amazon tem um mecanismo de criptografia integrado no servidor.

Se você estiver usando o AWS CLI para carregar seus arquivos no S3, poderá usar o argumento de linha de comando --server-side-encryption para que seus arquivos sejam criptografados no servidor. Quando os objetos são baixados, eles serão descriptografados automaticamente.

No entanto, esteja ciente de que isso não protege o objeto contra o download por meio da API do S3 de qualquer pessoa, exceto você. Se alguém usar credenciais da AWS válidas e fizer o download do arquivo, ele estará aberto para elas.

O que protege é alguém acessando o objeto por meios não-API, como o acesso direto ao centro de dados.

Notas Finais

Se você deseja que os arquivos sejam ilegíveis para qualquer pessoa, exceto você, você quer criptografia do lado do cliente.

    
por 15.05.2016 / 16:14