首页 文章

以安全方式粘贴敏感数据

提问于
浏览
1

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

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

我有两个想法:

  • 带模板或

  • 与替换模块 .

有没有最佳实践方法来完成这项任务?

---
- 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 回答

  • 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
    

    希望这会帮助你 .

相关问题