Crittografia dei dati utente AWS EC2
Abbiamo il caso d'uso di prendere l'input che include la password dall'utente e passarlo all'istanza EC2. Da con nell'istanza di Ec2 abbiamo colpito l'URL -http://169.254.169.254/latest/user-data/e ottenere i dati utente e impostare le password appropriate.
Il problema è che i dati utente sono visibili dallo strumento AWS CLI:
aws ec2 describe-instance-attribute --instance-id --attribute userData --output text --query "UserData.Value" | base64 --decode
Ciò impone un enorme rischio per la sicurezza.
Qual è il modo migliore per inviare dati sensibili/segreti?
Ho provato a creare una coppia di chiavi, che crea la chiave privata sull'istanza locale e la chiave pubblica su EC2. Quale sarebbe il modo giusto per crittografare/decrittografare utilizzando PowerShell e recuperarlo in EC2?
Risposte
L'approccio suggerito sarebbe quello di archiviare eventuali segreti in una fonte esterna.
AWS dispone di un servizio per l'archiviazione dei segreti, Secrets Manager . Utilizzando questo servizio creerai un segreto contenente i segreti a cui la tua istanza dovrà accedere nei suoi dati utente. Quindi assegna alla tua istanza un ruolo IAM con privilegi per ottenere il valore segreto, tramite l'AWS CLI .
In alternativa puoi anche utilizzare il servizio AWS SSM Parameter Store , archiviando i segreti come tipo SecureString . Questo funzionerebbe in modo simile al gestore dei segreti con il recupero del segreto tramite l'AWS CLI e quindi il suo utilizzo nello script.
Esistono anche soluzioni di terze parti come Hashicorp Vault che forniscono funzionalità simili se non desideri archiviare i tuoi segreti in una soluzione AWS.