Meine EDBs sind getrennt durch:
Wir laden alle Schlüssel mit einem speziellen Suffix auf jede neue EC2-Instanz hoch, während wir sie booten, und entfernen dann alle Schlüssel, die von keinem der Rezepte in der run_list verwendet wurden, am Ende der ersten Ausführung von chef-client (was sein wird) gleich zu Beginn der Instanz.)
Alle Dateien werden als Eigentümer und Gruppe "root" hochgeladen und haben nur Leseberechtigungen.
Jedes Rezept, das eine EDB verwendet, generiert den EDB-Namen und den Schlüsseldateinamen zur Laufzeit des Rezepts, indem es 'edb_' + die Knotenumgebung + den rezept- / artikelspezifischen Namen + '.key' verkettet und dann den Schlüssel unter diesem Namen sucht . (Wenn es nicht existiert, wird standardmäßig eine Ausnahme ausgelöst.)
Für unseren Couchdb-Server, der eine Rolle namens "Couch" ausführt, um die Anmeldeinformationen abzurufen, die wir für die Administratoren in der Entwicklungsumgebung verwenden, sucht das Rezept nach einem Schlüssel mit dem Namen "edb_dev_couch.key".
Anschließend wird in einer Datentasche mit dem Namen "edb_dev" nach einem Element mit dem Namen "couch_credentials" gesucht.
Für die Verwaltung von Schlüsseln verwende ich derzeit den einfachen Ansatz:
- Laden Sie alle EDB-Schlüssel über das Bootstrap-Skript hoch und hängen Sie '_x' an die Schlüsselnamen an
- Lassen Sie jedes Rezept, das eine EDB verwendet, im Schlüsselverzeichnis nach dem Schlüssel suchen, den es benötigt.
- Wenn der Schlüssel mit dem Suffix '_x' vorhanden ist, benennen Sie den Schlüssel um, um das Suffix '_x' zu entfernen.
- Fügen Sie am Ende jeder run_list ein Rezept hinzu, das alle Schlüssel mit dem Suffix '_x' löscht
Dies begrenzt hoffentlich die Zeit, in der die Schlüssel außerhalb des Bereichs eines einzelnen Knotens anfällig sind, bis der Computer gebootet wurde und der erste Lauf von chef_client ausgeführt wurde.
Dies ist unsere erste Testrunde zum Sichern der Schlüssel, die jedoch bisher unseren aktuellen Anforderungen entspricht, da verhindert wird, dass ein verwurzelter Entwicklungsserver sofort auf andere Serveranmeldeinformationen zugreifen kann, die in einer EDB gespeichert sind.
Um ein Rezept am Ende jeder Laufliste zu haben, verwende ich einen Messer-Exec-Job, der sicherstellt, dass dieses Rezept für delete_keys genau das letzte Rezept auf jedem Knoten ist.