2017-03-01 2 views
2

Je souhaite injecter une clé secrète gpg avec du sel. La clé elle-même est dans un pilier sûr, mais de fournir la clé de la configuration du GPG nouvellement installé sur le sbire, je dois mettre la clé dans un fichier, j'ai donc quelque chose commeUtiliser un fichier tmp sécurisé avec salttack

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 

Comme je l'ai dit Dans mon commentaire, je préfère ne pas écrire le secret sur le disque, mais si c'est inévitable, est-il possible d'utiliser un fichier tmp sécurisé avec un chemin aléatoire qui n'est pas facilement devinable?

Répondre

1

Il y a un module that allows gpg imports from text vous pouvez appeler à l'aide du module state

sketch Untested:

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'] }} 

Je crains que unless ne fonctionne pas ici (au moins il ne figure pas dans la documentation) - mais vous pouvez utiliser un autre cmd.run avec watch_in qui pourrait fonctionner comme condition pour cet état.