Wie speichere ich Anmeldeinformationen, die von einer Anwendung benötigt werden?


13

Jeder sagt, dass das Speichern von Anmeldeinformationen in der Versionskontrolle (git) eine schlechte Sache ist. Es muss also andere Möglichkeiten geben, Anmeldeinformationen zu speichern, die viel besser sind.

Eine Anwendung muss von irgendwo Anmeldeinformationen erhalten, um die Dienste nutzen zu können, von denen sie abhängt. Diese Anmeldeinformationen werden normalerweise in Konfigurationsdateien gespeichert. Die manuelle Eingabe jedes Servers zum Erstellen dieser Datei kommt nicht in Frage, da Server ohne menschliches Eingreifen ein- und ausgehen.

Wie verwalte ich die Anmeldeinformationen einer Anwendung?


4
Auch dies ist wahrscheinlich zu weit gefasst für eine einzelne Antwort, die nicht die Größe eines Buches hat.
Coderanger

1
@coderanger Wenn Sie Ihre Präsentation ansehen, ist Ihre Kategorisierung der verschiedenen Arten von Geheimnissen großartig. Und ich kann sehen, wie Sie denken, dass es ein Buch ist ... aber die obige Frage verlangt keine Klassifizierung, sondern nur eine Lösung für ein bestimmtes Problem.
Evgeny

2
Wenn Sie eine bestimmte Situation haben, bearbeiten Sie die Frage, um weitere Details wie die Art des verwendeten Geheimnisses (Datenbankkennwort, TLS-Schlüssel usw.) anzugeben.
Coderanger

1
Das ist zu weit gefasst. Hierfür stehen mindestens 14 Tools zur Verfügung, einschließlich benutzerdefinierter Skripte oder Vorlagen: gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd Zusätzliche Details sind erforderlich (z. B. ist eine CLI erforderlich, für Cloud-native Lösungen oder für große monolithische Anwendungen usw.)
Alexandre

1
@Alexandre Hah, ich habe das geöffnet und dachte "yay a good compilation list" und sehe mich dann unten zitiert :)
coderanger

Antworten:


5

Die ordnungsgemäße Verwaltung der Geheimnisse einer Anwendung war schon immer eine Herausforderung. Mit der Einführung der Cloud kamen neue Herausforderungen. Es gibt eine großartige OWASP-Präsentation über die Realität und die Herausforderungen beim Speichern von Geheimnissen in der Cloud.

Sie werden überrascht sein zu hören, dass das Speichern von Geheimnissen im Quellcode eine der vorgestellten Lösungen (oder "Architekturen") ist. Das liegt daran, dass es derzeit keine perfekte Architektur oder Möglichkeit dafür gibt. Am Ende könnten Ihre Geheimnisse verschlüsselt sein ... aber was schützt den Verschlüsselungsschlüssel? "Schildkröten ganz nach unten", sagten sie.

Jede Art von Geheimmanagement hat ihre Stärken und Schwächen, und die Präsentation behandelt dies bereits. Stattdessen werde ich versuchen, einige der Funktionen zu untersuchen, nach denen Sie möglicherweise in einer geheimen (Anmeldeinformations-) Verwaltungslösung suchen:

  • Zugriffskontrolle: Können Sie Administratoren Schreib- und Lesezugriff auf Anwendungen gewähren? Können Sie einschränken, welche Anwendungen lesen können (Anwendung A hat nur Zugriff auf diese Geheimnisse)?
  • Audit-Protokolle: Erforderlich für viele Konformitätsberichte und eine gute Möglichkeit, um festzustellen, ob etwas schief läuft
  • Sichere Speicherung der Geheimnisse: Wie speichert die Lösung die Geheimnisse? Verschlüsselte Datenbank? Verschlüsselter FS? Wer / was hält den Verschlüsselungsschlüssel, falls vorhanden? Wie wird dieser Schlüssel verwendet - einmal beim Start und dann sicher verworfen?
  • Rotation oder Erneuerung von Schlüsseln / Passwörtern: Wenn ein Geheimnis gefährdet ist, können Sie es widerrufen und ein aktualisiertes Geheimnis an die Anwendungen senden? Können / sollten die Anwendungen den geheimen Verwaltungsdienst bündeln?
  • Kompatibilität: Einige dieser Lösungen bieten eine enge Integration mit bestimmten Sprachen oder Frameworks. Einige bieten REST-API an. Interessieren Sie sich dafür?

Wenn Sie sich diese Elemente ansehen, wie wichtig sie für Sie sind und wie sie von der Lösung implementiert werden, können Sie einen der geheimen Verwaltungsdienste auswählen .


3

In einer rein EC2-basierten Umgebung besteht die einfachste Lösung darin, AWS IAM-Rollen und S3-Bucket-Richtlinien zu verwenden. Einige Formulierungen dieses Musters enthalten auch KMS für die Verschlüsselung und DynamoDB anstelle von S3 für die Speicherung, aber ich habe auch keinen äußerst zwingenden Grund für die Verwendung gefunden. Schauen Sie sich https://github.com/poise/citadel an . Es richtet sich speziell an Chef-Benutzer, aber das zugrunde liegende Muster funktioniert für alles. Möglicherweise müssen Sie nur Ihren eigenen Helfer erstellen, um den eigentlichen Download von S3 durchzuführen.


1
Für die Zukunft beantwortet dies eine frühere und spezifischere Version der Frage.
Coderanger

2
AWS bietet jetzt einen dedizierten Service für die Speicherung von Schlüsselwerten, einschließlich der Verschlüsselung über KMS: aws.amazon.com/ec2/systems-manager/parameter-store .
Bnzmnzhnz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.