2.2. 安装


有影响 Ansible Automation Platform 安全性能的安装决策。安装过程包括设置多个变量,其中一些与 Ansible Automation Platform 基础架构强化相关。在安装 Ansible Automation Platform 前,请考虑本指南的安装部分中的指导。

2.2.1. 从专用安装主机安装

Ansible Automation Platform 安装程序可以从其中一个基础架构服务器(如自动化控制器)或可通过 SSH 访问 Ansible Automation Platform 基础架构服务器的外部系统运行。Ansible Automation Platform 安装程序还仅用于安装,而是用于后续的第二天操作,如备份和恢复,以及升级。本指南建议从专用外部服务器执行安装和第二天操作,此处后称为安装主机。这样做无需登录其中一个基础架构服务器来运行这些功能。安装主机必须仅用于管理 Ansible Automation Platform,且不得运行任何其他服务或软件。

安装主机必须是已安装和配置的 Red Hat Enterprise Linux 服务器,它根据 Red Hat Enterprise Linux 的安全强化 以及与您的机构相关的任何安全配置集要求(CIS、STIG 等)。获取 Ansible Automation Platform 安装程序,如 规划安装 中所述,并创建安装程序清单文件,如 编辑 Red Hat Ansible Automation Platform 安装程序清单文件 中所述。此清单文件用于升级、添加基础架构组件和第二天操作,因此请在安装后保留该文件,供以后使用。

对安装主机的访问必须仅限于负责管理 Ansible Automation Platform 基础架构的人员。随着时间的推移,它将包含敏感信息,如安装清单(包含 Ansible Automation Platform 的初始登录凭据)、用户提供的 PKI 密钥和证书的副本、备份文件等。安装主机还必须用于在基础架构管理和维护需要时通过 SSH 登录到 Ansible Automation Platform 基础架构服务器。

2.2.2. 安装清单中与安全相关的变量

安装清单文件定义 Ansible Automation Platform 基础架构的架构,并提供一些可用于修改基础架构组件初始配置的变量。如需有关安装程序清单的更多信息,请参阅关于安装程序清单文件

下表列出了多个与安全相关的变量,以及它们用于基于 RPM 的部署的建议值。

Expand
表 2.2. 与安全相关的清单变量
RPM 部署变量推荐的值详情

postgres_use_ssl

true

安装程序将安装程序管理的 Postgres 数据库配置为在设置此变量时接受基于 SSL 的连接。

此变量的默认值为 false,这意味着 SSL/TLS 不用于 PostgreSQL 连接。

当设置为 true 时,平台使用 SSL/TLS 连接到 PostgreSQL。

pg_sslmode automation_gateway_pg_sslmode automationhub_pg_sslmode automationcontroller_pg_sslmode

verify-full

这些变量控制数据库的 mutual TLS (mTLS)身份验证。默认情况下,当每个服务连接到数据库时,它会尝试加密的连接,但不会强制实施。

将此变量设置为 verify-full 会在服务和数据库之间强制实施 mTLS 协商。postgres_use_ssl 变量还必须设为 true,才能使这个 pg_sslmode 有效。

注意 :如果使用第三方数据库而不是安装程序管理的数据库,则第三方数据库必须独立设置,以接受 mTLS 连接。

nginx_disable_hsts automation_gateway_disable_hsts automationhub_disable_hsts automationcontroller_disable_hsts

false

如果设置为 true,则这些变量将禁用到每个组件 Web 服务的 HTTPS 严格传输安全性 (HSTS)连接。

默认值为 false。如果安装程序清单中缺少这些变量,则有效等同于将变量定义为 false

下表列出了多个与安全相关的变量,以及它们用于基于容器的部署的建议值。

Expand
表 2.3. 与安全相关的容器化清单变量
容器部署变量推荐的值详情

postgresql_disable_tls

false

如果设置为 true,则此变量禁用与安装程序管理的 PostgreSQL 数据库的 TLS 连接。

默认值为 false

如果安装程序清单中没有此变量,则有效等同于将变量定义为 false

controller_pg_sslmode gateway_pg_sslmode hub_pg_sslmode eda_pg_sslmode

verify-full

这些变量控制数据库的 mutual TLS (mTLS)身份验证。

默认情况下,当每个服务连接到数据库时,它会尝试加密的连接,但不会强制实施。将此变量设置为 verify-full 会在服务和数据库之间强制实施 mTLS 协商。

注意

如果使用第三方数据库而不是安装程序管理的数据库,则第三方数据库必须独立设置,以接受 mTLS 连接。

controller_nginx_disable_https gateway_nginx_disable_https hub_nginx_disable_https da_nginx_disable_https

false

如果设置为 true,则这些变量将禁用到每个组件 Web 服务的 HTTPS 连接。

默认值为 false

如果安装程序清单中缺少这些变量,则有效等同于将变量定义为 false

controller_nginx_disable_hsts gateway_nginx_disable_hsts hub_nginx_disable_hsts eda_nginx_disable_hsts

false

如果设置为 'true',则这些变量将禁用到每个组件 Web 服务的 HTTPS Strict Transport Security (HSTS)连接。

默认值为 false

如果安装程序清单中缺少这些变量,则有效等同于将变量定义为 false

在多个平台网关前面使用负载均衡器的企业架构中,可以在负载均衡器中终止 SSL 客户端连接,或通过传递给单独的 AAP 服务器。如果在负载均衡器中终止 SSL,本指南建议流量从负载均衡器重新加密到单独的 Ansible Automation Platform 服务器。这样可确保使用端到端加密。在这种情况下,列出的 *_disable_https 变量设置为默认值 false

2.2.3. 使用用户提供的 PKI 证书安装

默认情况下,Ansible Automation Platform 为平台 的基础架构组件创建自签名公钥基础架构 (PKI)证书。如果现有的 PKI 基础架构可用,必须为自动化控制器、私有自动化中心、EventDriven Ansible 控制器和 postgres 数据库服务器生成证书。将证书文件及其相关密钥文件复制到安装程序目录中,以及用于验证证书的 CA 证书。

使用以下清单变量使用新证书配置基础架构组件。

Expand
表 2.4. PKI 证书清单变量

RPM 变量

容器化变量

详情

custom_ca_cert

custom_ca_cert

自定义 CA 证书文件的路径。

如果设置,这将把自定义 CA 证书安装到系统信任存储中。

web_server_ssl_cert

controller_tls_cert

位于安装程序目录中的自动化控制器 PKI 证书的文件名。

web_server_ssl_key

controller_tls_key

安装程序目录中自动化控制器 PKI 密钥的文件名。

automationhub_ssl_cert

hub_tls_cert

安装程序目录中的私有自动化中心 PKI 证书的文件名。

automationhub_ssl_key

hub_tls_key

安装程序目录中的私有自动化中心 PKI 密钥的文件名。

postgres_ssl_cert

postgresql_tls_cert

安装程序目录中数据库服务器 PKI 证书的文件名。只有在使用第三方数据库时,安装程序管理的数据库服务器才需要此变量。

postgres_ssl_key

postgresql_tls_key

安装程序目录中的数据库服务器 PKI 密钥的文件名。只有在使用第三方数据库时,安装程序管理的数据库服务器才需要此变量。

automationedacontroller_ssl_cert

eda_tls_cert

安装程序目录中的 Event-Driven Ansible 控制器 PKI 证书的文件名。

automationedacontroller_ssl_key

eda_tls_key

安装程序目录中的 Event-Driven Ansible 控制器 PKI 密钥的文件名。

-

gateway_tls_cert

安装程序目录中平台网关 PKI 证书的文件名。

-

gateway_tls_key

安装程序目录中平台网关 PKI 密钥的文件名。

当使用负载均衡器部署多个平台网关时,gateway_tls_certgateway_tls_key 都由每个平台网关共享。要防止主机名不匹配,证书 的通用名称 (CN)必须与负载均衡器使用的 DNS FQDN 匹配。如果您的机构策略需要每个服务的唯一证书,每个证书都需要一个与用于负载均衡服务的 DNS FQDN 匹配的 主题 Alt Name (SAN)。要在每个平台网关上安装唯一证书和密钥,安装清单文件中的证书和密钥变量必须定义为每个主机变量,而不是在 [all:vars] 部分中。例如:

[automationgateway]
gateway0.example.com gateway_tls_cert=/path/to/cert0 gateway_tls_key=/path/to/key0
gateway1.example.com gateway_tls_cert=/path/to/cert1 gateway_tls_key=/path/to/key1

[automationcontroller]
controller0.example.com web_server_ssl_cert=/path/to/cert0 web_server_ssl_key=/path/to/key0
controller1.example.com web_server_ssl_cert=/path/to/cert1 web_server_ssl_key=/path/to/key1
controller2.example.com web_server_ssl_cert=/path/to/cert2 web_server_ssl_key=/path/to/key2

[automationhub]
hub0.example.com automationhub_ssl_cert=/path/to/cert0 automationhub_ssl_key=/path/to/key0
hub1.example.com automationhub_ssl_cert=/path/to/cert1 automationhub_ssl_key=/path/to/key1
hub2.example.com automationhub_ssl_cert=/path/to/cert2 automationhub_ssl_key=/path/to/key2

2.2.4. 使用 ansible vault 保护敏感变量

Ansible Automation Platform 的安装清单文件包含多个敏感变量,如默认的管理和数据库密码。默认情况下,它们以纯文本形式存储。通过使用 Ansible Vault 保护敏感值,基于 RPM 和容器化 Ansible Automation Platform 安装都受益于更高的安全性、密码假设和可维护性。

要创建 Ansible vault 文件,请使用以下流程:

流程

  1. 使用以下命令进入安装目录:

    cd /path/to/ansible-automation-platform-setup-bundle-2.5-<version>

  2. 使用以下命令创建 vault 文件:

    ansible-vault create vault.yml

  3. 出现提示时,输入 vault 密码 This password to access or modify the vault,对于 day-two 操作(如 backup 和 reconfigurations )需要这个密码。

    重要

    具有特殊字符的密码必须采用双引号。

  4. 根据您的机构安全策略(例如,使用密码管理器或 vault 服务)安全地存储 vault 密码。
  5. 将敏感变量添加到密码库,并确保它们没有在清单文件中定义。

要编辑 vault 文件,请使用:

ansible-vault edit <file>

对于基于 RPM 的安装,您可以在执行设置脚本时在运行时提供 Ansible vault。

在 vault 文件中添加以下敏感变量:

admin_password: <secure_password>
pg_password: <secure_password>
automationgateway_admin_password: <secure_password>
automationgateway_pg_password: <secure_password>
automationhub_admin_password: <secure_password>
automationhub_pg_password: <secure_password>
automationedacontroller_admin_password: <secure_password>
automationedacontroller_pg_password: <secure_password>

*In the case of a connected installation:

registry_password: <secure_cdn_password>

要在安装过程中使用 vault,请使用以下流程:

流程

  1. 确保 vault 文件(如 vault.yml )包含所有所需的敏感变量。
  2. 使用以下命令运行安装:

    ./setup.sh -e @vault.yml –ask-vault-pass

使用这个流程可确保安装程序从密码库读取加密变量并提示输入 vault 密码。

2.2.4.2. 使用外部 vault 文件进行容器化安装

对于 Ansible Automation Platform 的容器化安装,请使用提供的自动化执行 playbook 和外部 vault 文件。

在 vault 文件中添加以下敏感变量:

postgresql_admin_password:  <secure_password>
gateway_admin_password:  <secure_password>
gateway_pg_password:  <secure_password>
controller_admin_password:  <secure_password>
controller_pg_password:  <secure_password>
hub_admin_password:  <secure_password>c
hub_pg_password:  <secure_password>
eda_admin_password:  <secure_password>
eda_pg_password: <secure_password>

*In the case of a connected installation:

registry_password: <secure_cdn_password>

要将新的 Ansible 库与安装程序搭配使用,请使用以下流程:

流程

  1. 确保您的 vault 文件(如 vault.yml )包含所有所需的敏感变量。
  2. 使用以下命令运行容器安装程序:

    ansible-playbook ansible.containerized_installer.install -e @vault.yml -ask-become-pass.

确保 vault 文件位于工作目录中,或者提供完整路径。不要在 明文 清单文件中重复加密的变量。

2.2.5. 合规配置集注意事项

在许多环境中,Ansible Automation Platform 可能需要安装在 Red Hat Enterprise Linux 系统上,其中使用安全控制来满足合规性配置文件的要求,如 CIS Critical 安全控制、支付卡行业/数据 安全标准(PCI/DSS)、DISA STIG 或类似的配置集。在这些环境中,可能需要修改一组特定的安全控制来让 Ansible Automation Platform 正确运行。将任何合规配置集控制应用到在安装前用于 Ansible Automation Platform 的 Red Hat Enterprise Linux 服务器,然后根据需要修改以下安全控制。

在需要这些控制的环境中,讨论使用安全审核员关闭控制。

2.2.5.1. fapolicyd

合规策略可能需要 fapolicyd 守护进程正在运行。但是,当 fapolicyd 为 enforcing 策略时,Ansible Automation Platform 目前不支持,因为这会导致 Ansible Automation Platform 的安装和操作过程中失败。因此,安装程序会运行一个 pre-flight 检查,如果发现 fapolicyd 处于 enforcing 策略,则会停止安装。本指南建议在 Ansible Automation Platform 上将 fapolicyd 设置为 permissive 模式,执行以下步骤:

  1. 编辑文件 /etc/fapolicyd/fapolicyd.conf 并设置 "permissive = 1"。
  2. 使用命令重启该服务

    sudo systemctl restart fapolicyd.service

注意

如果此安全控制也应用到安装主机,默认的 fapolicyd 配置会导致 Ansible Automation Platform 安装程序失败。在这种情况下,建议在安装主机上将 fapolicyd 设置为 permissive 模式。

2.2.5.2. 使用"noexec"挂载的文件系统

合规性配置文件可能需要使用 noexec 选项挂载某些文件系统,以防止执行位于这些文件系统中二进制文件。基于 Ansible Automation Platform RPM 的安装程序运行 preflight 检查,如果以下任何文件系统是使用 noexec 选项挂载的,该检查会失败:

  • /tmp
  • /var
  • /var/tmp

要安装 Ansible Automation Platform,您必须卸载这些文件系统,并删除了 noexec 选项。安装完成后,执行以下步骤:

  1. noexec 选项重新应用到 /tmp/var/tmp 文件系统。
  2. 将自动化控制器作业执行路径从 /tmp 改为没有启用 noexec 选项的备用目录。
  3. 要进行此更改,请以管理员身份登录到自动化控制器 UI,进入 Settings 并选择 Jobs settings
  4. 将 "Job execution path" 设置改为备用目录。

在正常操作过程中,包含 /var/lib/awx 子目录的文件系统(通常为 /var)不能使用 noexec 选项挂载,或者自动化控制器无法在执行环境中运行自动化作业。

在通常审核 STIG 控制的环境中,讨论与您的安全审核员相关的 STIG 控制。

2.2.5.3. 用户命名空间

合规性配置集可能需要内核设置 user.max_user_namespaces 设置为 "0",以防止 Linux 容器启动。例如,DISA STIG 需要此控制,但仅在不需要 Linux 容器时才需要。由于 Ansible Automation Platform 可以在容器中安装和操作,并将容器用作其执行环境功能的一部分,所以需要 Linux 容器,且必须禁用此控制。

要检查 user.max_user_namespaces 内核设置,请在安装清单中的每个 Ansible Automation Platform 组件上完成以下步骤:

  1. 在命令行中登录到您的自动化控制器。
  2. 运行 sudo sysctl user.max_user_namespaces 命令。
  3. 如果输出表示值为零,请查看文件 /etc/sysctl.conf 以及 /etc/sysctl.d/ 下的所有文件,请编辑包含 user.max_user_namespaces 设置的文件,并将值设置为 "65535"。
  4. 要应用这个新值,请运行命令 sudo sysctl -p <file>,其中 & lt;file& gt; 是刚才修改的文件。
  5. 重新运行命令 sudo sysctl user.max_user_namespaces,并验证该值现在是否设置为 "65535"。

2.2.5.4. 交互式会话超时

合规性配置集可能需要强制实施交互式会话超时。例如,DISA STIG 要求所有用户在 15 分钟不活跃后自动注销。安装过程通常需要一小时或更长时间来完成,这个控制可以停止安装过程,并在安装完成前注销用户。这也适用于备份和恢复等第二天操作,在生产环境中,这些操作通常比推荐的交互式会话超时要长。在这些操作过程中,增加交互式会话超时以确保操作成功。

可以强制实施此控制的方法有多种,包括 shell 超时变量,为 systemd-logind 设置空闲会话超时,或者设置 SSH 连接超时,不同的合规性配置集可以使用这些方法中的一个或多个。最经常中断安装和第 2 天操作的超时时间是 systemd-logind 的空闲会话超时,该超时是在 DISA STIG 版本 V2R1 (Red Hat Enterprise Linux 8)和 V2R2 (Red Hat Enterprise Linux 9)中引入的。要增加 systemd-logind 的空闲会话超时,以 root 用户身份:

  • 编辑文件 /etc/systemd/logind.conf
  • 如果 StopIdleSessionSec 设置设为零,则不需要更改。
  • 如果 StopIdleSessionSec 设置非零,这表示该会话将在该秒数后终止。

    更改 StopIdleSessionSec=7200 以增加超时,然后运行 systemctl restart systemd-logind 以应用更改。

  • 完全退出交互式会话,并重新登录,以确保新设置应用到当前的登录会话。
注意

这个更改只需要在安装主机上进行,或者不使用安装主机,则运行 Ansible Automation Platform 安装程序的主机。

2.2.5.5. sudo 和 NOPASSWD

合规性配置集可能要求具有 sudo 特权的所有用户都必须提供密码(也就是说,NO PASSWD 指令不得在 sudoers 文件中使用)。Ansible Automation Platform 安装程序以特权用户身份运行许多任务,默认情况下,需要能够在不输入密码的情况下提升特权。要为安装程序提供用于提升权限的密码,请在启动 RPM 安装程序脚本时附加以下选项:

./setup.sh <setup options> --ask-become-pass.

对于基于容器的安装程序:

ansible-playbook ansible.containerized_installer.install --ask-become-pass

当安装程序运行时,会提示您输入用户的密码来提升权限。

注意

在运行安装程序时,使用 --ask-become-pass 选项也适用于备份和恢复等第二天操作。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部