第 3 章 受管节点配置


Ansible Automation Platform 是一个无代理技术,它依赖于与它管理的设备(称为受管节点)进行远程连接来运行自动化任务。

本章提供了改进 Ansible Automation Platform 自动化受管节点的安全性问题,包括 Ansible Automation Platform 和受管节点之间的远程连接。

请注意,受管节点配置可能会根据操作系统、合规性配置集、配置和机构策略等因素而有所不同。

在实施前,此处提供的受管节点配置的任何建议都必须进行全面的测试和检查,以确保它们满足机构策略和要求。

3.1. Red Hat Enterprise Linux 受管节点配置

下面的部分提供了 Red Hat Enterprise Linux (RHEL)受管节点的指导,但概念可能也适用于其他 Linux 发行版。

提供了用于手动配置 RHEL 受管节点的示例。这些步骤也可以使用 Ansible Automation Platform 自动执行,或者可以添加到使用 Red Hat Insights 镜像构建程序等工具创建的 标准操作环境 (SOE)或"冷镜像"中。

3.1.1. 创建具有访问限制的专用服务帐户

Ansible Automation Platform 可以配置为使用各种用户或帐户连接到受管节点。

本指南建议为这一目的创建一个单一的专用服务帐户。此服务帐户必须是每个受管节点上的本地帐户,以确保自动化作业继续运行,即使外部身份验证机制遇到中断。这个建议适用,除非机构策略强制集中管理的服务帐户。服务帐户必须清楚地命名,以指示其用途,例如 ansibleaapsvc

本节的其余部分使用 "ansible" 作为示例中本地服务帐户的假定名称。

本地服务帐户以以下方式配置:

  • 它被授予足够权限来运行任何所需的自动化作业。
  • 仅限于 SSH 密钥身份验证。不允许使用密码身份验证。
  • 只有从 Ansible Automation Platform {ControllerNames}s 和执行节点的连接授予访问权限。

    注意

    要以服务帐户以外的用户身份在 Ansible playbook 或作业模板中执行任务,请使用 becomebecome_user 关键字。不需要以其他用户身份连接到受管节点。

  • useradd 命令可用于创建本地服务帐户。例如:
sudo useradd ansible \
    --system --create-home \
    --comment "Ansible Automation Platform service account"
Copy to Clipboard Toggle word wrap

3.1.1.1. 为服务帐户配置 sudo 权限

服务帐户需要足够的权限才能在受管节点上运行任何当前或将来的自动化作业。本节介绍 sudo 的使用,但其他特权升级方法可用。

由于 Ansible Automation Platform 默认为在基于 Linux 的受管节点上使用 ansible.builtin.sudo become 插件,因此该服务帐户必须使用 sudo 命令在 RHEL 受管节点上运行任何命令。

要配置此功能,请使用以下流程:

流程

  1. 创建文件 /etc/sudoers.d/ansible,并包含以下内容:

    # Rules for the ansible service account
    ansible ALL=(ALL) NOPASSWD: ALL
    Copy to Clipboard Toggle word wrap
  2. 对文件设置限制权限:

    sudo chmod 600 /etc/sudoers.d/ansible'

  3. 验证该文件是否使用正确的语法:

    sudo visudo -cf /etc/sudoers.d/ansible

3.1.1.2. 为服务帐户需要 SSH 密钥身份验证

该服务帐户不得被允许使用带有与受管节点的 SSH 连接的密码身份验证。

使用以下步骤配置 SSH 守护进程:

流程

  1. 创建文件 /etc/sshd/sshd_config.d/60-ansible.conf,并包含以下内容:

    # sshd config applied to the ansible service account
    Match User ansible
    	PasswordAuthentication no
    Match all
    Copy to Clipboard Toggle word wrap
  2. 验证该文件是否使用正确的语法:

    sudo sshd -t

  3. 重启 SSH 守护进程

    sudo systemctl restart sshd.service

假设禁止密码身份验证,则必须将至少一个 SSH 公钥附加到服务帐户的 authorized_keys 文件(通常位于 /home/ansible/.ssh/authorized_keys)。

这些公钥必须与用于在 Ansible Automation Platform 中建立机器凭证的私钥对应,因为这些凭证有助于连接到 RHEL 受管节点。

本指南为单个服务帐户提供与受管 RHEL 节点的连接,但这并不意味着在所有节点上使用单个 SSH 密钥。在大型组织中,管理 RHEL 服务器的单个团队可以在 Ansible Automation Platform 中生成自己的机器凭证。然后,团队可以在其特定 RHEL 服务器上的授权密钥文件中添加对应的密钥。这种方法确保通过使用通用服务帐户在机构范围内一致访问受管节点,同时让每个团队独立管理其分配节点的凭据。

3.1.1.3. 为服务帐户启用和配置 pam_access 控制

要限制来自 Ansible Automation Platform 自动化控制器和执行节点的远程登录访问,并确保服务帐户完全被 Ansible Automation Platform 使用,请使用以下步骤:

流程

  1. 使用自动化控制器和执行节点的 FQDN,使用控制器节点和执行节点的 FQDN 将以下内容添加到 /etc/security/access.conf 文件中:

    # allow the ansible service account to log in from local sources and
    # the hybrid controller or execution nodes, and deny all other sources
    +:ansible:LOCAL controller1.example.com controller2.example.com en1.example.com
    -:ansible:ALL
    Copy to Clipboard Toggle word wrap
  2. 在当前 authselect 配置集中启用 with-pamaccess 功能。RHEL 默认包括的所有 authselect 配置集都有此功能。

    sudo authselect enable-feature with-pamaccess

3.1.2. 合规配置集注意事项

在许多环境中,您可以使用 Ansible Automation Platform 管理将安全控制应用到受管 RHEL 节点的系统,以满足合规性配置文件的要求,如 CIS、PCI/DSS、DISA STIG 或类似。以下小节详细介绍了必须修改 Ansible Automation Platform 的特定安全控制集合,以便在这样的环境中正确管理 RHEL 节点。

3.1.2.1. 受管 RHEL 节点上的 fapolicyd

当针对 RHEL 受管节点运行 Ansible Automation Platform 作业时,大多数任务都通过将 Python 代码复制到受管节点来执行,然后在本地执行。如果在受管节点上启用了 fapolicyd 服务,则作业将失败,因为 RHEL 附带的默认规则集可防止这个 Python 代码运行。

要防止这个问题发生,请使用以下方法之一:

  • 选项 1:将 fapolicyd 服务设置为 permissive 模式
  • 选项 2:创建自定义 fapolicyd 规则

fapolicyd 服务可以被设置为 "permissive" 模式,这意味着它只记录 fapolicyd 规则违反情况,而不是强制执行它们。

要为 fapolicyd 配置 permissive 模式,请使用以下流程:

流程

  1. 编辑文件 /etc/fapolicyd/fapolicyd.conf,并设置 "permissive = 1"。
  2. 运行 systemctl restart fapolicyd.service 重启 fapolicy 服务。

在此配置不符合所需的合规性配置集或本地策略的环境中,讨论与您的安全审核员相关的安全控制。

3.1.2.3. 选项 2:创建自定义 fapolicyd 规则

如果 fapolicyd 服务必须强制执行其规则,请考虑设计一组自定义规则来允许 Ansible Automation Platform 执行其 Python 代码。

以下示例流程将 "ansible" 服务帐户视为可信实体,并使它在本地 Ansible 临时目录中执行内容(默认为 $HOME/.ansible/tmp)。

流程

  1. 使用以下内容创建文件 /etc/fapolicy/rules.d/50-ansible.rules

    allow perm=any uid=ansible trust=1 : dir=/home/ansible/.ansible/tmp/

  2. 重启 fapolicyd 服务:

    sudo systemctl restart fapolicyd.service

这个示例规则可能需要修改来与受管 RHEL 节点上存在的任何其他 fapolicyd 规则一起使用,在投入生产前,安全审核员必须经过全面测试和批准。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat