Cifrado de datos de usuario de AWS EC2

Aug 18 2020

Tenemos un caso de uso de tomar una entrada que incluye la contraseña del usuario y pasarla a la instancia EC2. Desde dentro de la instancia Ec2 pulsamos la URL -http://169.254.169.254/latest/user-data/y obtenga los datos de usuario y establezca las contraseñas apropiadas.

El problema es que los datos del usuario son visibles por la herramienta AWS CLI:

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

Esto impone un gran riesgo de seguridad.

¿Cuál es la mejor manera de enviar datos confidenciales/secretos?

Intenté crear un par de claves, que crea la clave privada en la instancia local y la clave pública en EC2. ¿Cuál sería la forma correcta de cifrar/descifrar usando PowerShell y recuperarlo en EC2?

Respuestas

1 ChrisWilliams Aug 18 2020 at 00:39

El enfoque sugerido sería almacenar cualquier secreto en una fuente externa.

AWS dispone de un servicio de almacenamiento de secretos, Secrets Manager . Al usar este servicio, crearía un secreto que contiene los secretos a los que su instancia necesitará acceder en sus datos de usuario. Luego asigne a su instancia un rol de IAM con privilegios para obtener el valor secreto, a través de la CLI de AWS .

Como alternativa, también podría utilizar el servicio de almacenamiento de parámetros de AWS SSM , almacenando los secretos como un tipo SecureString . Esto funcionaría de manera similar al administrador de secretos, ya que recuperaría el secreto a través de la CLI de AWS y luego lo usaría en su secuencia de comandos.

También existen soluciones de terceros, como Hashicorp Vault, que brindan una funcionalidad similar si no desea almacenar sus secretos en una solución de AWS.