第 2 章 强化 Ansible Automation Platform


本指南采取一种实用的方法来强化 Ansible Automation Platform 安全,从部署的规划和架构阶段开始,然后介绍安装阶段的特定指导。由于本指南专门涵盖在 Red Hat Enterprise Linux 上运行的 Ansible Automation Platform,Red Hat Enterprise Linux 的强化指导将包括在影响自动化平台组件的地方。

2.1. 规划注意事项

在规划 Ansible Automation Platform 安装时,请确保包含以下组件:

  • 安装程序多个组件

    • 自动化控制器
    • Event-Driven Ansible 控制器
    • 私有自动化中心
  • PostgreSQL 数据库(如果不是外部)

    • 外部服务
    • Red Hat Insights for Red Hat Ansible Automation Platform
    • Automation hub
    • registry.redhat.io (默认执行环境容器 registry)

如需更多信息,请参阅 Red Hat Ansible Automation Platform 规划指南 中的系统要求部分。https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.4/html/red_hat_ansible_automation_platform_planning_guide/platform-system-requirements

2.1.1. Ansible Automation Platform 参考架构

对于具有可用性要求的大型生产环境,本指南建议使用 Red Hat Enterprise Linux 上的 Red Hat Ansible Automation Platform 参考架构 文档中的说明部署本指南第 2.1 节中所述的组件。虽然某些变化可能对您的特定技术要求有意义,但遵循参考架构会导致受支持的生产环境就绪环境。

图 2.1. 参考架构概述

为大规模生产环境设置 Ansible Automation Platform 部署的示例架构的参考架构

event-Driven Ansible 是 Ansible Automation Platform 2.4 的一个新功能,在图 1 中详述的参考架构时不可用:最初编写了参考架构概述。目前,支持的配置是单个自动化控制器、单一自动化中心和带有外部(安装程序管理的)数据库的 Ansible 控制器节点。对于对 Event-Driven Ansible 感兴趣的机构,建议根据 Ansible Automation Platform 安装指南中的配置 来安装。当需要 Event-Driven Ansible 特定强化配置时,本文档提供了额外的说明。

对于可能不需要完整参考架构的较小的生产环境,本指南建议使用专用 PostgreSQL 数据库服务器部署 Ansible Automation Platform,无论是由安装程序管理还是在外部提供。

2.1.2. 用于 Ansible Automation Platform 的网络、防火墙和网络服务规划

Ansible Automation Platform 需要访问网络以集成外部辅助服务,并管理目标环境和资源,如主机、其他网络设备、应用程序、云服务。Ansible Automation Platform 计划指南中的网络 端口和协议 部分描述了 Ansible Automation Platform 组件如何与网络进行交互,以及使用哪些端口和协议,如下图所示:

图 2.2. Ansible Automation Platform 网络端口和协议

在网络上与所使用的端口和协议的信息交互 Ansible Automation Platform 组件。

在规划与 Ansible Automation Platform 相关的防火墙或云网络安全组配置时,请参阅 Ansible Automation Platform 规划指南中的网络 端口和协议 部分,以了解防火墙或安全组中需要打开哪些网络端口。

有关使用负载均衡器的更多信息,以及与 Ansible Automation Platform 兼容的服务的传出流量要求。请参阅红帽知识库文章 Ansible Automation Platform 2 服务防火墙中需要打开哪些端口?对于互联网连接的系统,本文档还定义了 Ansible Automation Platform 可以配置为使用的服务的传出流量要求,如 Ansible Automation hub、Red Hat Insights for Red Hat Ansible Automation Platform、Ansible Galaxy、registry.redhat.io 容器镜像 registry 等。

对于互联网连接的系统,本文档还定义了 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 服务器的访问的其他可信系统对 Ansible Automation Platform 服务器的 SSH 访问。
  • 限制从可信网络和客户端对自动化控制器、自动化中心和 Event-Driven Ansible 控制器的 HTTPS 访问。

2.1.3. DNS、NTP 和服务规划

2.1.3.1. DNS

安装 Ansible Automation Platform 时,安装程序脚本会检查某些基础架构服务器是否使用安装程序清单中的完全限定域名(FQDN)定义。本指南建议所有 Ansible Automation Platform 基础架构节点在 DNS 中定义有效的 FQDN,它解析为可路由的 IP 地址,且这些 FQDN 用于安装程序清单文件中。

2.1.3.2. DNS 和负载均衡

当将负载均衡器与 Ansible Automation Platform 搭配使用时,如参考架构中所述,每个负载均衡组件(自动化控制器和私有自动化中心)都需要一个额外的 FQDN。

例如,如果在 Ansible Automation Platform 安装程序清单文件中定义了以下主机:

[automationcontroller]
controller0.example.com
controller1.example.com
controller2.example.com

[automationhub]
hub0.example.com
hub1.example.com
hub2.example.com

然后,负载均衡器可以使用 FQDN controller.example.comhub.example.com 作为面向用户的这些 Ansible Automation Platform 服务的名称。

当在私有自动化中心前面使用负载均衡器时,安装程序必须了解负载均衡器 FQDN。在安装 Ansible Automation Platform 之前,在安装清单文件中将 automationhub_main_url 变量设置为负载均衡器的 FQDN。例如,若要与上例匹配,您要将变量设置为 automationhub_main_url = hub.example.com

2.1.3.3. NTP

配置 Ansible Automation Platform 基础架构中的每个服务器,使时间与 NTP 池或机构的 NTP 服务同步。这样可确保由 Ansible Automation Platform 生成的日志记录和审计事件具有准确的时间戳,并且从自动化控制器执行的任何调度作业都正确执行。

有关为 NTP 同步配置 chrony 服务的详情,请参考 Red Hat Enterprise Linux 文档中的使用 Chrony

2.1.4. 用户身份验证计划

在计划访问 Ansible Automation Platform 用户界面或 API 时,请注意用户帐户可以是本地的,也可以映射到外部身份验证源,如 LDAP。本指南建议尽可能,所有主用户帐户都应映射到外部身份验证源。使用外部帐户源可消除在此上下文中使用权限时的错误源,并尽可能减少维护专门在 Ansible Automation Platform 内一组完整的用户的时间。这包括分配给个人个人以及非个人实体的帐户,如用于外部应用程序集成的服务帐户。保留任何本地管理员帐户,如默认的"admin"帐户,用于紧急访问或"breakNote"场景,其中外部身份验证机制不可用。

注意

Event-Driven Ansible 控制器目前不支持外部身份验证,只有本地帐户。

对于运行 Ansible Automation Platform 服务的 Red Hat Enterprise Linux 服务器上的用户帐户,请遵循您的机构策略,以确定单个用户帐户是否是本地或来自外部身份验证源。只有有效需要对 Ansible Automation Platform 组件本身执行维护任务的用户才应被授予对底层 Red Hat Enterprise Linux 服务器的访问权限,因为服务器将具有包含加密密钥和服务密码的配置文件。由于这些个人必须具有维护 Ansible Automation Platform 服务的特权访问权限,因此尽量减少对底层 Red Hat Enterprise Linux 服务器的访问至关重要。不要向不受信任的用户授予对 root 帐户或本地 Ansible Automation Platform 服务帐户(awx、pulp、postgres)的 sudo 访问权限。

注意

本地 Ansible Automation Platform 服务帐户(如 awx、pulp 和 postgres)由 Ansible Automation Platform 安装程序创建和管理。底层 Red Hat Enterprise Linux 主机上的这些特定帐户不能来自外部身份验证源。

2.1.4.1. 自动化控制器身份验证

自动化控制器目前支持以下外部验证机制:

  • Microsoft Entra ID,以前称为 Microsoft Azure Active Directory
  • GitHub 单点登录
  • Google OAuth2 单点登录
  • LDAP
  • RADIUS
  • SAML
  • TACACS+
  • 通用 OIDC

选择遵循您机构的验证策略的身份验证机制,并查看 Controller Configuration - 身份验证 文档来了解相关身份验证机制的先决条件。在公共或不安全的网络上发生流量时,必须确保 Ansible Automation Platform 和身份验证后端之间的与身份验证相关的流量加密(例如,LDAPS 或 LDAP 通过 TLS,OAuth2 和 SAML 提供程序的 HTTPS 等)。

在自动化控制器中,任何"系统管理员"帐户都可以编辑、更改和更新任何清单或自动化定义。将这些帐户权限限制为对于低级自动化控制器配置和灾难恢复可能的最小用户集合。

2.1.4.2. 私有自动化中心身份验证

私有自动化中心目前支持以下外部验证机制:

  • Ansible Automation Platform 中央身份验证(基于 RHSSO)
  • LDAP

对于生产环境,LDAP 是私有自动化中心的首选外部身份验证机制。Ansible Automation Platform 中央身份验证是一个选项,可通过 Ansible Automation Platform 安装程序部署,但它仅部署一个中央身份验证服务器实例,使其成为潜在的单点故障。在生产环境中不推荐用于 Ansible Automation Platform 中央身份验证的独立模式。但是,如果您已在生产环境中部署了单独的 Red Hat Single Sign-On (RHSSO)产品,它可用作私有自动化中心的外部身份验证源。

Ansible Automation Platform 安装程序在安装过程中为私有自动化中心配置 LDAP 身份验证。如需更多信息,请参阅 私有自动化中心上的 LDAP 配置

安装前必须填写以下安装程序清单文件变量:

表 2.1. 用于自动化中心 LDAP 设置的清单变量
变量详情

automationhub_authentication_backend

设置为"ldap"以使用 LDAP 身份验证。

automationhub_ldap_server_uri

LDAP 服务器 URI,如 "ldap://ldap-server.example.com" 或 "ldaps://ldap-server.example.com:636"。

automationhub_ldap_bind_dn

用于连接到 LDAP 服务器的帐户。此帐户应该是有足够的特权来查询 LDAP 服务器以获取用户和组,但它不应是一个管理员帐户,或者能够修改 LDAP 记录的功能。

automationhub_ldap_bind_password

绑定帐户使用的密码来访问 LDAP 服务器。

automationhub_ldap_user_search_base_dn

用于搜索用户的基本 DN。

automationhub_ldap_group_search_base_dn

用于搜索组的基本 DN。

为确保 LDAP 流量在私有自动化中心和 LDAP 服务器之间加密,LDAP 服务器必须通过 SSL (LDAPS)支持 LDAP over TLS 或 LDAP。

2.1.5. Ansible Automation Platform 的凭证管理规划

自动化控制器使用凭证向作业验证对作业的请求,与清单源同步,并从版本控制系统中导入项目内容。自动化控制器管理三组 secret:

  • 用于本地自动化控制器用户的 用户密码。如需了解更多详细信息,请参阅本指南的 用户身份验证规划 部分。
  • 用于自动化控制器的 secret (数据库密码、消息总线密码等)。
  • 用于自动化的 secret (SSH 密钥、云凭证、外部密码 vault 凭证等)。

强烈建议您实施特权访问或凭证管理解决方案来保护凭证。组织应审计 的使用,并提供对、访问和特权升级的其他编程控制。

您可以通过确保自动化凭证是唯一的并只存储在自动化控制器中来进一步保护自动化凭证。OpenSSH 等服务可以配置为只允许来自特定地址的连接的凭证。从系统管理员用来登录服务器的用户,使用不同的凭据进行自动化。虽然直接访问应尽可能限制,但可用于灾难恢复或其他临时管理目的,从而可以更轻松地进行审核。

不同的自动化作业可能需要在不同级别上访问系统。例如,您可以有低级系统自动化来应用补丁并执行安全基线检查,同时具有更高级别的自动化部署应用程序。通过将不同的密钥或凭证用于不同的自动化部分,可以最小化任何一个关键漏洞的影响。这也允许轻松进行基准审核。

2.1.5.1. 自动化控制器操作 secret

自动化控制器包含以下在操作中使用的 secret:

表 2.2. 自动化控制器操作 secret

file

详情

/etc/tower/SECRET_KEY

用于加密数据库中自动化 secret 的 secret 密钥。如果 SECRET_KEY 发生变化或未知,则无法访问数据库中的加密字段。

/etc/tower/tower.cert

/etc/tower/tower.key

自动化控制器 Web 服务的 SSL 证书和密钥。默认安装自签名证书 /密钥 ;您可以提供本地适当证书和密钥(请参阅 使用用户提供的 PKI 证书安装 )。

/etc/tower/conf.d/postgres.py

包含自动化控制器用于连接数据库的密码。

/etc/tower/conf.d/channels.py

包含自动化控制器用于 websocket 广播的 secret。

这些 secret 存储在 Automation 控制器服务器上,因为自动化控制器服务必须在启动时以自动的方式读取它们。所有文件都由 Unix 权限保护,仅限于 root 用户或自动化控制器服务用户 awx。通常应监控这些文件,以确保没有未经授权的访问或修改。

注意

自动化控制器以前被命名为 Ansible Tower。这些文件位置保留以前的产品名称。

2.1.5.2. 自动化使用 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.6. 日志记录和日志捕获

可见性和分析是企业安全和零信任架构的重要支密。日志记录是捕获操作和审核的关键。您可以使用 Red Hat Enterprise Linux 安全强化指南中的内置的 审计 支持来管理日志记录和审核。控制器的内置日志记录和活动流支持自动化控制器和自动日志中的所有更改,以满足审计目的。如需更多信息,请参阅自动化控制器文档中的 日志记录和聚合 部分。

本指南建议您配置 Ansible Automation Platform 和底层 Red Hat Enterprise Linux 系统,以集中收集日志和审核,而不是在本地系统中查看它。自动化控制器必须配置为使用外部日志记录来从控制器服务器中的多个组件编译日志记录。发生的事件必须与时间相关,才能进行准确的诊断分析。这意味着,控制器服务器必须配置有 NTP 服务器,服务器也由日志记录聚合器服务以及控制器的目标。相关性必须满足某些行业容错要求。换句话说,可能有不同的要求,不同日志事件的时间戳不得因 X 秒大于 X 秒而不同。此功能应该在外部日志记录服务中可用。

日志记录的另一个关键功能是使用加密来保护日志工具的完整性。日志数据包括成功记录系统活动所需的所有信息(如日志记录、日志设置和日志报告)。攻击者通常会替换日志工具,或将代码注入现有工具,以便从日志中隐藏或擦除系统活动。要解决这个风险,日志工具必须经过加密签名,以便您可以识别何时修改、操作或替换日志工具。例如,验证日志工具没有被修改、操作或替换的方法是对工具文件使用 checksum 哈希。这样可确保工具的完整性没有被破坏。

2.1.7. 审计和事件检测

在常见用例中应用 NIST Cybersecurity Framework,需要使用 Ansible Automation Platform 来满足安全策略要求,例如:

  • 为 Red Hat Enterprise Linux 上的 Web 服务器需要 HTTPS.
  • 为 Red Hat Enterprise Linux 上的 Web 服务器和数据库服务器之间的内部通信需要 TLS 加密。
  • 生成报告,显示策略已正确部署。
  • 监控违反了策略的偏移。
  • 自动更正任何策略违反情况。

这可以通过网络安全框架的 5 个步骤完成:

识别
定义根据安全策略实施的要求。
保护
实施并应用要求作为 Ansible Playbook。
DETECT
监控偏移并生成审计报告。
响应
探索在检测到事件时可以执行的操作。
RECOVER
使用 Ansible 将系统恢复到已知的良好配置。

2.1.8. Red Hat Enterprise Linux 主机规划

Ansible Automation Platform 的安全性依赖于底层 Red Hat Enterprise Linux 服务器的配置。因此,每个 Ansible Automation Platform 组件的底层 Red Hat Enterprise Linux 主机都必须根据您的机构使用的 安全强化 Red Hat Enterprise Linux 8安全强化 (取决于使用什么操作系统)以及任何安全配置集要求(CIS、STIG、HIPAA 等)以及您的机构使用的任何安全配置集要求(CIS、STIG、HIPAA 等)。

请注意,应用 STIG 或其他安全配置集的某些安全控制可能会与 Ansible Automation Platform 支持要求冲突。虽然 Automation controller STIG considerations 部分列出了一些示例,但这不是一个完整的列表。要维护受支持的配置,请务必讨论与安全审核员的任何此类冲突,以便了解并批准 Ansible Automation Platform 要求。

2.1.8.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 安装程序管理,在执行升级时可能会撤消任何手动更改。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.