以安全方式粘贴敏感数据

时间:2016-05-13 07:24:55

标签: passwords repository ansible ansible-playbook

假设我在存储库中有一些应用程序。敏感数据(如数据库用户名+密码)不会存储在存储库中,而是存储在单独的加密密码数据库中。在源代码中只有这样的占位符:%%mysqlpassword%%

我想创建一个ansible-playbook来检查代码并替换用户凭证。

我有两个想法:

  1. 使用模板或
  2. 使用替换模块。
  3. 是否有最佳实践方法来完成此任务?

    ---
    - hosts: test
    
    vars_prompt:
      - name: "mysqlpassword"
        prompt: "Enter mysql password for app"
        private: yes
    
    tasks:
      - name: copy code from repo
        subversion: repo=https://repo.url.local/app dest=/srv/www/app
    
      - name: Replacement of sensitive data by templating
        template: src=mysqlconnect.php.j2 dest=/srv/www/app/inc/mysqlconnect.php
    
      - name: Replacement of sensitive data by replacement function
        replace: dest=/srv/www/app/inc/mysqlconnect.php regexp='%%mysqlpassword%%' replace='{{ mysqlpassword }}'
    

1 个答案:

答案 0 :(得分:1)

您问题的最佳答案是使用ansible-vault

1-在模板mysqlpassword

中使用{{ mysqlpassword }}作为变量mysqlconnect.php.j2

2-使用您的安全用户名和密码的所有值创建单独的文件,如my_very_secure.yml(您想要的任何名称):

---
mysqlpassword: very-secure-password-value
anothervariable: another-secure-value

之后,您可以使用ansible-vault加密此文件:

ansible-vault encrypt my_very_secure.yml

然后您可以将此文件存储到源控制服务器中,因为它已加密或保留在ansible主服务器上,但是一旦您准备好运行该剧本,只需包含--ask-vault-pass选项,如下所示,安全文件的路径:

ansible-playbook -i yourhostfile yourplaybook.yml -e@/path-to-your-file/my_very_secure.yml --ask-vault-pass

希望这会对你有所帮助。