第 2 章 强化 Ansible Automation Platform
本指南采取一种实用方法来强化 Ansible Automation Platform 安全状况,从部署的规划和架构阶段开始,然后涵盖安装阶段的特定指导。由于本指南特别涵盖在 Red Hat Enterprise Linux 上运行的 Ansible Automation Platform,因此涵盖了 Red Hat Enterprise Linux 的强化指南,其中涵盖了它会影响自动化平台组件。
2.1. 规划注意事项
Red Hat Ansible Automation Platform 由以下主要组件组成:
- 自动化控制器
- Automation mesh
- 私有自动化中心
- Event-Driven Ansible 控制器
另外还提供了 PostgreSQL 数据库,但也可以使用用户提供的 PostgreSQL 数据库。红帽建议客户始终部署 Ansible Automation Platform 的所有组件,以便在不需要进一步操作的情况下可以使用所有特性和功能。
如需更多信息,请参阅 Red Hat Ansible Automation Platform 架构
2.1.1. Ansible Automation Platform 部署拓扑
根据测试的 部署模型 中定义的已测试部署拓扑之一安装 Ansible Automation Platform 2.5。企业组织应当将企业拓扑之一用于生产部署,以确保最高级别的正常运行时间、性能和持续可扩展性。资源约束的机构或部署可以使用"增长"拓扑。查看测试的部署模型文档,以确定最适合您的要求的拓扑。所选的拓扑结构包括规划信息,如拓扑图、所需的 Red Hat Enterprise Linux 服务器数量、部署使用的网络端口和协议,以及企业拓扑的负载均衡器信息。
可以在不同的基础架构拓扑和使用不同的环境配置上安装 Ansible Automation Platform。红帽不会在公布的部署模型之外完全测试拓扑。
下图显示了经过测试的容器企业拓扑:
图 2.1. 参考架构概述
在规划与 Ansible Automation Platform 相关的防火墙或云网络安全组配置时,请参阅 Tested deployment model 中的 "Network Ports" 部分,以了解在防火墙或安全组上需要打开哪些网络端口。
对于互联网连接的系统,规划安装的网络 和协议 部分定义了 Ansible Automation Platform 可配置为使用的服务的传出流量要求,如 Red Hat Automation hub、Insights for Ansible Automation Platform、Ansible Galaxy、registry.redhat.io 容器镜像 registry 等。
将 Ansible Automation Platform 组件使用的端口的访问限制为受保护的网络和客户端。强烈建议您有以下限制:
- 限制数据库服务器上的 PostgreSQL 数据库端口(5432),以便只允许其他 Ansible Automation Platform 组件服务器(自动化控制器、自动化中心、Event-Driven Ansible 控制器)的访问权限。
- 从安装主机以及用于维护访问 Ansible Automation Platform 服务器的其他可信系统限制 SSH 访问 Ansible Automation Platform 服务器。???
- 限制来自可信网络和客户端的自动化控制器、自动化中心和 Event-Driven Ansible 控制器的 HTTPS 访问。
2.1.2. DNS、NTP 和服务规划
2.1.2.1. DNS
安装 Ansible Automation Platform 时,安装程序脚本会检查安装程序清单中的 完全限定域名 (FQDN)是否定义了某些基础架构服务器。本指南建议所有 Ansible Automation Platform 基础架构节点在 DNS 中定义有效的 FQDN,它解析为可路由的 IP 地址,并在安装程序清单文件中使用这些 FQDN。
2.1.2.2. DNS 和负载均衡
当在 Ansible Automation Platform 中使用负载均衡器时,如部署拓扑中所述,负载均衡器需要额外的 FQDN。例如,FQDN (如 aap.example.com
)可用于负载均衡器,将流量定向到安装清单中定义的每个平台网关组件。
2.1.2.3. NTP
在 Ansible Automation Platform 基础架构中配置每个服务器,以将时间与 NTP 池或机构的 NTP 服务同步。这样可确保 Ansible Automation Platform 生成的日志记录和审核事件具有准确的时间戳,并且任何从自动化控制器运行的作业都正确执行。
有关为 NTP 同步配置 chrony 服务的详情,请参考 Red Hat Enterprise Linux 文档中的 使用 Chrony。
2.1.2.4. Ansible Automation Platform 身份验证
自动化控制器目前通过平台网关 UI 支持以下外部身份验证机制:
- Local
- LDAP
- SAML
- TACACS+
- RADIUS
- Azure Active Directory
- Google OAuth
- 通用 OIDC
- Keycloak
- GitHub 单点登录
- GitHub
- GitHub 机构
- GitHub 团队
- GitHub 企业
- GitHub 企业机构
- GitHub 企业团队
选择符合您组织的验证策略的身份验证机制。在公共或非安全网络中发生流量时,必须确保 Ansible Automation Platform 和身份验证后端之间的与身份验证相关的流量加密(例如,LDAPS 或 LDAP 通过 TLS,OAuth2 和 SAML 提供程序的 HTTPS 等)。
有关身份验证方法的更多信息,请参阅配置身份验证类型。
在平台网关中,任何"系统管理员"帐户都可以编辑、更改和更新任何清单或自动化定义。将这些帐户特权限制为可能达到低级 Ansible Automation Platform 配置和灾难恢复的最低用户集合。
2.1.3. Ansible Automation Platform 的凭证管理计划
Red Hat Ansible Automation Platform 使用凭证来针对机器验证对作业的请求,与清单源同步,并从版本控制系统中导入项目内容。自动化控制器管理三组 secret:
- 用于本地 Ansible Automation Platform 用户的 用户密码。
- 用于 Ansible Automation Platform 操作使用的 secret (数据库密码、消息总线密码等)。
- 用于自动化的 secret (SSH 密钥、云凭证、外部密码 vault 凭证等)。
强烈建议您实施特权访问或凭证管理解决方案来保护凭证免受威胁。组织应审计 的使用,并提供额外的编程控制、访问和特权升级。
您可以通过确保它们是唯一的并只存储在自动化控制器中来进一步保护自动化凭证。OpenSSH 等服务可以配置为只允许来自特定地址的连接的凭证。与系统管理员用来登录到服务器的用户使用不同的凭据进行自动化。虽然应该尽可能限制直接访问,但可用于灾难恢复或其他临时管理目的,从而可以更轻松地进行审核。
不同的自动化作业可能需要访问不同级别的系统。例如,您可以具有低级系统自动化来应用补丁并执行安全基准检查,同时具有更高级别的自动化来部署应用程序。通过使用不同的密钥或凭证进行自动化,任何一个关键漏洞的影响都会最小化。这也可轻松进行基线审核。
2.1.3.1. 自动化使用 secret
自动化控制器会在数据库中存储各种用于自动化的 secret 或自动化生成的 secret。自动化使用 secret 包括:
- 所有凭证类型(密码、secret 密钥、身份验证令牌、secret 云凭证)的所有 secret 字段。
- 自动化控制器设置中定义的外部服务的 secret 令牌和密码。
- "密码"类型调查字段条目。
您可以向用户和团队授予使用这些凭证的权限,而无需实际向用户公开凭证。这意味着,如果用户迁移到不同的团队或离职,则不必更新所有系统的密钥。
自动化控制器使用 SSH (或 Windows 等效)连接到远程主机。要将密钥从自动化控制器传递给 SSH,必须在将密钥写入命名管道前解密密钥。然后,自动化控制器会使用该管道将密钥发送到 SSH (因此永远不会写入磁盘)。如果使用密码,自动化控制器将通过直接响应密码提示并解密密码来处理这些密码,然后再将其写入提示符。
作为具有超级用户访问权限的管理员,您可以使用类似 YAML/JSON 的定义以标准格式定义自定义凭证类型,从而将新凭证类型分配给作业和清单更新。这可让您定义一个与现有凭证类型类似的自定义凭证类型。例如,您可以创建一个自定义凭证类型,将第三方 Web 服务的 API 令牌注入环境变量,您的 playbook 或自定义清单脚本可以使用它。
要加密 secret 字段,Ansible Automation Platform 使用 CBC 模式的 AES,使用 256 位密钥进行加密、PKCS7 padding 和 HMAC,使用 SHA256 进行身份验证。加密/解密过程从 SECRET_KEY
、模型字段的字段名称和数据库分配的自动递增记录 ID 生成 AES-256 位加密密钥。因此,如果密钥生成过程中使用的任何属性发生变化,Ansible Automation Platform 无法正确解密 secret。Ansible Automation Platform 被设计为,在 playbook Ansible Automation Platform 启动时,SECRET_KEY
永远不会可读,因此 Ansible Automation Platform 用户不会读取这些 secret,且不会通过 Ansible Automation Platform REST API 提供 secret 字段值。如果在 playbook 中使用 secret 值,您必须在任务中使用 no_log
,使其不会被意外记录。如需更多信息,请参阅 保护没有日志的敏感数据。
2.1.4. 日志记录和日志捕获
可见性和分析是企业安全性和零信任架构的重要支离。日志记录是捕获操作和审核的关键。您可以使用 Red Hat Enterprise Linux 安全强化指南中的 审计系统部分中的内置审计 支持来管理日志记录和审计。Ansible Automation Platform 的内置日志记录和活动流支持 Red Hat Ansible Automation Platform 日志,为审计目的记录 Red Hat Ansible Automation Platform 和自动化日志中的所有更改。有关配置自动化执行 的日志记录和聚合 部分中提供了更详细的信息。
本指南建议您配置 Ansible Automation Platform 和底层 Red Hat Enterprise Linux 系统,以集中收集日志记录和审核,而不是在本地系统中查看它。Ansible Automation Platform 必须配置为使用外部日志记录来从 Ansible Automation Platform 服务器中的多个组件编译日志记录。发生的事件必须时间与时间相关,才能准确进行诊断分析。这意味着 Ansible Automation Platform 服务器必须配置有 NTP 服务器,该服务器也供日志记录聚合器服务使用,以及 Ansible Automation Platform 的目标。相关关系必须满足特定的行业容错要求。换句话说,可能有不同的要求,不同的日志记录事件的时间戳不得与 x 秒以上不同。此功能应在外部日志记录服务中可用。
日志的另一个关键功能是使用加密功能来保护日志工具的完整性。日志数据包括成功记录系统活动所需的所有信息(如日志记录、日志设置和日志报告)。攻击者通常会替换日志工具或将代码注入现有工具,以便从日志中隐藏或擦除系统活动。要解决这一风险,必须对日志工具进行加密签名,以便您可以识别日志工具何时修改、操作或替换。例如,验证日志工具没有被修改,操作或替换的一种方法是对工具文件使用校验和哈希。这样可保证工具的完整性没有被破坏。
2.1.5. 审计和事件检测
Ansible Automation Platform 应该用于通过为常见用例应用 NIST Cybersecurity Framework 来达到安全策略要求,例如:
- 为 Red Hat Enterprise Linux 上的 Web 服务器需要 HTTPS.
- 为 Red Hat Enterprise Linux 上的 Web 服务器和数据库服务器之间的内部通信需要 TLS 加密。
- 生成报告显示策略已正确部署。
- 监控违反策略的偏移。
- 自动更正任何策略违反情况。
这可以通过网络安全框架的 5 个步骤完成:
- 识别
- 根据安全策略定义要实施的要求。
- 保护
- 实施并应用要求作为 Ansible Playbook。
- DETECT
- 监控偏移并生成审计报告。
- 响应
- 探索在检测到事件时可能执行的操作。
- RECOVER
- 使用 Ansible 将系统恢复到已知良好的配置。
2.1.6. Red Hat Enterprise Linux 主机规划
Ansible Automation Platform 的安全性取决于底层 Red Hat Enterprise Linux 服务器配置的一部分。因此,每个 Ansible Automation Platform 组件的底层 Red Hat Enterprise Linux 主机必须根据 Red Hat Enterprise Linux 8 的安全强化或 Red Hat Enterprise Linux 9 安全强化来安装和配置。对于新部署,本文档为所有新部署推荐 Red Hat Enterprise Linux 9。使用基于容器的安装方法时,需要 Red Hat Enterprise Linux 9。
2.1.6.1. Ansible Automation Platform 和其他软件
当在 Red Hat Enterprise Linux 服务器上安装 Ansible Automation Platform 组件时,Red Hat Enterprise Linux 服务器应该只专用于使用它。除了 Ansible Automation Platform 外,不得安装其他服务器功能,因为这是一个不支持的配置,并可能会影响 Ansible Automation Platform 软件的安全性和性能。
同样,当 Ansible Automation Platform 部署到 Red Hat Enterprise Linux 主机上时,它会像 nginx web 服务器、Pulp 软件存储库和 PostgreSQL 数据库服务器(除非使用用户提供的外部数据库)安装软件。此软件不应以更通用的方式修改或使用(例如,不要使用 nginx 来提供额外的网站内容或 PostgreSQL 来托管其他数据库),因为这是一个不支持的配置,并可能会影响 Ansible Automation Platform 的安全性和性能。此软件的配置由 Ansible Automation Platform 安装程序管理,执行升级时可能会撤消任何手动更改。