Criptografia de dados do usuário do AWS EC2

Aug 18 2020

Temos o caso de uso de entrada que inclui a senha do usuário e a passamos para a instância do EC2. De com na instância Ec2, atingimos o URL -http://169.254.169.254/latest/user-data/e obtenha os dados do usuário e defina as senhas apropriadas.

O problema é que os dados do usuário são visíveis pela ferramenta AWS CLI:

aws ec2 describe-instance-attribute --instance-id --attribute userData --output text --query "UserData.Value" | base64 --decode

Isso impõe um enorme risco de segurança.

Qual é a melhor maneira de enviar dados confidenciais/secretos?

Tentei criar um par de chaves, que cria a chave privada na instância local e a chave pública no EC2. Qual seria a maneira correta de criptografar/descriptografar usando o PowerShell e buscá-lo de volta no EC2?

Respostas

1 ChrisWilliams Aug 18 2020 at 00:39

A abordagem sugerida seria armazenar todos os segredos em uma fonte externa.

A AWS possui um serviço para armazenamento de segredos, o Secrets Manager . Ao usar esse serviço, você criaria um segredo contendo os segredos que sua instância precisará acessar em seus dados de usuário. Em seguida, dê à sua instância uma função do IAM com privilégios para obter o valor do segredo por meio da AWS CLI .

Como alternativa, você também pode usar o serviço AWS SSM Parameter Store , armazenando os segredos como um tipo SecureString . Isso funcionaria de maneira semelhante ao gerenciador de segredos, com você recuperando o segredo por meio da AWS CLI e, em seguida, usando-o em seu script.

Também existem soluções de terceiros, como o Hashicorp Vault , que fornecem funcionalidade semelhante se você não quiser armazenar seus segredos em uma solução da AWS.