需求:
有些敏感的信息不易暴露,所以需要加密存储
机密的文件,在执行的时候加解密,如何实现
文档简介:
有两种更安全的方式来存储这类数据:
1.ansible的命令行工具ansible-vault可以加密和解密任何ansible使用的文件。
2.使用第三方的密钥管理服务来存储数据。
ansible-vault可以创建,编辑,加密,解密和查看文件。ansible vault可以加密任何ansible使用的文件,包含inventory变量,playbook中调用的变量文件,通过参数传递给playbook的变量文件,ansible-roles定义的变量文件。
ansible vault使用的是外部的Python工具实现的加密。文件使用AES256加密(对称加密算法),并且你需要提供一个密码作为加密密钥。
以下是官方文档中提到,目前支持的唯一加密算法AES256
功能描述:
以下两种方法是需要密码文件的形式进行自动化执行的过程
相比密码交互式输入的方式,带来更多的便利,因此密码文件(秘钥)需要妥善保管,做好权限管理
playbook整体进行加解密
加解密密码文件
[root@ansible fang]# cat pwdfile
aaaa
对playbook加密命令
[root@ansible fang]# ansible-vault encrypt --vault-id pwdfile test1.yml
Encryption successful
[root@ansible fang]# cat test1.yml
$ANSIBLE_VAULT;1.1;AES256
37663739346130326334396531333437323637393132383334313837366633336266343237313166
3965343434326664396163333562343133653736616331640a623337376439306539393031626532
31333263376639383831326561623035303063336438336431366338613566363334323431373764
3564623739323063360a326531366535303763373135316230393737313438313037626165653665
63323864633730613232396633346237313933393838343233613166623233303063656265396233
62613736353034623566393739333834623934396461643139353361356637653464613063613962
32633461303366363338646536623532626266646637616164303233343161663435653336313537
66353438643964393136353136353464663735323662633432633338613734376162353131623031
38623430376366383237333462396266663838666635663735663864646263616232633662346133
63363966393639376565623933656635636138323438346637326336353031616139366434313036
33353134313238623533633935386537613730656664366364333033663538333965373034346264
62636335336134663935316233663732343933643263646666366262626561343566343462326366
36633466376363323166663933343966386261373062613833306335376433313965623664633261
34613736343539616266643836336131643865636434373333316436303865363830323635333639
34636165643862316533343131633535643662386265646432646266386535393962383230376134
61393832343334346363
对playbook解密命令
[root@ansible fang]# ansible-vault decrypt --vault-id pwdfile test1.yml
Decryption successful
[root@ansible fang]# cat test1.yml
---
- hosts: 192.168.10.101
remote_user: root
gather_facts: no
vars_files:
- pwd.yml
tasks:
- name: display
debug: msg={{item.name }} #| password_hash('sha512')}}
with_items:
- "{{ new}}"
[root@ansible fang]#
对playbook个别字段加解密
对密码加密:
Pwdfile密码文件的内容是aaaa
ansible-vault encrypt_string --vault-id pwdfile 123456
!vault |
$ANSIBLE_VAULT;1.1;AES256
33613964386634623533626636……………………
Playbook中的内容:
执行结果:
对ssh秘钥文件进行加解密:
以下是对秘钥文件进行加密的过程
配合执行以下Playbook进行验证加密后的执行情况
加密:
尝试执行playbook:
提示秘钥文件已经被加密,所以无法执行,需要解密
解密
尝试执行playbook:
执行成功, 并在受控端产生了常见的文件夹
总结:
Ansible的加解密,如果做到自动化执行,必须以密码文件的形势进行加解密操作
所以密码文件必须做好权限管理和严格的保存
加密的文件可以有多个, 目的是使敏感信息不泄露,比如ssh的秘钥管理
参考网址:https://blog.51cto.com/stuart/2299307?source=dra
来源:CSDN
作者:朝鲁梦_FQM
链接:https://blog.csdn.net/qq_16119699/article/details/103456024