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 安装程序,如 自动化平台规划指南中所述,按照 Automation Platform 安装指南中所述 创建安装程序清单文件。此清单文件用于升级、添加基础架构组件和由安装程序执行第二天操作,因此在安装后保留 文件以备将来使用。

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

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

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

下表列出了一些与安全相关的变量,以及它们的建议值用于创建安装清单。

表 2.3. 与安全相关的清单变量

变量

推荐的值

详情

postgres_use_ssl

true

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

pg_sslmode

verify-full

默认情况下,当控制器连接到数据库时,它会尝试加密的连接,但不会强制执行它。将此变量设置为 "verify-full" 需要控制器和数据库之间的 mutual TLS 协商。postgres_use_ssl 变量还必须设置为 "true",以便此 pg_sslmode 生效。

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

nginx_disable_https

false

如果设置为 "true",则此变量禁用到控制器的 HTTPS 连接。默认值为 "false",因此如果安装程序清单中没有此变量,它实际上与将变量明确定义为 "false"。

automationhub_disable_https

false

如果设置为 "true",则此变量禁用到私有自动化中心的 HTTPS 连接。默认值为 "false",因此如果安装程序清单中没有此变量,它实际上与将变量明确定义为 "false"。

automationedacontroller_disable_https

false

如果设置为 "true",则此变量禁用到 Event-Driven Ansible 控制器的 HTTPS 连接。默认值为 "false",因此如果安装程序清单中没有此变量,它实际上与将变量明确定义为 "false"。

在负载均衡器用于多个控制器或 hub 的参考架构中,SSL 客户端连接可以在负载均衡器终止,或传递给单独的 Ansible Automation Platform 服务器。如果 SSL 在负载均衡器终止,本指南建议流量从负载均衡器重新加密到单个 Ansible Automation Platform 服务器,以确保使用端到端加密。在这种情况下,表 2.3 中列出的 *_disable_https 变量会保留默认值 "false"。

注意

本指南建议在生产环境中使用外部数据库,但对于开发和测试场景,数据库可以并置到自动化控制器上。由于当前的 PostgreSQL 13 限制,当数据库位于自动化控制器上时,设置 pg_sslmode = verify-full 会导致在 TLS 协商过程中验证主机名的错误。在解决此问题前,必须使用外部数据库来确保自动化控制器和数据库之间的 mutual TLS 身份验证。

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

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

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

表 2.4. PKI 证书清单变量

变量

详情

custom_ca_cert

安装程序目录中的 CA 证书的文件名。

web_server_ssl_cert

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

web_server_ssl_key

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

automationhub_ssl_cert

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

automationhub_ssl_key

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

postgres_ssl_cert

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

postgres_ssl_key

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

automationedacontroller_ssl_cert

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

automationedacontroller_ssl_key

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

当使用负载均衡器部署多个自动化控制器时,web_server_ssl_certweb_server_ssl_key 会为每个控制器共享。要防止主机名不匹配,证书的通用名称(CN)必须与负载均衡器使用的 DNS FQDN 匹配。这在部署多个私有自动化中心和 automationhub_ssl_certautomationhub_ssl_key 变量时也适用。如果您的机构策略为每个服务都需要唯一的证书,每个证书都需要一个 Subject Alt Name (SAN),它与用于负载均衡服务的 DNS FQDN 匹配。要在每个自动化控制器上安装唯一的证书和密钥,安装清单文件中的证书和密钥变量必须定义为每个主机变量,而不是在 [all:vars] 部分中。例如:

[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 Automation Platform 使用的初始密码,它们通常以纯文本形式保存在清单文件中。为防止未经授权的查看这些变量,您可以将这些变量保存在加密的 Ansible vault 中。要做到这一点,进入安装程序目录并创建 vault 文件:

  • cd /path/to/ansible-automation-platform-setup-bundle-2.4-1-x86_64
  • ansible-vault create vault.yml

系统将提示您输入新 Ansible vault 的密码。不要丢失 vault 密码,因为每次需要访问 vault 文件时都需要它,包括在第二天操作和执行备份过程中。您可以通过将 vault 密码存储在加密的密码管理器中或根据您的组织策略安全地存储密码来保护 vault 密码。

在密码库中添加敏感变量,例如:

admin_password: <secure_controller_password>
pg_password: <secure_db_password>
automationhub_admin_password: <secure_hub_password>
automationhub_pg_password: <secure_hub_db_password>
automationhub_ldap_bind_password: <ldap_bind_password>
automationedacontroller_admin_password: <secure_eda_password>
automationedacontroller_pg_password: <secure_eda_db_password>

确保安装清单文件中不存在这些变量。要将新的 Ansible 库与安装程序搭配使用,请使用命令 ./setup.sh -e @vault.ymlcategories-unmarshal--ask-vault-pass 来运行。

2.2.5. 自动化控制器 STIG 注意事项

对于使用 Defense Information Systems Agency (DISA)安全技术实施指南(STIG)作为其整体安全策略的一部分,现在提供了 用于 Ansible Automation Platform 自动化控制器的 STIG。STIG 目前仅涵盖 Ansible Automation Platform 的自动化控制器组件。将 STIG 应用到自动化控制器时,需要注意很多注意事项。

自动化控制器 STIG 概述文档指出它要与 Red Hat Enterprise Linux 8 的 STIG 一起使用。此版本的自动化控制器 STIG 在 Red Hat Enterprise Linux 9 可用前发布,因此在应用自动化控制器 STIG 时,Red Hat Enterprise Linux 8 应该用作底层主机操作系统。某些 Red Hat Enterprise Linux 8 STIG 控制将与 Ansible Automation Platform 安装和操作冲突,如以下部分所述。

2.2.5.1. fapolicyd

Red Hat Enterprise Linux 8 STIG 要求 fapolicyd 守护进程正在运行。但是,当 fapolicyd enforcing 策略时不支持 Ansible Automation Platform,因为这会导致 Ansible Automation Platform 的安装和操作失败。因此,安装程序运行一个 pre-flight 检查,如果发现 fapolicyd 是 enforcing 策略,它将停止安装。本指南推荐按照以下流程在自动化控制器中将 fapolicyd 设置为 permissive 模式:

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

在常规审核 STIG 控制的环境中,讨论通过安全审核员实现与 fapolicy 相关的 STIG 控制。

注意

如果 Red Hat Enterprise Linux 8 STIG 也应用于安装主机,默认的 fapolicyd 配置会导致 Ansible Automation Platform 安装程序失败。在这种情况下,建议在安装主机上将 fapolicyd 设置为 permissive 模式。

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

Red Hat Enterprise Linux 8 STIG 要求使用 noexec 选项挂载了大量文件系统,以防止执行这些文件系统中的二进制文件。Ansible Automation Platform 安装程序运行 preflight 检查,如果以下文件系统使用 noexec 选项挂载,该检查将失败:

  • /tmp
  • /var
  • /var/tmp

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

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

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

在常规审核 STIG 控制的环境中,通过安全审核员讨论与文件系统相关的 STIG 控制。

2.2.5.3. 用户命名空间

Red Hat Enterprise Linux 8 STIG 要求内核设置 user.max_user_namespaces 设置为 "0",但只有 Linux 容器没有使用。因为 Ansible Automation Platform 使用容器作为其执行环境功能的一部分,所以这个 STIG 控制不适用于自动化控制器。

要检查 user.max_user_namespaces 内核设置,请完成以下步骤:

  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. sudo 和 NOPASSWD

Red Hat Enterprise Linux 8 STIG 要求具有 sudo 权限的所有用户都必须提供密码(即,sudoers 文件中不能使用"NOPASSWD"指令)。Ansible Automation Platform 安装程序以特权用户身份运行许多任务,默认情况下,它预期可以在无需密码的情况下提升特权。要为安装程序提升权限提供安装程序密码,请在启动安装程序脚本时附加以下选项: ./setup.sh <setup options>categories-ProductShortName--ask-become-pass

这也适用于为备份和恢复等第二天操作运行安装程序脚本。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.