管理机密(一)

介绍 Ansible Vault

Ansible 可能需要访问密码或 API 密钥等敏感数据,以配置受管主机。通常,此信息会以纯文本形式存储在清单变量或其他 Ansible 文件中。但若如此,任何有权访问 Ansible 文件的用户或存储这些 Ansible 文件的版本控制系统都能够访问此敏感数据。这显然存在安全风险。

使用 Ansible 随附的 Ansible Vault 可以加密和解密任何由 Ansible 使用的数据文件。若要使用 Ansible Vault,可通过一个名为 ansible‑vault 的命令行工具创建、编辑、加密、解密和查看文件。

Ansible Vault 可以加密任何由 Ansible 使用的数据文件。这可能包括清单变量、playbook 中含有的变量文件、在执行 playbook 时作为参数传递的变量文件,或者 Ansible 角色中定义的变量。

创建加密的文件

要创建新的加密文件,可使用 ansible‑vault create filename 命令。该命令将提示输入新的 vault 密码,然后利用默认编辑器 vi 打开文件。您可以导出EDITOR环境变量,以指定其他默认编辑器。例如,若要将默认编辑器设为 nano,可运行 export EDITOR=nano 命令。

bash 复制代码
ansible-vault create secret.yml
New Vault password: redhat
Confirm New Vault password: redhat

您可以使用 Vault 密码文件来存储 Vault 密码,而不是通过标准输入途径输入 Vault 密码。您需要使用文件权限和其他方式来严密保护该文件。

bash 复制代码
ansible-vault create --vault-password-file=vault-pass secret.yml

在最近版本的 Ansible 中,用于保护文件的密文是 AES256,但利用较早版本加密的文件可能依然使用 128 位 AES。

查看加密的文件

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

bash 复制代码
ansible-vault view secret.yml
bash 复制代码
ansible-vault view secret1.yml
Vault password: secret
my_secret: "yJJvPqhsiusmmPPZdnjndkdnYNDjdj782meUZcw"

编辑现有的加密文件

要编辑现有的加密文件,Ansible Vault 提供了 ansible‑vault edit filename 命令。此命令将文件解密为一个临时文件,并允许您编辑该文件。保存时,它将复制其内容并删除临时文件。

bash 复制代码
ansible-vault edit secret.yml
Vault password: redhat

加密现有的文件

要加密已存在的文件,请使用 ansible‑vault encrypt filename 命令。此命令可取多个欲加密文件的名称作为参数。

bash 复制代码
ansible-vault encrypt secret1.yml secret2.yml
New Vault password: redhat
Confirm New Vault password: redhat
Encryption successful

使用 --output=OUTPUT_FILE 选项,可将加密文件保存为新的名称。您只能通过 --output 选项使用一个输入文件。

解密现有的文件

现有的加密文件可以通过 ansible‑vault decrypt filename 命令永久解密。在解密单个文件时,可使用 --output 选项以其他名称保存解密的文件。

bash 复制代码
ansible-vault decrypt secret1.yml --output=secret1-decrypted.yml
Vault password: redhat
Decryption successful

更改加密文件的密码

可使用 ansible‑vault rekey filename 命令更改加密文件的密码。此命令可同时更新多个数据文件的密钥。它将提示提供原始密码和新密码。

bash 复制代码
ansible-vault rekey secret.yml
Vault password: redhat
New Vault password: RedHat
Confirm New Vault password: RedHat
Rekey successful

使用 Vault 密码文件时,请使用 --new‑vault‑password‑file 选项:

bash 复制代码
ansible-vault rekey \
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE secret.yml
相关推荐
Chen_harmony21 分钟前
七、STL与string类
开发语言·c++
沐晓时光28 分钟前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
xxxiugou1231 小时前
C++命名空间与引用全解析
开发语言·c++
十碗饭吃不饱1 小时前
后端运维:网络联通、进程查询、Java服务启动脚本
java·运维·网络
好用斋1 小时前
拾光坞安装网盘聚合LitePan:把Docker命令翻译成图形界面
运维·docker·容器
yangmu32032 小时前
编程语言发展简史:从机器指令到智能协作
开发语言
贝锐2 小时前
金仓、达梦、TDSQL全适配:向日葵补齐信创数据库层远程运维能力
运维·数据库·信创
AOI小白新手上路5 小时前
深度学习算力购置方案分析:本地 RTX 4090 服务器 vs 云端租赁
服务器·人工智能·深度学习
Pniubi5 小时前
Java为什么要分堆和栈
java·开发语言