Ansible 的自动化运维(二)文件加密

发布时间 2023-08-31 14:30:16作者: 往事已成昨天

Ansible 的自动化运维(二)文件加密

1、简介

Ansible 可能需要访问密码或 API 密钥等敏感数据,以便能配置远程服务器,通常,此信息可能以纯文本形式存储在变量清单或其他 Ansible文件中。但若如此,任何有权访问 Ansible 文件的用户或存储这些Ansible 文件的版本控制系统都能够访问此敏感数据。这显然存在安全风险。我们可以使用 Ansible Vault,它由 Ansible 提供,可以加密和解密任何由Ansible 使用的结构化数据文件。若要使用 Ansible Vault,可以通过一个名为 ansible-vault 的命令行工具创建、编辑、加密、解密和查看文件。Ansible Vault 可以加密任何由 Ansible 使用的结构化数据文件。加密的这些文件可能包括清单变量或者密码的信息。

值得注意的事

Ansible Vault 并不实施自有的加密函数,而是使用外部Python 工具集。文件通过利用 AES256 的对称加密加以保护。请注意,这种方式尚未得到第三方正式审核。

2、创建加密文件

  • 要创建新的加密文件,可使用命令 ansible-vault create filename。

  • 该命令将提示输入新的 vault 密码,同时利用默认的编辑器 vi 打开文件

[root@10-60-249-255 yaml]# ansible-vault create wdxx.yml
New Vault password:
Confirm New Vault password:
[root@10-60-249-255 yaml]# cat wdxx.yml
$ANSIBLE_VAULT;1.1;AES256
35386630663832373861326264333833326339623234316362363433303965323733396333613135
3431613737353335386432623532326563333563353136640a656131363437633564616235343062
65303063303232613763333165626230643666373833323734356330313230323133623737313239
3030623234663863320a643138646166616663343636333861353635386233626261666461303536
38623038376332383533633364343830313233366263656261626362313063336564

3、查看加密的文件

Ansible Vault 使用 ansible-vault view filename 命令查看加密的文件,而不必打开它进行编辑。

[root@10-60-249-255 yaml]# ansible-vault view wdxx.yml
Vault password:
- name: huqi
- age: 28

4、编辑现有的加密文件

  • 要编辑现有的加密文件,Ansible Vault 提供了 ansible-vault edit filename 命令。

  • 此命令将文件解密为一个临时文件,并允许用户编辑该文件。保存时,它将复制其内容并删除临时文件

注意:edit 子命令会改写文件,因此仅可在进行更改时使用它。若要查看文件的内容而不进行更改,始终应使用 view 子命令。

[root@10-60-249-255 yaml]# ansible-vault edit wdxx.yml
Vault password:

实例:
[root@10-60-249-255 yml]# cat nginx.yml
- hosts: wd
remote_user: root
tasks:
   - name: tmp
    shell: touch /tmp/a.txt

5、解密现有的文件

  • 已存在的加密文件可以通过 ansible-vault decrypt filename 命令永久解密。

  • 在解密单个文件 时,可使用 --output 选项以其他名称保存解密的文件。

[root@10-60-249-255 yaml]# ansible-vault decrypt wdxx.yml
#下面这个不用演示了
[root@10-60-249-255 yaml]# ansible-vault decrypt wdxx.yml --output=wdxx02.yml

6、更改加密文件的密码

  • 可以使用命令 ansible-vault rekey filename 更改 vault 密码。

  • 此命令可一次性更新多个数据文件的密钥。它将要求提供原始密码和新密码。

  • 在使用 vault 密码文件时,使用 --new-vault-password-file 选项。

[root@10-60-249-255 yaml]# ansible-vault rekey wdxx.yml
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful

7、Playbook 和 Ansible Vault

  • 为了运行可访问通过 Ansible Vault 加密的文件的 playbook,需要向 ansible-playbook 命令提供其加密密码。如果运行命令时没有这么做,它将返回错误。

[root@10-60-249-255 yaml]# ansible-playbook huqi.yml
ERROR! Attempting to decrypt but no vault secrets found
  • 若要以交互方式提供 vault 密码,可使用 --vault-id @prompt选项

[root@10-60-249-255 yaml]# ansible-playbook --vault-id @prompt huqi.yml
Vault password (default):

注意:

Ansible 2.4 版本以前,需要使用 --ask-vault-pass 选项

[root@10-60-249-255 yaml]# ansible-playbook --ask-vault-pass huqi.yml
Vault password:

欢迎大家扫码关注:

图片

本公众号只写原创,不接广告、不接广告、不接广告。下期小伙伴想学习什么技术,可以私信发我吆。

图片

 

运维大爆炸
收录于合集 #自动化
 5
上一篇Ansible 的自动化运维(一)下一篇Ansible 的自动化运维(三)playbook剧本
阅读 582
IT运维大爆炸
 
 
关注后可发消息