2017-03-01 67 views
2

我想注入一个带有盐的gpg密钥。密钥本身是在一个安全的支柱,而是提供了关键的附庸新安装的GPG设置,我不得不把钥匙插进一个文件,所以我有一些像使用一个安全的tmpfile与saltstack

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 

正如我所说的在我的评论中,我宁愿不把秘密写在磁盘上,但如果这是不可避免的,是否有一种方法可以使用安全的tmp文件和随机路径,这是不容易猜测的?

回答

1

有一个module that allows gpg imports from text你可能会使用module state

未经测试的草图称之为:

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

恐怕unless不在这里工作了(至少它在文档中未提及) - 但你可以使用另外的cmd.runwatch_in这可能会成为这个状态的一个条件。