Sind die Umgebungsvariablen von Elastic Beanstalk ein geeigneter Ort, um geheime Werte zu speichern?

15

Ich habe meine Django-Anwendung für Elastic Beanstalk bereitgestellt, um mithilfe der Konfigurationsoberfläche für Umgebungsvariablen meine API-Schlüssel zu speichern, anstatt sie in meiner Quelle zu speichern (siehe /programming//a/17878600 ).

Danach stellte ich fest, dass die von Beanstalk aufgerufenen Umgebungsvariablen keine Shell-Umgebungsvariablen sind (wie hier erwähnt: /programming//a/24564832/378638 ) und auf der Instanz in einer Konfigurationsdatei gespeichert sind (wie hier beschrieben /programming//a/24566283/378638 ).

Dies scheint mir ein Sicherheitsproblem zu sein. Missachtet dies nicht den Zweck, die geheimen Schlüssel von der Quelle fernzuhalten? Ich verstehe, dass sie nicht mehr im Repo sind, aber auf der Instanz immer noch verfügbar sind.

Verstehe ich das Risiko falsch? Ich bin Sysadmin durch Vererbung, bitte entschuldigen Sie meine Unwissenheit hier. Sollte ich einfach die Beanstalk-Variablen als Shell-Umgebungsvariablen über die Konfigurationsdatei laden und weitermachen, da die Datei nur über root zugänglich ist, oder ist mein Anliegen berechtigt? Vielen Dank.

M. Keller
quelle

Antworten:

12

Der Punkt , der Geheimnisse aus Quellcode zu halten ist , so dass sie gehen nicht in der Quellcodekontrolle . Dies ist besonders nützlich in Open Source-Projekten.

Bei der Bereitstellung spielt es keine Rolle, ob sich das Geheimnis in einer Datei oder einer Umgebungsvariable befindet. Wichtig ist, dass nur der Betriebssystembenutzer, unter dem Ihr Programm ausgeführt wird, es lesen kann. Dies ist die Standardeinstellung für envvars, was praktisch ist.

Root kann immer alles lesen. So kann Amazon Ihre geheimen Werte kennen, wenn sie wollen, weil sie root sind.

Sie unterstützen jedoch teure Hardware-Sicherheitsmodule (HSM), die Ihre Schlüssel unleserlich machen würden. Natürlich könnte sie noch verwendet die HSM Ihre Sachen zu entschlüsseln, nur nie den eigentlichen Schlüssel bekommen.

Entweder müssen Sie Amazon vertrauen, sich selbst hosten oder sich kolokalisieren.

Neil McGuigan
quelle