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. 使用用户提供的 PKI 证书安装
默认情况下,Ansible Automation Platform 为平台 的基础架构组件创建自签名公钥基础架构 (PKI)证书。如果现有的 PKI 基础架构可用,必须为自动化控制器、私有自动化中心、EventDriven Ansible 控制器和 postgres 数据库服务器生成证书。将证书文件及其相关密钥文件复制到安装程序目录中,以及用于验证证书的 CA 证书。
使用以下清单变量使用新证书配置基础架构组件。
RPM 变量 | 容器化变量 | 详情 |
|
| 自定义 CA 证书文件的路径。 如果设置,这将把自定义 CA 证书安装到系统信任存储中。 |
|
| 位于安装程序目录中的自动化控制器 PKI 证书的文件名。 |
|
| 安装程序目录中自动化控制器 PKI 密钥的文件名。 |
|
| 安装程序目录中的私有自动化中心 PKI 证书的文件名。 |
|
| 安装程序目录中的私有自动化中心 PKI 密钥的文件名。 |
|
| 安装程序目录中数据库服务器 PKI 证书的文件名。只有在使用第三方数据库时,安装程序管理的数据库服务器才需要此变量。 |
|
| 安装程序目录中的数据库服务器 PKI 密钥的文件名。只有在使用第三方数据库时,安装程序管理的数据库服务器才需要此变量。 |
|
| 安装程序目录中的 Event-Driven Ansible 控制器 PKI 证书的文件名。 |
|
| 安装程序目录中的 Event-Driven Ansible 控制器 PKI 密钥的文件名。 |
- |
| 安装程序目录中平台网关 PKI 证书的文件名。 |
- |
| 安装程序目录中平台网关 PKI 密钥的文件名。 |
当使用负载均衡器部署多个平台网关时,gateway_tls_cert
和 gateway_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.3. 安装清单中的敏感变量
安装清单文件包含多个敏感变量,主要是用来设置 Ansible Automation Platform 使用的初始密码,这些变量通常保留在清单文件中。为了防止未授权查看这些变量,您可以将这些变量保留在加密的 Ansible vault 中。要做到这一点,进入安装程序目录并创建 vault 文件:
-
cd /path/to/ansible-automation-platform-setup-bundle-2.5-1-x86_64
-
ansible-vault create vault.yml
系统将提示您输入新的 Ansible 库的密码。不要丢失 vault 密码,因为每次需要访问 vault 文件时需要它,包括在第二天操作并执行备份过程中。您可以将 vault 密码存储在加密的密码管理器中,或根据机构策略安全地存储密码来保护 vault 密码。
在密码库中添加敏感变量,例如:
admin_password/controller_admin_password: <secure_controller_password> pg_password/controller_pg_password: <secure_db_password> automationhub_admin_password/hub_admin_password: <secure_hub_password> automationhub_pg_password/hub_pg_password: <secure_hub_db_password> automationedacontroller_admin_password/eda_admin_password: <secure_eda_password> automationedacontroller_pg_password/eda_pg_password: <secure_eda_db_password> -/gateway_admin_password: <secure_gateway_password> -/gateway_pg_password:<secure_gateway_db_password>
确保安装清单文件中也不存在这些变量。要将新的 Ansible vault 与安装程序搭配使用,请使用命令 ./setup.sh -e @vault.yml swig-wagon--ask-vault-pass
来运行。
2.2.4. 合规配置集注意事项
在许多环境中,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.4.1. fapolicyd
合规策略可能需要 fapolicyd
守护进程正在运行。但是,当 fapolicyd
为 enforcing 策略时,Ansible Automation Platform 目前不支持,因为这会导致 Ansible Automation Platform 的安装和操作过程中失败。因此,安装程序会运行一个 pre-flight 检查,如果发现 fapolicyd
处于 enforcing 策略,则会停止安装。本指南建议在 Ansible Automation Platform 上将 fapolicyd
设置为 permissive 模式,执行以下步骤:
-
编辑文件
/etc/fapolicyd/fapolicyd.conf
并设置 "permissive = 1"。 使用命令重启该服务
sudo systemctl restart fapolicyd.service
如果此安全控制也应用到安装主机,默认的 fapolicyd
配置会导致 Ansible Automation Platform 安装程序失败。在这种情况下,建议在安装主机上将 fapolicyd
设置为 permissive 模式。
2.2.4.2. 使用"noexec"挂载的文件系统
合规性配置文件可能需要使用 noexec
选项挂载某些文件系统,以防止执行位于这些文件系统中二进制文件。基于 Ansible Automation Platform RPM 的安装程序运行 preflight 检查,如果以下任何文件系统使用 noexec
选项挂载,则会失败:
-
/tmp
-
/var
-
/var/tmp
要安装 Ansible Automation Platform,您必须卸载这些文件系统,并删除了 noexec
选项。安装完成后,执行以下步骤:
-
将
noexec
选项重新应用到/tmp
和/var/tmp
文件系统。 -
将自动化控制器作业执行路径从
/tmp
改为没有启用noexec
选项的备用目录。 - 要进行此更改,请以管理员身份登录到自动化控制器 UI,进入 Settings 并选择 Jobs settings。
- 将 "Job execution path" 设置改为备用目录。
在正常操作过程中,包含 /var/lib/awx
子目录的文件系统(通常为 /var
)不能使用 noexec
选项挂载,或者自动化控制器无法在执行环境中运行自动化作业。
在通常审核 STIG 控制的环境中,讨论与您的安全审核员相关的 STIG 控制。
2.2.4.3. 用户命名空间
合规性配置集可能需要内核设置 user.max_user_namespaces
设置为 "0",以防止 Linux 容器启动。例如,DISA STIG 需要此控制,但仅在不需要 Linux 容器时才需要。由于 Ansible Automation Platform 可以在容器中安装和操作,并将容器用作其执行环境功能的一部分,所以需要 Linux 容器,且必须禁用此控制。
要检查 user.max_user_namespaces
内核设置,请在安装清单中的每个 Ansible Automation Platform 组件上完成以下步骤:
- 在命令行中登录到您的自动化控制器。
-
运行
sudo sysctl user.max_user_namespaces
命令。 -
如果输出表示值为零,请查看文件
/etc/sysctl.conf
以及/etc/sysctl.d/
下的所有文件,请编辑包含user.max_user_namespaces
设置的文件,并将值设置为 "65535"。 -
要应用这个新值,请运行命令
sudo sysctl -p <file>
,其中 <file&
gt; 是刚才修改的文件。 -
重新运行命令
sudo sysctl user.max_user_namespaces
,并验证该值现在是否设置为 "65535"。
2.2.4.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.4.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
选项也适用于备份和恢复等第二天操作。