2017-03-01 1 views
2

Ich möchte einen GPG geheimen Schlüssel mit Salz injizieren. Der Schlüssel selbst ist in einer sicheren Säule, aber der Schlüssel für die neu installierten GPG-Setup auf dem Günstling zu schaffen, ich habe den Schlüssel in einer Datei zu setzen, so habe ich so etwas wieVerwenden Sie eine sichere tmpfile mit Salzstapel

import_gpg_key: 
    file.managed: 
    - name: /tmp/secret.key 
    - contents_pillar: gpg:secret_key 
    - user: me 
    - group: me 
    - mode: 0600 
    cmd.run: 
    - name: gpg --batch --import /tmp/secret.key 
    - runas: me 
    - unless: gpg --list-secret-keys {{ pillar['gpg']['default_key_fingerprint'] }} 

## 
# FIXME Is there no way to avoid 
# writing the secret to disk, or 
# at least use a secure tmpfile? 
/tmp/secret.key: 
    file.absent 

Wie gesagt in meinem Kommentar würde ich das Geheimnis lieber nicht auf Festplatte schreiben, aber wenn das unvermeidlich ist, gibt es eine Möglichkeit, eine sichere tmpfile mit einem zufälligen Pfad zu verwenden, der nicht leicht zu erraten ist?

Antwort

1

Es gibt eine module that allows gpg imports from text man es nennen könnte die module state

Ungeprüfte Skizze mit:

import_gpg_key: 
    module.run: 
    - name: gpg.import_key 
    - user: me 
    - kwargs: 
     text: {{ pillar['gpg']['secret_key'] }} 
    - unless: gpg --list-secret-keys {{ pillar['gpg']['default_key_fingerprint'] }} 

ich Angst habe, dass unless hier nicht funktioniert (zumindest nicht in der Dokumentation erwähnt wird) - aber Sie könnten eine andere cmd.run zusammen mit watch_in verwenden, die als Bedingung für diesen Zustand funktionieren könnte.