Ansible Tower / AWX / Automation controller Security
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
Ansible Tower 或其开源版本 AWX 也被称为 Ansible 的用户界面、仪表板和 REST API。通过 基于角色的访问控制、作业调度和图形化库存管理,您可以通过现代用户界面管理您的 Ansible 基础设施。Tower 的 REST API 和命令行界面使其易于集成到当前工具和工作流程中。
Automation Controller 是 Ansible Tower 的一个更新版本,具有更多功能。
根据 这篇文章,Ansible Tower 和 AWX 之间的主要区别在于获得的支持,Ansible Tower 具有额外的功能,如基于角色的访问控制、对自定义 API 的支持和用户定义的工作流程。
Web 界面:这是用户可以管理库存、凭据、模板和作业的图形界面。它旨在直观,并提供可视化以帮助理解自动化作业的状态和结果。
REST API:您可以在 Web 界面中执行的所有操作,也可以通过 REST API 执行。这意味着您可以将 AWX/Tower 与其他系统集成或编写通常在界面中执行的操作脚本。
数据库:AWX/Tower 使用数据库(通常是 PostgreSQL)来存储其配置、作业结果和其他必要的操作数据。
RabbitMQ:这是 AWX/Tower 用于在不同组件之间通信的消息系统,特别是在 Web 服务和任务运行器之间。
Redis:Redis 作为缓存和任务队列的后端。
库存:库存是一个 主机(或节点)的集合,可以对其 运行作业(Ansible 剧本)。AWX/Tower 允许您定义和分组库存,并支持动态库存,可以 从其他系统获取主机列表,如 AWS、Azure 等。
项目:项目本质上是一个 Ansible 剧本的集合,来源于 版本控制系统(如 Git),以便在需要时提取最新的剧本。
模板:作业模板定义 特定剧本的运行方式,指定 库存、凭据 和其他 参数。
凭据:AWX/Tower 提供了一种安全的方式来 管理和存储秘密,如 SSH 密钥、密码和 API 令牌。这些凭据可以与作业模板关联,以便剧本在运行时具有必要的访问权限。
任务引擎:这是魔法发生的地方。任务引擎基于 Ansible 构建,负责 运行剧本。作业被分派到任务引擎,然后使用指定的凭据在指定的库存上运行 Ansible 剧本。
调度程序和回调:这些是 AWX/Tower 中的高级功能,允许 作业在特定时间调度运行或由外部事件触发。
通知:AWX/Tower 可以根据作业的成功或失败发送通知。它支持多种通知方式,如电子邮件、Slack 消息、Webhook 等。
Ansible 剧本:Ansible 剧本是配置、部署和编排工具。它们以自动化、可重复的方式描述系统的期望状态。剧本使用 YAML 编写,利用 Ansible 的声明性自动化语言描述需要执行的配置、任务和步骤。
用户交互:用户可以通过 Web 界面 或 REST API 与 AWX/Tower 交互。这些提供了对 AWX/Tower 所有功能的前端访问。
作业启动:
用户通过 Web 界面或 API,根据 作业模板 启动作业。
作业模板包括对 库存、项目(包含剧本)和 凭据 的引用。
在作业启动时,向 AWX/Tower 后端发送请求,将作业排队以供执行。
作业排队:
RabbitMQ 处理 Web 组件与任务运行器之间的消息传递。一旦作业启动,消息将通过 RabbitMQ 发送到任务引擎。
Redis 作为任务队列的后端,管理等待执行的排队作业。
作业执行:
任务引擎 拾取排队的作业。它从 数据库 中检索与作业相关的剧本、库存和凭据的信息。
使用从相关 项目 中检索的 Ansible 剧本,任务引擎在指定的 库存 节点上使用提供的 凭据 运行剧本。
当剧本运行时,其执行输出(日志、事实等)被捕获并存储在 数据库 中。
作业结果:
一旦剧本完成运行,结果(成功、失败、日志)将保存到 数据库 中。
用户可以通过 Web 界面查看结果或通过 REST API 查询结果。
根据作业结果,可以发送 通知 以告知用户或外部系统作业的状态。通知可以是电子邮件、Slack 消息、Webhook 等。
外部系统集成:
库存 可以从外部系统动态获取,允许 AWX/Tower 从 AWS、Azure、VMware 等来源提取主机。
项目(剧本)可以从版本控制系统中获取,确保在作业执行期间使用最新的剧本。
调度程序和回调 可用于与其他系统或工具集成,使 AWX/Tower 对外部触发器做出反应或在预定时间运行作业。
按照文档 可以使用 docker-compose 运行 AWX:
权限最高的角色称为 系统管理员。拥有此角色的任何人都可以 修改任何内容。
从 白盒安全 审查的角度来看,您需要 系统审计员角色,该角色允许 查看所有系统数据,但无法进行任何更改。另一个选择是获得 组织审计员角色,但获得前者会更好。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)