Ansible_管理机密
一、Ansible Vault
1、什么是Ansible Vault
- Ansible提供的Ansible Vault可以加密和解密任何由Ansible使用的结构化数据文件
- 若要使用Ansible Vault,可通过一个名为ansible-vault的命令行工具创建、编辑、加密、解密和查看文件
- Ansible Vault可以加密任何由Ansible使用的结构化数据文件。
- 包括清单变量、playbook中含有的变量文件、以及在执行playbook时作为参数传递的变量文件,或者Ansible角色中定义的变量
2、使用ansible-vault创建加密文件
1️⃣:用ansible-vault filename命令创建加密的文件,该命令在执行时会提示输入新的vault密码,然后利用默认编辑器vi打开文件
- 演示实例:
[root@localhost project]# ansible-vault create playbook.yaml
New Vault password: //输入密码
Confirm New Vault password: //再次输入密码
[root@localhost project]# cat playbook.yaml
$ANSIBLE_VAULT;1.1;AES256
30613061633963633139383032353436386231646364366436613736346432313435613439353833
3761386338616239613065323934653637393833633862330a366532343533343838396561336366
36636630313930623463656431663736303336653833653235663931376234366431386534363966
3236326565623739620a326264613365376163333663613136343931323466373333303366323434
32356530633865623935613434663337646661356465343866333862373431646339
//已经加密
2️⃣:使用vault密码文件来存储vault密码,而不是通过标准输入途径输入vault密码,这样做需要使用文件权限和其他方式来严密保护该文件
- 演示实例:
//首先创建密码文件
[root@localhost project]# cat password
123456
[root@localhost project]# chmod 600 password
[root@localhost project]# ll
total 4
-rw------- 1 root root 7 Sep 2 02:05 password //创建加密的YAML文件
[root@localhost project]# ansible-vault create --vault-password-file=./password example.yaml
[root@localhost project]# cat example.yaml
$ANSIBLE_VAULT;1.1;AES256
65623133336639346338396639623239336435633037303265353231383035356163656262646431
3536633038363832363336306236313839343330363661390a656530376439373434393435353263
63623536623564366630373438656537386431386362323534363332653035653663646662653537
6139313566363732640a353232323633303064373430396365353865653231323962373864653038
3836
//已经加密
3、查看已经加密的文件
1️⃣:使用ansible-vault view filename命令查看Ansible Vault加密的文件,而不必打开它进行编辑
- 演示实例:
//查看已经加密的YAML文件
[root@localhost project]# cat playbook.yaml
$ANSIBLE_VAULT;1.1;AES256
33393839353335326235666163306639353236616564366137326632666464643733336661313261
3333636239393734323233326165616238353338386665330a353439363266346532396138343866
63393038623139363663373635626662383533656531383139373039316562313835383138386632
3637303261316631320a383034656461366630316430643733376637653134383131386238666139
64316361303763613762636437666263353965346561343635303236613366666264323736623663
39646432633364383437386237336638386463313337313431626338653261653631646538316630
63623935333436643232376562666562343761313061626162396131633635326635386662353065
64393232363731383136643839636137346239396164353038666564666466643038333539313861
38643934646565393635323862366462333465373034313331393665343832383934326330306438
3338376365613361313766316233333435353366393639653033 //查看文件内容
[root@localhost project]# ansible-vault view playbook.yaml
Vault password: //输入加密的密码
---
- name: test files
hosts: all
tasks:
- name: install httpd
yum:
name: httpd
state: present
4、编辑已经加密的文件
1️⃣:Ansible Vault提供ansible-vault edit filename命令继续编辑已经加密文件;工作时将文件解密为一个临时文件,并允许编辑;保存时,它将复制其内容并删除临时文件
- 演示实例:
//查看已经加密文件内容
[root@localhost project]# ansible-vault view playbook.yaml
Vault password:
---
- name: test files
hosts: all
tasks:
- name: install httpd
yum:
name: httpd
state: present //继续添加内容
[root@localhost project]# ansible-vault edit playbook.yaml
Vault password: //输入加密时的密码
[root@localhost project]# ansible-vault view playbook.yaml
Vault password: //输入密码
---
- name: test files
hosts: all
tasks:
- name: install httpd
yum:
name: httpd
state: present - name: start httpd
service:
name: httpd
state: started
5、加密和解密现有的未加密的文件
1️⃣:使用ansible-vault encrypt filename加密现有的未加密的文件;此命令可以一次加密多个现有的未加密文件
- 其次还可以使用--output选项将需要加密的文件加密后另存为具有新名称的文件,一次只能有一个输入文件
ansible-vault encrypt playbook.yaml --output=test.yaml
2️⃣:使用anisble-vault decrypt filename解密现有的已经加密的文件,并且是永久解密
- 解密也可以是使用--output选项,在解密单个文件时加改选项将解密文件以另一个新名称来保存文件
ansible-vault decrypt playbook.yaml --output=test.yaml
3️⃣:演示实例:
//查看两个现有的未加密的文件
[root@localhost project]# cat playbook.yaml
---
- name: test files
hosts: all
tasks:
- name: install httpd
yum:
name: httpd
state: present //加密该文件
[root@localhost project]# ansible-vault encrypt playbook.yaml
New Vault password: //输入密码
Confirm New Vault password: //再次输入密码
Encryption successful
[root@localhost project]# cat playbook.yaml
$ANSIBLE_VAULT;1.1;AES256
34613930356665386565313263616638666464303837633561633866353166653865636238333833
6430346665376264343434346233663666373064383764300a646265613630643335353930396534
35613339326263313465343637393331323461336562313335353766343161623738393965376234
3462373363323934620a616330373036346564323763333030356332353864616464303236353336
33636231386531363538346134636336613238316565373235663366656538376234656132303735
61353766633562353933313731323662616530363462656433373565663532666233386236383739
31663136336630663532613736666462643033383034313463343632316638356136363833353138
31363134396532623937373232306435303362386639663865333064353162373634623238353837
31373733356334366562373863663736383132646432363037326161396666366437376463363564
6133336438666333373037623464383962306366316432336463 //解密
[root@localhost project]# ansible-vault decrypt playbook.yaml
Vault password: //输入刚刚加密设置的密码
Decryption successful
[root@localhost project]# cat playbook.yaml
---
- name: test files
hosts: all
tasks:
- name: install httpd
yum:
name: httpd
state: present
6、更改已经加密文件的密码
1️⃣:使用ansible-vault rekey filename 命令更改已经加密文件的密码;此命令一次可以更改多个已经加密文件密码;并且需要提供原始密码
- 演示实例:
//查看已经加密的文件
[root@localhost project]# ansible-vault view playbook.yaml
Vault password: //此处我设置的密码是123456
---
- name: test files
hosts: all
tasks:
- name: install httpd
yum:
name: httpd
state: present //更改密码为654321
[root@localhost project]# ansible-vault rekey playbook.yaml
Vault password: //输入原始密码123456
New Vault password: //输入更改的密码654321
Confirm New Vault password: //再次输入更改的密码654321
Rekey successful
2️⃣:除此之外还可以使用vault文件作为面密码:使用--new-vault-password-file选项指定更改的密码
- 演示实例:
//创建vault维纳
[root@localhost project]# cat new_password
123456 //更改密码
[root@localhost project]# ansible-vault rekey --new-vault-password-file=./new_password playbook.yaml
Vault password: //输入原始密码
Rekey successful
二、Playbook和Ansible vault
1、执行ansible-playbook与交互密码
1️⃣:通过Ansible Vault加密的文件的playbook,需要向ansible-playbook命令提供加密密码
2️⃣:为playbook提供vault密码,可使用--vault-id选项,以交互方式提供vault密码
- 演示实例:
[root@localhost project]# ansible-playbook --vault-id @prompt playbook.yaml -C //prompt:提示的意思,提示输入default密码
Vault password (default): PLAY [test files] ********************************************************************************************************************************************************* TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [client.example.com] TASK [create user] ********************************************************************************************************************************************************
changed: [client.example.com] PLAY RECAP ****************************************************************************************************************************************************************
client.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
3️⃣:此外,也可以使用--vault-password-file选项指定密码文件;密码应当在该文件中存储为一行字符串
- 演示实例:
[root@localhost project]# ansible-playbook --vault-password-file=./password playbook.yaml -C PLAY [test files] ********************************************************************************************************************************************************* TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [client.example.com] TASK [create user] ********************************************************************************************************************************************************
changed: [client.example.com] PLAY RECAP ****************************************************************************************************************************************************************
client.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
4️⃣:也可以使用ANSIBLE_VAULT_PASSWORD_FILE环境变量,指定密码文件的默认位置
5️⃣:从Ansible2.4开始,可以通过ansible-playbook使用多个Ansible Vault密码。要使用多个密码,需要将多个--vault-id或--vault-password-file选项传递给ansible-playbook命令
- 演示实例:
[root@localhost project]# ansible-playbook --vault-id 1@prompt playbook.yaml -C
Vault password (1): PLAY [test files] ********************************************************************************************************************************************************* TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [client.example.com] TASK [create user] ********************************************************************************************************************************************************
changed: [client.example.com] PLAY RECAP ****************************************************************************************************************************************************************
client.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 
注意:
1、@prompt前面的vaultID,数字1可以是任何字符,甚至可以完全省略它们
2、如果在使用ansible-vault命令加密文件时,使用--vault-id 选项,则在运行ansible-playbook时,将最先尝试匹配vaultID的密码;如果不匹配,将会尝试用户提供的其他密码
3、没有ID的vaultID@prompt实际上是default@prompt的简写,这意味着提示输入vaultIDdefault的密码说明信息
2、变量文件最值得推荐的做法
1️⃣:简化管理,务必要设置Ansible项目,使敏感变量和其他变量保存在相互独立的文件中;包含敏感变量的文件可通过ansible-vault命令进行保护
2️⃣:管理组变量和主机变量的首选方式是在playbook级别上创建目录;
- group_vars目录通常包含名称与它们所应用的主机组匹配的变量文件
- host_vars目录通常包含名称与它们所应用的受管主机名称匹配的变量文件
3️⃣:Playbook变量(与清单变量相对)也可通过Ansible Vault加密保护;敏感的playbook变量可以放在单独的文件中,此文件通过Ansible Vault加密,并且vars_files指令包含在该playbook中
4️⃣:如果需要在playbook中使用多个vault密码,请确保每个加密文件分配一个vaultID,并在运行playbook时输入具有该vaultID的匹配密码
Ansible_管理机密的更多相关文章
- Ansible_管理事实(Fact)
一.Ansible管理事实(fact) 1.Ansible事实描述 1️⃣:Ansible事实是Ansible在受管主机上自动检测到的变量 2️⃣:事实(fact)中包含有与主机相关的信息,可以像pl ...
- Ansible_管理playbook实现配置并行
一.使用forks在Ansible中配置并行 1.Aniable运行play机制 1️⃣:当Ansible处理playbook时,会按顺序运行每个play.确定play的主机列表之后,Ansible将 ...
- 在Asp.NET Core中如何优雅的管理用户机密数据
在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法.在早期VB/VB.NET时代,经常使用.ini文 ...
- ubuntu中使用机密数据Secrets
目录 AptNetCore使用Secrets管理私密数据 前言 使用 设置UserSecretsId 设置机密 代码中访问机密 脚注 AptNetCore使用Secrets管理私密数据 前言 在项目中 ...
- Atitit.安全性方案规划设计4gm v1 q928
Atitit.安全性方案规划设计4gm v1 q928 1. 安全架构设计与功能安全检测1 2. https1 3. 账号安全体系1 4. 配置文件安全 1 5. 源码加密与安全2 6. 最高强度的 ...
- kubernetes进阶之二:概述
一:kubernetes是什么 Kubernetes一个用于容器集群的自动化部署.扩容以及运维的开源平台.通过Kubernetes,你可以快速有效地响应用户需求;快速而有预期地部署你的应用; 极速地扩 ...
- K8S学习笔记之Kubernetes核心概念
0x00 Kubernetes简介 Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践. K8S在Doc ...
- kubernetes-核心概念及创建应用(六)
kubernetes是什么: •Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S.•K8S用于容器化应用程序的部署,扩展和管理.•K8S提供了容 ...
- Web安全解决方案
什么是 .NET Framework 安全性? .NET Framework 提供了用户和代码安全模型,允许对用户和代码可以执行的操作进行限制.要对基于角色的安全性和代码访问安全性进行编程,可以从 S ...
随机推荐
- BUAA_OO_2020_第四单元与课程总结
BUAA_OO_2020_第四单元与课程总结 第四单元架构 第一次 架构设计 第一次作业要求实现UML类图解析器. 我才用自顶向下依次解析的方法,首先将类图中涉及的所有元素分成三层: 第一层 第二层 ...
- OO第二单元——电梯作业总结
前言 本单元作业主要以设计电梯来实现多线程编程.本章主要学习了如何使用多线程以及如何确保多线程安全,从电梯的调度策略中学会了如何简单地使用synchronized锁来控制线程安全. 首先,明确锁的两个 ...
- 100天搞定机器学习:PyYAML基础教程
编程中免不了要写配置文件,今天我们继续Python网络编程,学习一个比 JSON 更简洁和强大的语言----YAML .本文老胡简单介绍 YAML 的语法和用法,以及 YAML 在机器学习项目中的应用 ...
- gdb常用命令(转)
pwn常常会用到gdb,看到一篇不错的文章,记录了很多命令:https://www.jianshu.com/p/c3e5f5972b21 gdb 基础调试命令 s step,si步入 n 执行下一条指 ...
- HarmonyOS开发者看过来,HDD上海站传递的重要信息都在这里
4月17日,颇有HarmonyOS年度总结性质的HarmonyOS开发者日活动上海站正式开始. 活动中,华为消费者业务AI与智慧全场景业务部副总裁段孟对HarmonyOS生态建设的最新进展做了发言,并 ...
- (十五)VMware Harbor 标签管理
1. Harbor提供两种标签用来隔离各种资源(目前只有镜像): 全局级别标签: 由系统管理员管理,用于管理整个系统的镜像.它们可以添加到任何项目下的镜像中. 项目级别标签: 由项目管理员或者系统管理 ...
- JAVAEE_Servlet_11_GetAndPost
Get请求和Post请求 * Get请求 和 Post请求各方面分析 - 什么情况下浏览器发送的是Get请求? 1. 通过浏览器的地址栏输入地址,所访问的URL都是get请求,如果以post定义,那么 ...
- 代码安全丨第二期:URL重定向(跳转)漏洞
URL重定向: URL重定向(URLredirection)漏洞,又称跳转漏洞,指的是网络应用程序接受用户可控的输入作为到外部站点的链接,然后在重定向中使用该链接.该安全漏洞给网络钓鱼攻击提供了极大的 ...
- 5403. Find the Kth Smallest Sum of a Matrix With Sorted Rows
You are given an m * n matrix, mat, and an integer k, which has its rows sorted in non-decreasing or ...
- 858. Mirror Reflection
There is a special square room with mirrors on each of the four walls. Except for the southwest cor ...