Ansible(7)——管理机密

发布于:2025-04-07 ⋅ 阅读:(25) ⋅ 点赞:(0)

目录

一、Ansible Vault :

二、ansible-vault 命令行工具:

1、创建加密文件:

2、查看加密文件:

3、编辑现有加密文件:

4、加密现有文件:

5、解密现有文件:

6、更改加密文件的密码:

三、运行加密 playbook : 

1、通过密码文件提供密码:

2、以交互方式提供密码:

四、禁用 Playbook artifact :

1、命令行:

2、修改文件:


一、Ansible Vault :

        Ansible 可能需要访问密码或 API 密钥等敏感数据,以便配置远程服务器。通常,这些信息以纯文本形式存储在变量清单或其它 Ansible 文件中。若是任何有权访问 Ansible 文件的用户,以及存储这些 Ansible 文件的版本控制系统都能够访问这些敏感数据,将存在很大的安全风险,因此 Ansible 提供了 Ansible Vault 加密敏感变量。

        使用随 Ansible 提供的 Ansible Vault ,可以加密和解密任何由 Ansible 使用的结构化数据文件(例如,清单变量、 playbook 中含有的变量文件、在执行 playbook 时作为参数传递的变量文件、以及 Ansible 角色中定义的变量等)。

二、ansible-vault 命令行工具:

        若要使用 Ansible Vault ,可通过一个名为 ansible-vault 的命令行工具来创建、编辑、加密、解密和查看文件

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

1、创建加密文件:

        要创建新的加密文件,可以使用 ansible-vault create filename 命令。该命令将提示输入新的 vault 密码,同时会利用默认的编辑器 vi 打开文件。

注:(1)除了通过标准输入途径输入 vault 密码外,还可以使用 vault 密码文件来存储 vault 密码。密码文件是以纯文本形式存储加密密码的文件,密码应当在该文件中存储为一行字符串;

       (2)由于该文件中包含敏感的纯文本密码,因此密码文件务必要通过文件权限和其他安全措施加以严密保护(在最新的 Ansible 版本中,用于保护文件的密文是 AES256 );

       (3)需要使用密码文件时,用户可通过 --vault-password-file 选项进行指定。

2、查看加密文件:

        用户可以使用 ansible-vault view filename 命令来查看 Ansible Vault 加密的⽂件,⽽不必打开文件进行编辑。

3、编辑现有加密文件:

        编辑现有的加密文件可使用 Ansible Vault 提供的 ansible-vault edit filename 命令。此命令会将文件解密为一个临时文件,并允许用户编辑该文件。而在编辑结束保存文件时,此命令会将其内容进行复制并删除临时文件。

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

4、加密现有文件:

        使用 ansible-vault encrypt filename 命令可以加密已存在的⽂件。同时 ansible-vault encrypt filename 命令可取多个欲加密⽂件的文件名称作为参数。

        若文件已为加密文件或待加密文件没有内容时,执行此命令均会报错。

(1)已加密:

(2)没有内容:

注:使用 --output=OUTPUT_FILE 选项,可将加密⽂件以新的名称进行保存

5、解密现有文件:

        现有的加密⽂件可以通过 ansible-vault decrypt filename 命令进行永久解密

注:同样,在解密单个⽂件时,也可使用 --output=OUTPUT_FILE 选项将解密⽂件以新的名称进行保存

6、更改加密文件的密码:

        使用 ansible-vault rekey filename 命令可更改加密⽂件密码,此命令可同时更新多个数据⽂件的密钥,需要提供原始密码和新密码。

注:若更改密码时,用户需要使用 Vault 密码⽂件,可使用 --new-vault-password-file 选项以实现此操作。

三、运行加密 playbook : 

         如需访问通过 Ansible Vault 加密的 playbook ,则需要向 ansible-playbook 命令提供加密密码

1、通过密码文件提供密码:

        在执行 playbook 时,使用 --new-vault-password-file 选项可提供加密密码。

注:若运行加密 playbook 时没有提供加密密码,命令将报错。

2、以交互方式提供密码:

       若要以交互方式提供 vault 密码,可使用 --vault-id @prompt 选项实现。

        用户还可以通过 ansible-navigator 使用多个 Ansible Vault 密码,将多个 --vault-id 选项或 --vault-password-file 选项传递给 ansible-navigator 命令。

注:必须禁用 playbook artifact 才能以交互方式输入 Vault 密码。若 ansible-navigator 命令需要提示用户输入交互式 Vault 密码,并且 playbook artifact 未禁用,则该命令会挂起。

四、禁用 Playbook artifact :

1、命令行:

        Playbook artifact 默认处于启用状态,用户可以使用 ansible-navigator --playbook-artifact-enable false 命令禁用 playbook artifact

2、修改文件:

        另外,用户还可以通过修改项目 ansible-navigator.yml 文件或主目录中的 .ansible-navigator.yml 文件来禁用 playbook artifact


网站公告

今日签到

点亮在社区的每一天
去签到