ansible 加密,ansible


当我们使用ansible完全自动化地运维服务器的是时候,运行某些任务时,不可避免的会接触到一些密码或其他敏感数据,这些数据可能是管理员密码/SSH私钥或远程主机的认证信息。
大部分情况下,ansible自带的vault功能能满足加密的需求。
ansible vault的工作方式与现实生活中的保险柜的工作方法很像:
1. 把ansible任务中用到的任意文件放入vault保险柜中
2. ansible vault 会使用密码来加密这些文件,与用钥匙把保险柜的门锁起来一样
3. 把密码(钥匙)保存在一个只有我们自己知道或有权限访问的地方,与playbook独立分开存储
4. 在需要运行playbook的时候,拿出密码(钥匙),解密敏感数据(打开保险柜,拿出数据),就能正常执行playbook任务了

1. 文件加密

文件:

wfq@ubuntu:~/playbook$ cat key.yml
---
test
wfq@ubuntu:~/playbook$

加密:

wfq@ubuntu:~/playbook$ ansible-vault encrypt key.yml 
Vault password: 
Confirm Vault password: 
Encryption successful
wfq@ubuntu:~/playbook$ cat key.yml 
$ANSIBLE_VAULT;1.1;AES256
31363436356265643434363066376538626131346534353061356636633739623030336230343261
6361643530666336343336383466323233353932626437620a646337376232363134636536653933
61666638393939633134393031373665323766646166323361363033346432343063333633353231
6338363864333632380a306137383532343337663939336464636630313535303662323732363135
3461
wfq@ubuntu:~/playbook$

2. 解密:

2.1. 手动解密

wfq@ubuntu:~/playbook$ ansible-vault decrypt key.yml 
Vault password: 
Decryption successful
wfq@ubuntu:~/playbook$ cat key.yml 
---
test
wfq@ubuntu:~/playbook$

2.2. 文件解密

除了手动输入密码进行解密以外,ansible还提供了以密码文件的形式来解密的认证方式,着类似SSH的密钥认证。SSH将密钥放于~/.ssh目录下面,ansible vault将密码文件放置于~/.ansible,对于这个文件必须要有严格的权限控制,需设置权限为600.
例如:
需要加密的敏感数据:

wfq@ubuntu:~/playbook$ cat key.yml 
---
test
wfq@ubuntu:~/playbook$

加密的密码保存在~/.ansible/vault_pass,密码为test

wfq@ubuntu:~/playbook$ echo 'test' >  ~/.ansible/vault_pass

加密

wfq@ubuntu:~/playbook$ ansible-vault encrypt key.yml
Vault password: 
Confirm Vault password: 
Encryption successful

查看加密过的文件

wfq@ubuntu:~/playbook$ cat key.yml                  
$ANSIBLE_VAULT;1.1;AES256
39393130653534313334313061653839643764336633333963393565343564633536316664626162
3836396265663466333635393139323239666237373738300a646566383534653863613639336239
30366137363230346339623761623962353565383861373866346532383135333134613166656363
6232623936613830640a633737663038396263333331373265653361313638366434363733393839
3932
wfq@ubuntu:~/playbook$

通过密码文件来解密

ansible-vault decrypt key.yml --vault-password-file ~/.ansible/vault_pass
wfq@ubuntu:~/playbook$ ansible-vault decrypt key.yml --vault-password-file ~/.ansible/vault_pass
Decryption successful
wfq@ubuntu:~/playbook$ cat key.yml 
---
test
wfq@ubuntu:~/playbook$
注:

ansible vault采用AES-256加密算法对文件进行加密,这种加密算法极为安全。使用目前世界上运算速度最快的集群来7*24小时解密一个通过该算法加密的文件,也需要数十亿年的时间才能完成破解。

相关内容

    暂无相关文章