AWS EC2-Benutzerdatenverschlüsselung
Wir haben einen Anwendungsfall, bei dem Eingaben, die das Passwort des Benutzers enthalten, entgegengenommen und an eine EC2-Instanz weitergeleitet werden. Von with in der Ec2-Instanz treffen wir auf die URL -http://169.254.169.254/latest/user-data/und holen Sie sich die Benutzerdaten und setzen Sie entsprechende Passwörter.
Das Problem ist, dass Benutzerdaten vom AWS CLI-Tool sichtbar sind:
aws ec2 describe-instance-attribute --instance-id --attribute userData --output text --query "UserData.Value" | base64 --decode
Dies birgt ein enormes Sicherheitsrisiko.
Was ist der beste Weg, sensible/geheime Daten zu senden?
Ich habe versucht, ein Schlüsselpaar zu erstellen, das den privaten Schlüssel auf der lokalen Instanz und den öffentlichen Schlüssel auf EC2 erstellt. Was wäre der richtige Weg, um mit PowerShell zu verschlüsseln / zu entschlüsseln und es in EC2 wieder abzurufen?
Antworten
Der vorgeschlagene Ansatz wäre, alle Geheimnisse in einer externen Quelle zu speichern.
AWS hat einen Dienst zum Speichern von Geheimnissen, Secrets Manager . Durch die Verwendung dieses Dienstes würden Sie ein Geheimnis erstellen, das die Geheimnisse enthält, auf die Ihre Instanz in ihren Benutzerdaten zugreifen muss. Weisen Sie Ihrer Instance dann über die AWS CLI eine IAM-Rolle mit Berechtigungen zum Abrufen des geheimen Werts zu .
Alternativ können Sie auch den AWS SSM Parameter Store -Service nutzen und die Geheimnisse als SecureString- Typ speichern. Dies würde ähnlich wie Secrets Manager funktionieren, wobei Sie das Geheimnis über die AWS CLI abrufen und es dann in Ihrem Skript verwenden.
Es gibt auch Lösungen von Drittanbietern wie Hashicorp Vault , die ähnliche Funktionen bieten, wenn Sie Ihre Geheimnisse nicht in einer AWS-Lösung speichern möchten.