欢迎光临
我们一直在努力

【Ansible】(七)机密管理

做自动化运维时,密码、API 密钥这类敏感数据,直接写在 Playbook 或变量文件里非常危险,很容易被泄露。Ansible Vault 就是用来解决这个问题的 —— 它能把敏感文件用 AES-256 加密,既可以被 Ansible 正常读取,又不会明文暴露,是生产环境的标配操作。

目录

一、Ansible Vault 基础用法(命令速查)

1. 创建加密文件

2. 查看加密文件内容

3. 编辑已加密文件

4. 加密现有文件

5. 解密文件(慎用)

6. 更改加密密码

二、Playbook 如何使用加密文件

1. 交互式输入密码

2. 使用密码文件

三、生产环境推荐用法

1. 变量文件与机密文件分离

2. 多 Vault 密码管理

问答题

Q1:Ansible Vault 用什么算法加密?

Q2:运行含 Vault 加密文件的 Playbook 报错,提示 “no vault secrets found” 怎么办?

Q3:ansible-vault edit和ansible-vault view有什么区别?

Q4:如何避免每次运行 Playbook 都要手动输入 Vault 密码?

Q5:推荐如何管理敏感变量?


一、Ansible Vault 基础用法(命令速查)

1. 创建加密文件

直接创建并编辑一个新的加密文件:

ansible-vault create secret.yml

执行后会提示设置 Vault 密码,输入两次后,会自动用默认编辑器打开文件,写入内容保存后就自动加密了。

也可以用密码文件避免交互式输入:

ansible-vault create –vault-password-file=vault-pass secret.yml

2. 查看加密文件内容

不解密直接查看文件内容:

ansible-vault view secret.yml

3. 编辑已加密文件

解密并临时打开文件编辑,保存后自动重新加密:

ansible-vault edit secret.yml

4. 加密现有文件

给已有的明文文件加密:

ansible-vault encrypt app-secret.yml

5. 解密文件(慎用)

把加密文件永久解密成明文:

ansible-vault decrypt secret.yml –output=secret-decrypted.yml

6. 更改加密密码

给已加密文件更换 Vault 密码:

ansible-vault rekey secret.yml

二、Playbook 如何使用加密文件

运行引用了 Vault 加密文件的 Playbook,必须提供正确的 Vault 密码,否则会报错。

1. 交互式输入密码

ansible-navigator run -m stdout \\
–playbook-artifact-enable false \\
site.yml –vault-id @prompt

注意:必须禁用playbook-artifact,否则交互式输入会卡住。也可以在ansible-navigator.yml中全局配置:

ansible-navigator:
playbook-artifact:
enable: false

2. 使用密码文件

提前把 Vault 密码写到文件中(权限设为0600),执行时直接引用:

ansible-navigator run -m stdout site.yml \\
–vault-password-file=vault-pass

三、生产环境推荐用法

1. 变量文件与机密文件分离

把普通变量和敏感变量分开管理,是最佳实践:

project/
├── group_vars/
│ └── webservers/
│ ├── vars # 普通变量(明文)
│ └── vault # 敏感变量(用ansible-vault加密)
└── playbook.yml

普通变量和敏感变量放在不同文件中,只有敏感文件被加密,既安全又方便维护。

2. 多 Vault 密码管理

如果不同文件使用不同的 Vault 密码,可以用–vault-id指定多个密码:

ansible-navigator run -m stdout site.yml \\
–vault-id one@prompt \\
–vault-id two@prompt

Ansible 会根据文件的 Vault ID 匹配正确的密码,避免逐一尝试。

问答题

Q1:Ansible Vault 用什么算法加密?

A:默认使用 AES-256 对称加密,密钥就是你设置的 Vault 密码,加密强度足够保护生产环境的敏感数据。

Q2:运行含 Vault 加密文件的 Playbook 报错,提示 “no vault secrets found” 怎么办?

A:这是因为运行时没有提供正确的 Vault 密码。可以用–vault-id @prompt交互式输入,或者用–vault-password-file指定密码文件。

Q3:ansible-vault edit和ansible-vault view有什么区别?

A:view只是不解密查看内容,不会修改文件;edit会临时解密文件,编辑保存后会自动重新加密,所以修改内容必须用edit。

Q4:如何避免每次运行 Playbook 都要手动输入 Vault 密码?

A:可以把密码写到文件中,设置权限为0600,然后通过–vault-password-file选项引用,也可以配置ANSIBLE_VAULT_PASSWORD_FILE环境变量。

Q5:推荐如何管理敏感变量?

A:建议把敏感变量和普通变量分开存,比如在group_vars或host_vars下创建单独的vault文件,用 Ansible Vault 加密,普通变量文件保持明文,这样既安全又方便维护。

赞(0)
未经允许不得转载:171主机测评 » 【Ansible】(七)机密管理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址