2016-05-21 10 views
0

Motivation: der Knoten wird versuchen, einen Schlüssel aus dem Datenbeutel zu holen, wenn der Schlüssel nicht existiert, wird es einen erzeugen. Dies ist praktisch, wenn Sie Ihren Cluster skalieren und ein Kennwort dafür teilen müssen.Erstellen/Bearbeiten verschlüsselter Datenbeutel Artikel aus einem Koch Rezept

Beachten Sie, dass keine Node-Erstellung parallel erfolgt, so dass die Race-Bedingung vermieden wird.

gibt es einen Teil in Koch-Dokumentation, die von einem Rezept create and edit Daten Beutel Artikel bezieht sich, obwohl es nichts gibt, das eine neue betrifft verschlüsselt Daten Beutel Artikel zu schaffen.

kann jemand bitte das Licht auf, wie es gemacht werden kann?

Antwort

1

Entschuldigung im Voraus für die folgende Annahme. Kannst du vielleicht erklären, was du zu tun versuchst? Vielleicht gibt es einen besseren Weg, es zu erreichen. Verschlüsselte Datensäcke sind weit entfernt von einer vollständigen Sicherheitslösung. Ihre Schwäche liegt in der fehlenden Schlüsselverwaltung.

Also die Antwort ist, dass der Ruby-Quellcode vollständig durch seine Edelsteine ​​dokumentiert ist. Verschlüsselte Daten Beutel Artikel werden hier beschrieben:

Aber ......

Von der documentation link Sie gab:

Erstellen und Bearbeiten der Inhalte Ein Datenbeutel oder ein Datenbeutel Artikel aus einem Rezept wird nicht empfohlen. Die empfohlene Methode zur Aktualisierung eines Datenbeutels oder eines Datenbeutels ist die Verwendung des Messers und des Messerdatenbeutels Unterbefehl.

Wenn diese Aktion muss von einem Rezept erfolgen, beachten Sie bitte die folgende:

  • Wenn zwei Operationen gleichzeitig versuchen, den Inhalt eines Daten Tasche zu aktualisieren, die zuletzt geschrieben Versuch der Betrieb sein wird, Aktualisieren Sie den Inhalt des Datenbeutels . Diese Situation kann zu Datenverlusten führen. Daher sollten Organisationen sicherstellen, dass nur ein Chef-Client Aktualisierungen für einen Datenbeutel gleichzeitig durchführt.
  • Das Ändern von Datenbeuteln vom Knoten bei Verwendung des Open-Source-Chef-Servers erfordert, dass dem API-Client des Knotens Administratorrechte gewährt werden. In den meisten Fällen ist dies nicht ratsam.

Updates zum Chef-Server sind nicht Transaktions-, so ist es eine wirklich schlechte Idee etwas von einem Koch-Client zu aktualisieren, wo möglicherweise mehr als ein Knoten die gleiche Aktion durchführen könnte.

Die zweite Warnung bezieht sich auf Privilegien ... Auch hier sollten Sie Ihre Küchenchefs mit der geringsten Menge an Superkräften bedienen. Reservieren Sie diese für den Chefadministrator oder für Skripts, die auf einer Chef-Workstation ausgeführt werden.

+0

i vertraut bin auch irgendwie kann es mir dienen stark in meinem Fall. Ich habe meinen Beitrag aufgrund deines Kommentars aktualisiert. Vielen Dank, – MrRoth

0

Try this:

secret = Chef::EncryptedDataBagItem.load_secret(Chef::Config[:encrypted_data_bag_secret]) 
data = { "id" => "mysecret", "secret" => "stuff" } 
encrypted_data_hash = Chef::EncryptedDataBagItem.encrypt_data_bag_item(data, secret) 

databag_item = Chef::DataBagItem.new 
databag_item.data_bag("secrets") 
databag_item.raw_data = encrypted_data_hash 
databag_item.save 

Siehe die Empfehlung Chef Decryption of Data Bags and Retrieval of Key