如何使用 Ansible Vault 保护敏感数据

[ad_1]

Ansible 是一款出色的自动化和编排工具,因其简单易用而受到许多开发人员的欢迎。 Ansible 附带的最重要的功能之一是 Ansible Vault。 正如你现在猜到的那样, Ansible 保险库 是一种安全功能,用于加密或保护剧本或文件中的敏感信息,而不是将它们以纯文本形式保存,这会在发生漏洞时构成重大威胁。 此类数据包括 密码, API 令牌SSL 证书 举几个。 您可以加密整个剧本 YAML 剧本中带有敏感信息(例如密码)的字符串文件。

在本指南中,我们将介绍 Ansible Vault 可以帮助您锁定敏感或机密信息并阻止窥探者的各种方式。

使用 Ansible Vault 创建加密文件

Ansible vault 使用 ansible-vault 命令行实用工具,通过 AES256 算法加密敏感信息。 这提供了嵌入到定义密码中的对称加密。 用户可以使用相同的密码来加密或解密文件以访问内容。

要创建加密文件,请使用 ansible-vault 实用工具,如图所示

$ ansible-vault 创建 file.yml

例如,要创建一个文件,调用它 秘密文件.yml,运行命令

$ ansible-vault create secret_file.yml

系统将提示您提供新的保管库密码。 输入您的首选密码并确认。 确认密码后,vim 编辑器将启动。

之后,输入您希望由 Ansible Vault 加密的文件内容并保存该文件。 下面是一些示例文本。

Hello, this is my secret file

当您查看文件时,您会发现它已经使用 AES256 算法进行了加密,如图所示。

$ vim secret_file.yml

使用 Ansible Vault 编辑加密文件

要对已存在的加密文件进行更改,请使用以下语法:

$ ansible-vault 编辑 file.yml

从我们之前创建的示例文件中,编辑文件的命令是:

$ ansible-vault edit secret_file.yml

同样,系统将提示您输入 Vault 密码,在提供密码后,您将被授予对文件的访问权限以进行修改。

查看加密文件

要查看加密文件,请使用以下语法:

$ ansible-vault 查看 file.yml

因此,使用我们的文件,命令将是

$ ansible-vault view secret_file.yml

使用 Ansible Vault 加密现有文件

假设您要加密一个已存在的未加密文件,例如库存文件。 你会怎么做? 为此,请使用以下语法:

$ ansible-vault 加密文件.yml

例如,要加密文件 file1.yml 执行命令:

$ ansible-vault encrypt file1.yml

指定保管库密码并确认以加密文件。

使用 Ansible Vault 解密文件

要解密文件并恢复为纯文本,请运行以下命令:

$ ansible-vault decrypt file1.yml

如果一切顺利,您将收到“解密成功”消息。 您现在可以使用 cat 命令查看文件的内容。

重置 Ansible 保险库密码

此外,您可以重置或更改 Vault 的密码。 这是使用 重新加密 ansible vault 命令中的选项,如图所示:

$ ansible-vault rekey secret_file.yml

首先指定当前的保管库密码,然后创建新密码并确认。

在 Ansible Playbook 中在运行时解密内容

在 Ansible 2.4 之前,在运行时解密文件需要使用 –ask-vault-pass 参数显示为 能听懂的 或者 ansible-剧本 命令:

$ ansible-playbook playbook_example.yml --ask-vault-pass

然后系统会提示您输入 Vault 密码,解密将在运行时开始。

但是,这已被弃用。 从 Ansible 2.4 开始,提示输入密码的标准方法是利用 –vault-id 选项如图所示。

$ ansible-playbook playbook_example.yml --vault-id @prompt

@迅速的 会提示输入密码

避免在运行时每次解密文件时提示输入密码的一个简单技巧是将 Vault 密码存储在文件中。

在 Ansible 2.4 之前,实现这一目标的方法是使用 –保险库密码文件 参数指定包含存储密码的文件的路径。

例如,在下面的演示中,密码文件位于 /etc/ansible/vault_pass.txt 文件。

$ ansible-playbook playbook_example.yml --vault-password-file /etc/ansible/vault_pass.txt

然而,就像 –ask-vault-pass 选项,选项 –保险库密码文件 已被弃用,以便为 –vault-id 选项。 因此,该命令如下所示:

$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt

在 Ansible Playbook 中加密变量

除了加密整个剧本之外, ansible 保险库 还使您能够仅加密变量。 在大多数情况下,这些变量包含高度机密和敏感的信息,例如密码和 API 密钥。

下面的剧本旨在打印出变量的值 我的秘密 其中包含定义为的密码 [email protected].

通常,以纯文本形式存储密码是一个坏主意,因为如果有人掌握了剧本文件,您的安全可能会受到威胁。

因此,您会看到 2 个选项:加密整个文件或加密变量的值。

要加密变量,请使用 加密字符串 选项如图所示。

$ ansible-vault encrypt_string ‘string’ –name ‘variable_name’

加密变量的值 我的秘密 在剧本示例中,命令将是:

$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'

上面的输出表明密码已被加密 AES 256 加密. 从这里,复制整个加密代码 !保险库| . 前往剧本文件并删除明文密码值并粘贴加密值,如图所示。

Save 并退出文件。 现在运行 playbook 并验证它是否仍会显示存储在 我的秘密 多变的。

上面的输出显示 playbook 给出了预期的结果,这意味着我们成功地加密了变量。

关于 Ansible Vault 的本教程到此结束。 您现在可以保护您的文件并使您的机密信息远离窥探。

另请阅读 如何在 Ansible Playbook 中使用 Jinja2 模板

[ad_2]

Related Posts