Lassen Sie keine Passwörter in Ihrem Code; Verwenden Sie AWS-Geheimnisse-Manager Statt

0
265

AWS-Geheimnisse-Manager macht das arbeiten mit access keys (wie die Datenbank-Anmeldedaten) zu vereinfachen, indem wir Sie aus der Ferne und steuert den Zugriff auf von Ihnen hinter IAM-Berechtigungen. Dies ermöglicht Ihnen, reibungslos drehen Sie Zugriff auf Tasten und fetch die Letzte, Wann immer es nötig ist.

Was Macht Geheimnisse Manager Tun?

Hier ist ein Beispiel. Sagen Sie beim erstellen eines build-Skript für Ihren Servern automatisieren der installation Prozess, in der Regel machen verwenden der Automatischen Skalierung und automatisiertes deployment. Anschließen müssen Sie WordPress auf einem externen MySQL-server.

Die einfachste Lösung wäre das speichern der MySQL Passwort im Klartext als Teil des build-Skripts. Dies ist offensichtlich nicht der Sicherheit der besten Praxis, und nicht skaliert werden weit über eine einzige Instanz betrieben, die von einem einzelnen Mitarbeiter. Außerdem, wenn du die Trennung Ihre dev und prod-Umgebungen, dieses Geheimnis muss aktualisiert werden für jede Umgebung, die ein Streit.

Die bessere Lösung ist-Geheimnisse-Manager. Statt der Speicherung der MySQL-Passwort im Klartext speichern Sie es in Geheimnisse Manager, und wenn Sie benötigen, um es zu verwenden, führen Sie einen API-Aufruf, um Geheimnisse Manager, der gibt das Geheimnis. Dies ermöglicht Ihnen einen sicheren Zugang zu Ihren Geheimnissen, die Verwendung von IAM-Rollen und Berechtigungen, die ein viel besseres system, und eine, die Sie bereits verwenden, wenn Ihr Unternehmen auf der AWS-Plattform.

Auch, weil Geheimnisse Manager fungiert als eine einzige autoritative Daten zu speichern, macht es die rotation der Geheimnisse viel leichter, was ein wichtiger Teil der Laufenden Sicherheit.

Nur um klar zu sein—Geheimnisse-Manager nicht automatisch, dass der Umgang mit wichtigen Geheimnisse trivial. Am Ende des Tages, sind Sie immer noch anfordern von sensiblen Informationen, die gehen, um auf der Festplatte gespeichert oder im Arbeitsspeicher auf dem server. Jeder, der Zugriff auf den server, noch in der Lage sein, um Zugriff auf die geheimen, und Sie müssen, um gute IAM-Berechtigungen Richtlinien zum sperren von access. Aber, ohne Geheimnisse-Manager, Sie wäre nicht in der Lage dies zu kontrollieren den Zugriff auf alle mit der Nutzung von IAM, und hätte potenziell wichtige Schlüssel gespeichert, in anderen Orten, wie leicht zugänglich Git-repos.

Geheimnisse-Manager kann verwendet werden, zum speichern jeder Art von Schlüssel, einschließlich JSON. Jedoch, es ist Häufig verwendet, zum speichern von Datenbank-Anmeldeinformationen, und als solche hat eingebaute integration für RDS, dass automatisch konfigurieren kann, und drehen Sie die Anmeldeinformationen für Sie.

Wie zu Verwenden Geheimnisse Manager

Den Kopf über die Geheimnisse Manager-Konsole, und klicken Sie auf “Speichern Sie Ein Neues Geheimnis.”

Wenn Sie die Einstellung ein Geheimnis zum speichern von Anmeldeinformationen für den RDS, oder einer von AWS anderen DB-services können Sie, dass als Typ geben Sie den Benutzernamen und das Kennwort ein, und wählen Sie die Datenbank, die Sie verwenden möchten, mit diesem Geheimnis.

Wenn Sie die Speicherung alles andere, werden Sie wollen, wählen Sie “Andere Art Von Geheimnis.” Wenn Sie die Speicherung einer Reihe von Schlüssel-Wert-Paare, können Sie diese in hier, aber wenn Sie haben eine komplexere JSON-schema können Sie die ganze Sache als Klartext unter den “Klartext” – Registerkarte.

Klicken Sie auf “Weiter” geben Sie einen Namen ein, und alle tags, die Sie vielleicht hinzufügen möchten, aus organisatorischen Gründen.

Auf dem nächsten Bildschirm haben Sie die Möglichkeit zu konfigurieren, die automatische Drehung. Dies ruft eine Lambda-Funktion Ihrer Wahl jeden Monat oder so, und drehen Sie den Schlüssel für einen neuen Wert. Sie werden wahrscheinlich wollen, um Ihre Lambda-Funktion zum leeren der caches Ihre client-Anwendungen, so dass Sie alle müssen Holen Sie sich das neue Geheimnis.

Klicken Sie auf “Weiter”, und klicken Sie auf “Speichern”, um das Geheimnis.

Zugriff auf das Geheimnis ist ziemlich einfach. Falls Sie die AWS CLI installiert und konfiguriert, mit der ein Benutzer bzw. eine Rolle hat, die Erlaubnis zu Holen, das Geheimnis, können Sie für den Zugriff secretsmanager bekommen-absondern-Wert. Dies gibt JSON-output, so dass Sie wahrscheinlich wollen, um pipe zu jq für die Verarbeitung.

aws secretsmanager bekommen-secret-Wert –secret-id Confidential_Info | jq

Dies gibt einige Metadaten zu Ihrem string als auch der string selbst in die SecretString parameter. Es kodiert in einem einzigen string, Sie können jedoch mit jq s fromjson Richtlinie zur Rückgabe der eigentliche JSON-Wert des Strings.

| jq ‘.SecretString | fromjson’

Wenn Sie das abrufen Geheimnisse sehr oft (zur Laufzeit), werden Sie wollen, stellen Sie die Verwendung von client-side-cache, so dass Sie nicht senden Tausende von API-Anfragen pro Sekunde. AWS bietet ein paar client-seitige Bibliotheken für die Arbeit mit Geheimnissen, die Manager, aber man kann es selbst implementieren in der Sprache Ihrer Wahl.

Wenn Sie wollen, automatisieren die Erstellung von Geheimnisse, die Sie tun können, so mit create-Geheimnis:

aws secretsmanager erstellen-Geheimnis –name <value> –secret-string <Wert>

Konfigurieren von IAM-Zugang

Sie möchten einrichten, benutzerdefinierte IAM-Richtlinien zu erteilen Sie lese-Zugang zu den einzelnen Geheimnissen auf der Grundlage der Amazon Resource Name (ARN). Aus dem IAM Management Console, eine neue Rolle erstellen (oder Bearbeiten Sie Ihre EC2-Instanz bestehenden), und fügen Sie “Lesen” – Zugriff für Geheimnisse Manager.

Nachfolgend finden Sie hinzufügen möchten, einen ARN um den Zugriff einzuschränken. Geben Sie in der Geheim-ID, und klicken Sie auf “Hinzufügen”.

Erstellen Sie die neue Richtlinie, befestigen Sie die Rolle auf Ihrer EC2-Instanz, wenn nötig, und testen, um zu überprüfen, dass Sie Zugriff auf nur die geheimen zugewiesen, die Politik.