Ansible Automation Platform - 保护 Playbook 中的敏感内容

news2025/10/27 22:54:03

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》

文章目录

  • AAP 保护 Playbook 敏感信息的方法
  • 使用 ansible-vault 保护 Playbook 中的敏感信息
  • 使用AAP的凭证保护访问通用目标的关键信息
    • 场景1
    • 场景2
  • 使用令牌访问 AAP

AAP 保护 Playbook 敏感信息的方法

在上一篇《Ansible Automation Platform - 用 Ansible Navigator 开发测试 Playbook》一文中,在 Playbook 中使用明文记录了 AAP Controller 的访问地址,以及用户名和密码。我们可以使用以下几种方法对 Playbook 中的敏感进行保护:
在这里插入图片描述

  • ansible-vault:可以使用 ansible-vault 对 Playbook 中的特定内容或者整个 Playbook 进行加密。由于 ansible-vault 使用的是对称加密方式,因此加密密码就是运行 Playbook 需要的解密密码。
    注意:通过 ansible-navigator 运行加密的 Playbook 需要
  • 访问凭证:对于 AAP 中使用的通用访问目标,例如被管主机、VMmware vCenter、OpenStack、AWS、AZure、AAP、Git、Image Registry 、ansible-vault 密码等,可以使用 AAP 中的“凭证”保存访问它们的配置信息。
    在这里插入图片描述
  • 访问令牌:为了增加他人临时访问 AAP 的安全性,可以无需向他人分享 AAP 的用户名和密码,而只分享 AAP 的访问令牌。在 AAP 控制台的登录用户中查看 “用户详情” 的 “令牌” 标签,然后可以添加 “读取” 或 “写入” 权限的访问令牌。生成令牌后需要妥善保存,因此关闭令牌窗口后就不能再次看到内容了。
    在这里插入图片描述
    在这里插入图片描述

使用 ansible-vault 保护 Playbook 中的敏感信息

  1. 执行命令将 my-controller-password 字符串加密并对应到 controller_password 变量,界面会提示输入 Vault 加密密码。完成后会显示 my-controller-password 被加密后内容。
$ ansible-navigator exec -- ansible-vault encrypt_string 'my-controller-password' --name 'controller_password' 
New Vault password: 
Confirm New Vault password: 
controller_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66363232313037626332323035363138623131646334363463626331323862313431386138356365
          3836663463353164313631326361353730323734626538640a636262303132336165376461323665
          33303062393732646364353333303433643863656331363963633763623838343534333930326333
          6235653936306233380a333165376364373963393034386230326430363337396238306164623165
          36356163303732646162613638383235626339363530376134343236373730303864
Encryption successful
  1. 根据以上输出的 controller_password 变量内容创建名为 vault-controller-password.yml 文件,内容如下。其中 “controller_password” 部分是上一步命令的输出结果。
- hosts: localhost 
  vars:
    controller_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66363232313037626332323035363138623131646334363463626331323862313431386138356365
          3836663463353164313631326361353730323734626538640a636262303132336165376461323665
          33303062393732646364353333303433643863656331363963633763623838343534333930326333
          6235653936306233380a333165376364373963393034386230326430363337396238306164623165
          36356163303732646162613638383235626339363530376134343236373730303864
  tasks:
  - name: Print password
    debug: 
      msg: 'The controller password is {{ controller_password }}'
  1. 执行命令用 ansible-navigator 或 ansible-playbook 运行 vault-controller-password.yml,在输入Vault 的密码后可以看到被解密的密码内容。
$ ansible-navigator run vault-controller-password.yml -m stdout --playbook-artifact-enable false --ask-vault-pass
$ ansible-playbook vault-controller-password.yml --ask-vault-pass

使用AAP的凭证保护访问通用目标的关键信息

对于一些通用访问目标,例如 VMware、OpenStack 等私有云,AWS、AZure 等公有云、主机操作系统、容器镜像 Registry 等,可以使用 AAP 的凭证记录访问信息。

注意:请参照《Ansible Automation Platform - 在自动化控制台中运行 Playbook》一文了解如何在 AAP 的控制台中通过 “模板” 运行 Playbook、以及如何配置 “凭证”,就不在下文中详细说明每一步的操作步骤了。

场景1

  1. 在 AAP 控制台上创建一个类型为 Ansible Automation Platform 的 “凭证”,为该凭证提供《Ansible Automation Platform - 在自动化控制台中运行 Playbook》一文中提到的 add-inventory.yml 文件的变量中包含的 Ansible Controller 访问地址、用户名和密码。
  2. 创建基于以下 Playbook 的模板,并且指定该模板使用上一步创建的 “凭证”,同时指定 “执行环境” 使用 “Control Plane Execution Environment”。
---
- name: Create Inventory once piece at a time
  hosts: localhost
  connection: local
  gather_facts: false
  collections:
    - ansible.controller
  tasks:
    - name: Add inventory
      inventory:
        name: Book Inventory
        organization: Default
        state: present

    - name: Add host
      host:
        name: ansible-client01
        inventory: Book Inventory
        variables:
          hosts_var: 192.168.203.118
        state: present

    - name: Add group
      group:
        name: Linux-VM
        inventory: Book Inventory
        hosts:
          - ansible-client01
        state: present
  1. 在 AAP 控制台中运行上一步创建的 “模板”,成功后确认已经在 “清单” 中创建了名为 “Book Inventory” 的清单。

场景2

  1. 在 AAP 控制台中创建一个类型为 Vault 的 “凭证”,将 “Vault 密码” 设为在上一节运行 vault-controller-password.yml 时需要输入的密码。
  2. 在 AAP 控制台中基于上一节 vault-controller-password.yml 创建 “模板”,需要将 “凭证” 设为上一步创建的 Vault 类型凭证,同时将 “执行环境” 设为 “Default execution environment”。
  3. 运行这个新创建的模板,确认可成功运行并输出被加密的 controller_password 内容。

使用令牌访问 AAP

  1. 根据本文开始介绍的 “访问令牌” 部分创建一个具备 Write 权限的令牌,记录生成的令牌内容。
  2. 在 AAP 中创建一个类型为 “Red Hat Ansible Automation Platform” 的 “凭证”,除了需要设置 Ansible Automation Platform 的访问 URL 外,再将上一步获取的令牌内容粘贴到下图 “创建新凭证” 页面的 “OAuth 令牌” 中。在这里插入图片描述
  3. 使用上一步创建的 “凭证” 再次运行在 “场景 1” 中创建的模板,确认可以成功执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ES笔记01】ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作

这篇文章,主要介绍ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作。 目录 一、索引index相关操作 1.1、创建索引 1.2、查询索引 1.3、查询所有索引 1.4、删除索引 二、文档doc相关操作 2.1、创建文档 2.2、更新文档 &am…

基于JSP的敬老院信息管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86467170 主要使用技术 ServletJSPCSSJSMysql 功能介绍 系统管理员用户功能介绍: 密码信息管理:修改个人账号密码; 系统用户管理:可以对系统…

【爬虫进阶】易班登录加密逆向

目录前言分析代码过程結果完整代码前言 demo比较简单,逆向难点:rsa加密,图片验证码 分析 我们模拟登录,请求一下 红框内是我们提交的参数,password看上去应该是rsa加密,captcha是验证码,key…

GO面试一定要看看这些面试题

Go核心特性 1.goroutine 协程是用户态轻量级线程,它是线程调度的基本单位。 使用者分配足够多的任务,系统能自动帮助使用者把任务分配到 CPU 上,让这些任务尽量并发运作。这种机制在 Go语言中被称为 goroutine(协程&#xff09…

【javaEE】网络原理(网络层)

努力经营当下,直至未来明朗 文章目录前言一、网络层简述【IP协议】THINK前言 一个人最大的痛苦来源于对自己无能的愤怒 Hi,这里是不想秃头的宝贝儿! 本文主要介绍【网络层】,其中最关键的就是【IP协议】。(同样&…

【天池竞赛】心跳数据挖掘

天池学习赛 心跳数据挖掘 168分攻略 Chapter 1. 赛题解析 就如比赛界面所介绍的一般,这里再复述一遍 本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事 —— 心跳信号分类预测。赛题以心电图心跳信号数据为背景,要求选手根据心电图感应数据预测…

【序列召回推荐】(task4)多兴趣召回实践:MIND(更新中)

note 阿里的序列召回MIND模型:引入了胶囊网络,将胶囊网络的动态路由算法引入到了用户的多兴趣建模上,通过B2I动态路由很好的从用户的原始行为序列中提取出用户的多种兴趣表征。在离线训练阶段,通过提出Label-Aware Attention详细…

Lifecycle 生命周期组件的那些事

引言 在2022的今天,AndroidX 普遍的情况下,JetPack Lifecycle 也早已经成为了开发中的基础设施,小到 View(扩展库) ,大到 Activity,都隐藏着它的身影,而了解 Lifecycle 也正是理解 JetPack 组件系列库生命感知设计的基…

D-013 蜂鸣器硬件电路设计

蜂鸣器硬件电路设计1 简介2 蜂鸣器电路设计1 简介 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中做发声器件。 蜂鸣器的分类:压电…

【ASM】字节码操作 工具类与常用类 AnalyzerAdapter初步介绍

文章目录 1.概述1.1 第一句话1.2 第二句话2. AnalyzerAdapter2.1 class info2.2 fields2.3 constructors2.4 methods2.4.1 execute方法2.4.2 return和throw2.4.3 jump2.4.4 visitFrame方法2.4.5 new和invokespecial1.概述 在上一篇文章:

创建KVM虚拟机公共镜像

手动配置kvm教程: https://blog.csdn.net/nvd11/article/details/127435990 但是毕竟每次创建新的虚拟机时,还要装一次系统比较麻烦。 打算做个公共的ubuntu镜像出来。 目标: NoDESCcpu数内存第一步创建虚拟机vm128g第二步创建虚拟机镜像文…

第五章《类的继承》第1节:继承的概念与实现方式

继承是面向对象最显著的一个特性,它是以已存在的类为基础定义新类的技术,新的类可以继承已有类的属性和方法,也可以增加新的类成员。 5.1.1什么是继承 在现实生活中,一类事物往往都可以划分成更小的类别。例如:“人”就是一类事物,按照人的身份和职业,可以把人划分成学…

SSTV慢速扫描的几种模式优劣对比

下面使用的图片是我自己拍摄的照片,无版权问题 原图: 扫描环境: 家中客厅,窗户打开,窗外有鸟叫和人声.模拟了介于野外和户外之间的环境 ,两部设备相隔1厘米,音量35%,所有测试下来设备未移动. Martin1 模式 : 扫描时长: 1分55秒 扫描后图片 Martin2 模式 : 扫描时长: 58秒…

Pywinauto的安装及使用

目录 1.pywinauto简单介绍 2.pywinauto的安装 3. 通过启动windows自带记事本,检查是否可正常使用 1.pywinauto简单介绍 pywinauto是一组用于自动化测试脚本的python模块,用于自动化Microsoft Windows GUI。它允许将鼠标和键盘操作发送到windows对话框…

基于JSP的企业固定资产管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86466989 主要使用技术 SpringStruts2HibernateJSPCSSJSMysql 功能介绍 固定资产管理系统是对高校固定资产的一个信息化管理系统,基本功能包括: 对固定资产的购进、…

基于遥感和GIS技术的生态承载力评价的解决方案

生态承载力的概念最早来自于生态学。1921年,Park和Burgess在生态学领域中首次应用了生态承载力的概念,即在某一特定环境条件下(主要指生存空间、营养物质、阳光等生态因子的组合),某种个体存在数量的最高极限。生态承载…

2023-2028年中国化肥行业市场需求预测与投资趋势分析报告

本报告由锐观咨询重磅推出,对中国化肥行业的发展现状、竞争格局及市场供需形势进行了具体分析,并从行业的政策环境、经济环境、社会环境及技术环境等方面分析行业面临的机遇及挑战。还重点分析了重点企业的经营现状及发展格局,并对未来几年行…

m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式和策略,很难为未来的无线通信事业的进一步发展提供更多可利用的无线频谱带宽和更高的频谱…

源码分析 Laravel 重复执行同一个队列任务的原因

发现问题 在 Laravel 中使用 Redis 处理队列任务,框架提供的功能非常强大,但是最近遇到一个问题,就是发现一个任务被多次执行,这是为什么呢? 先说原因: 因为在 Laravel 中如果一个队列(任务&a…

Java项目:JSP民宿预订网站信息管理平台

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台,包括管理员与普通用户两种角色; 管理员角色包含以下功能: 管理员登录,用户管理,会员管理,…