金鱼哥戏说RHCE认证:管理变量和事实--管理加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 第四章 管理变量和事实----管理加密
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL、PMP😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


Ansible是很火的一个自动化部署工具,在ansible控制节点内,存放着当前环境服务的所有服务的配置信息,其中自然也包括一些敏感的信息,例如明文密码、IP地址等等。
从安全角度来讲,这些敏感数据的文件不应该以明文的形式存在。

Ansible官方已经考虑到了这种情况,当我们的playbook中含有不能明文展示的文本时,ansible通过命令行「ansible-vault」给你目标文件/字符串进行加密。在执行playbook时,通过指定相应参数来给目标文件解密,从而实现ansible vault的功能。

ansible可以加密任何部署相关的文件数据,例如:

  • 主机/组变量等所有的变量文件
  • tasks、hanlders等所有的playbook文件
  • 命令行导入的文件(eg : -e @file.yaml ,-e @file.json)
  • copy,template的模块里src参数所使用的文件,甚至是二进制文件。
  • playbook里用到的某个字符串参数也可以加密(Ansible>=2.3)

image-20211207140953127

那究竟应该如何操作呢?先来看看命令上的常规操作:


📜1. 创建加密文件

ansible-vault create foo.yml

执行该命令后,交互式输入两次相同的密码,则创建加密文件成功


📜2. 使用密码文件创建

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

📜3. 给现有文件加密

ansible-vault encrypt foo.yml bar.yml baz.yml

📜4. 编辑加密文件

对加密过的文件进行编辑也是我们常遇到的,命令为:

ansible-vault edit foo.yml
# 这个命令会将该文件解密,并放到一个临时文件,编辑完后再保存到原文件。

📜5. 查看加密文件

有时我们不是想编辑文件,而是简单查看下文件内容,命令为:

ansible-vault view foo.yml bar.yml baz.yml
# 从示例中我们可以看出,一行命令可以查看多个加密文件。 

📜6. 更改密码

给加密文件更改密码,命令为:

ansible-vault rekey foo.yml bar.yml baz.yml
# 先交互式输入旧的密码,然后再交互式输入两次新密码,即更改密码成功。

📜7. 取消加密(解密)

取消加密的命令为:

ansible-vault decrypt foo.yml bar.yml baz.yml
# 交互式输入密码,即取消加密成功。

📜8. playbook与ansible vault

ansible执行playbook时,可以通过交互式或指定密码文件的方式来解密文件。

  • 交互式

    执行playbook时在终端以交互式的形式输入密码,示例:

    ansible-playbook --ask-vault-pass site.yaml
  • 指定密码文件

另外一种使用方式,是将密码放在某个文件内,执行playbook时,通过指定该密码文件进行解密。

可以使用「--vault-password-flie」参数:

ansible-playbook --vault-password-file=password site.yaml

image-20211207164725535

从ansible2.4版本开始,官方不再推荐使用”--vault-password-file”选项,官方开始推荐使用”–vault-id”选项代替”--vault-password-file”选项指定密码文件,也就是说,如下两条命令的效果是一样的。(推荐使用,不代表不能使用。^_^)

ansible-vault decrypt --vault-id passwordfile site.yaml
ansible-vault decrypt --vault-password-file passwordfile site.yaml

官网地址:https://docs.ansible.com/ansible/2.9/user_guide/vault.html

image-20211207165212327


📜9. 练习演示

📑命令选项

[student@servera example]$ ansible-vault -h
usage: ansible-vault [-h] [--version] [-v]
                     {create,decrypt,edit,view,encrypt,encrypt_string,rekey}
                     ...

encryption/decryption utility for Ansible data files

positional arguments:
  {create,decrypt,edit,view,encrypt,encrypt_string,rekey}
    create              Create new vault encrypted file
    decrypt             Decrypt vault encrypted file
    edit                Edit vault encrypted file
    view                View vault encrypted file
    encrypt             Encrypt YAML file
    encrypt_string      Encrypt a string
    rekey               Re-key a vault encrypted file

optional arguments:
  --version             show program's version number, config file location,
                        configured module search path, module location,
                        executable location and exit
  -h, --help            show this help message and exit
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)

See 'ansible-vault <command> --help' for more information on a specific
command.

📑创建加密文件

[student@servera ~]$ mkdir example                          # 创建演示目录
[student@servera ~]$ cd example
[student@servera example]$ ansible-vault create vault.yml    # 创建加密文件
New Vault password: 123                                        # 输入密码
Confirm New Vault password: 123                                # 确认密码

---
- name: ansible vault
  hosts: localhost
  tasks:
    - name: debug
      debug:
        msg: "test the ansible-vault."

📑查看加密文件

[student@servera example]$ cat vault.yml      # 直接查看加密剧本演示为ansible-vault进行了加密
$ANSIBLE_VAULT;1.1;AES256
62646137346235623766383531663462663662653261643933613639343133613630616239386437
3364356562656531636561643336336136653266643632350a306235653336666236336535643230
63303331383435323065663562653331373636633761633437383737303538336365326133363637
3663633061383434640a353738333230633432366337383535613363356537383731613966616365
37343430653035656663353832303465333531623738643235643163663763363737346362376437
61636135623737353939653436376535666337653364326433613064643734346638333133303462
30356365313835396566666563396162653336633066653663376132383961396166353766316236
61633833356633613635343465306534656339373732333535633931303034323439323762393234
35313930396534356338333139643033636661666564316564376664653135343130343637383634
3661336535303461353065356335613561366533663534636566
[student@servera example]$ ansible-vault view vault.yml   # 查看加密文件
Vault password: 123
---
- name: ansible vault
  hosts: localhost
  tasks:
    - name: debug
      debug:
        msg: "test the ansible-vault."

📑编辑加密文件

[student@servera example]$ ansible-vault edit vault.yml 
Vault password: 123

---
- name: ansible vault
  hosts: localhost
  tasks:
# 修改name做演示。
    - name: debug msg
      debug:
        msg: "test the ansible-vault."

📑更改密码

[student@servera example]$ ansible-vault rekey vault.yml     # 修改密码需要输入现有密码
Vault password: 123
New Vault password: 321
Confirm New Vault password: 321
Rekey successful

📑取消加密(解密)

[student@servera example]$ ansible-vault decrypt vault.yml  # 取消加密(解密)
Vault password: 321
Decryption successful
[student@servera example]$ cat vault.yml                    # 查看文件
---
- name: ansible vault
  hosts: localhost
  tasks:
    - name: debug msg
      debug:
        msg: "test the ansible-vault."

📑加密现有文件

[student@servera example]$ ansible-vault encrypt vault.yml    # 加密现有文件
New Vault password: 123
Confirm New Vault password: 123
Encryption successful
[student@servera example]$ ansible-vault view vault.yml       # 查看加密文件
Vault password: 123
---
- name: ansible vault
  hosts: localhost
  tasks:
    - name: debug msg
      debug:
        msg: "test the ansible-vault."

📑运行ansible vault加密的剧本

交互式运行

[student@servera example]$ ansible-playbook  vault.yml        # 直接运行会提示错误
ERROR! Attempting to decrypt but no vault secrets found
[student@servera example]$ ansible-playbook --ask-vault-pass vault.yml  # 交互式运行
Vault password: 123

PLAY [ansible vault] *******************************************************************

TASK [Gathering Facts] *****************************************************************
ok: [localhost]

TASK [debug msg] ***********************************************************************
ok: [localhost] => {
    "msg": "test the ansible-vault."
}

PLAY RECAP *****************************************************************************
localhost: ok=2  changed=0  unreachable=0  failed=0  skipped=0    rescued=0    ignored=0

指定密码文件

[student@servera example]$ vim passwordfile                # 编写存放密码的文件
123
[student@servera example]$ ansible-playbook --vault-password-file=passwordfile vault.yml
# 可不写等于号的,即 --vault-password-file passwordfile
PLAY [ansible vault] *******************************************************************

TASK [Gathering Facts] *****************************************************************
ok: [localhost]

TASK [debug msg] ***********************************************************************
ok: [localhost] => {
    "msg": "test the ansible-vault."
}

PLAY RECAP *****************************************************************************
localhost: ok=2  changed=0  unreachable=0  failed=0  skipped=0    rescued=0    ignored=0
[student@servera example]$ ansible-playbook --vault-id=passwordfile vault.yml 
# 可不写等于号的,即 --vault-id passwordfile
PLAY [ansible vault] *******************************************************************

TASK [Gathering Facts] *****************************************************************
ok: [localhost]

TASK [debug msg] ***********************************************************************
ok: [localhost] => {
    "msg": "test the ansible-vault."
}

PLAY RECAP *****************************************************************************
localhost: ok=2  changed=0  unreachable=0  failed=0  skipped=0    rescued=0    ignored=0

💡总结

  • ansible-vault用于加密达到安全性需求。
  • 熟悉命令常用选项和参数。
  • 可用交互式或者指定文件的形式进行剧本运行。

RHCE认证作为基础认证的升级,需要大家在RHCSA的基础上再进行学习,因此,涉及的基础内容需要大家好好进行学习并巩固。有良好的基础才能更上一层楼。
好好加油,可以噶🤪。

以上就是【金鱼哥】对 第四章 管理变量和事实--管理加密 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
3月前
|
JSON Go 网络安全
golang使用JWX进行认证和加密
golang使用JWX进行认证和加密
56 5
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
存储 安全 Java
shiro学习二:shiro的加密认证详解,加盐与不加盐两个版本。
这篇文章详细介绍了Apache Shiro安全框架中密码的加密认证机制,包括不加盐和加盐两种加密方式的实现和测试。
90 0
|
2月前
|
存储 NoSQL Java
|
4月前
|
存储 网络安全 数据安全/隐私保护
[flask]使用mTLS双向加密认证http通信
【7月更文挑战第16天】在Flask应用中实现mTLS双向TLS加密认证可增强HTTP通信安全性。步骤包括: 1. 使用OpenSSL为服务器和客户端生成证书和密钥。 2. 配置Flask服务器使用这些证书: - 安装`flask`和`pyopenssl`. - 设置SSL上下文并启用mTLS验证: 注意事项: - 保持证书有效期并及时更新. - 确保证书链信任. - 充分测试mTLS配置.
|
3月前
|
安全 网络安全 数据安全/隐私保护
[flask]使用mTLS双向加密认证http通信
[flask]使用mTLS双向加密认证http通信
106 0
|
3月前
|
网络协议 应用服务中间件 Go
[golang]使用mTLS双向加密认证http通信
[golang]使用mTLS双向加密认证http通信
|
3月前
|
应用服务中间件 Go 数据安全/隐私保护
[grpc]使用mTLS加密认证
[grpc]使用mTLS加密认证
|
5月前
|
开发框架 Java .NET
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
|
6月前
|
NoSQL 安全 MongoDB
MongoDB安全机制:认证、授权与加密
【4月更文挑战第30天】MongoDB提供全面的安全机制,包括认证(用户名/密码、LDAP、Kerberos、x.509证书)、授权(基于角色的访问控制,RBAC)和加密(TLS/SSL、透明数据加密TDE、字段级加密FLE),确保数据保密性、完整性和可用性。通过合理配置这些机制,企业可保障数据安全,应对不断变化的安全威胁。