Documentation

15. 安全性最佳实践

标准 Ansible Tower 设置的安全性适用于自动部署典型的环境。但是,在管理特定操作系统环境、自动化和自动化平台时,可能需要一些额外的最佳实践才能确保其安全性。本文档介绍了在自动化环境中确保安全性的最佳实践。

15.1. 通用最佳实践

应用程序的安全性会受底层系统安全性的影响。为了确保 Red Hat Enterprise Linux 的安全性,请参阅:

15.2. 了解 Ansible 和 Tower 的架构

Ansible 和 Ansible Tower 的一个通用目的是提供一个自动化平台。这意味着,一旦启动了一个 Ansible playbook(通过 Tower,或直接通过命令行),playbook、清单和 Ansible 的凭证将被视为可靠的来源。如果特定的安全政策需要针对特定 playbook 内容、作业定义或清单内容进行外部验证,这些过程必须在自动化操作启动(无论是通过 Tower Web UI 或 Tower API) 之前进行。

使用源控制、分支和强制代码审核是 Ansible 自动化的最佳方法。有很多工具可帮助以这种方式创建使用源控制的进程流。

在更高的级别上,有很多工具允许针对任意工作流创建批准和基于策略的操作,包括自动化。这些工具可通过 Tower 的 API 来使用 Ansible 执行自动化。

15.3. 授予访问权限

授予系统某些部分的访问权限可能会带来安全隐患。请应用以下方法帮助保证访问安全:

15.3.1. 保持管理帐户的最小化

限制对系统管理帐户的访问最小化对维护一个安全系统至关重要。系统管理员/root 用户可以访问、编辑和破坏任何系统应用程序。因此,尽量使具有 root 访问权限的用户和组量少。不要为不信任的用户分配 sudo rootawx 的权限。当通过某些机制(如 sudo)为用户提供了受限的管理访问权限时,这些访问权限仍有可能进行大量操作。允许执行 shell 的命令,或可以修改文件的任何命令,都应该视为等同于具有完整的 root 访问权限。

在 Tower 中,任何 Tower ‘系统管理员’ 或 'superuser' 帐户都可以编辑、修改和更新 Tower 中的任何清单或自动化定义。这只应该分配给尽量少的、需要进行底层 Tower 配置和灾难恢复的用户。

15.3.2. 最小化本地系统访问

根据最佳实践方案原则,除了用于管理目的之外,Ansible Tower 不需要进行本地用户访问。非管理员用户不应该具有可以访问 Tower 所在系统的权限。

15.3.3. 删除用户对凭证的访问

如果自动化凭证仅存储在 Tower 中,则可进一步加以保护。OpenSSH 等服务可以配置为只允许来自特定地址的连接使用凭证.。自动化使用的凭证可能与系统管理员用于灾难恢复或其他 ad-hoc 管理的凭证不同,以允许更轻松地进行审核。

15.3.4. 强制隔离任务

不同的自动化任务可能需要对一个系统有不同的访问级别。例如,您可能需要进行底层的系统自动化来应用补丁或执行安全检查;也可能需要进行高层的自动化来部署应用程序。通过对不同的自动化操作使用不同的密钥或凭证,可以最小化一个关键安全漏洞对系统的不良影响,同时可简化基准审核。

15.4. 可用资源

Tower 和其它地方提供了一些资源来保证系统的安全性。请考虑使用以下功能:

15.4.1. 审计和日志记录功能

对于任何管理访问,审核和监视都非常关键。对于整个系统来说,可以使用内置的审计功能支持 (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/chap-system_auditing.html)) 以及内置的日志功能支持。

Ansible Tower 使用内置的 Activity Stream 支持,它可以记录 Tower 内部的所有更改,以及自动化日志。

最佳实践推荐集中进行日志收集和审核,而不是在本地系统中进行。建议将 Ansible Tower 配置为在您的环境中使用任何 IDS 和/或日志/审核 (Splunk) 标准。Ansible Tower 包括了内置的、针对 Elastic Stack, Splunk, Sumologic, Loggly 和其他系统的日志集成功能。详情请参阅 Tower 日志记录和聚合

15.4.2. 现有安全功能

不要禁用 SELinux,也不要禁用 Tower 现存的多用户限制机制。使用 Tower 的角色访问控制 (RBAC) 来代表运行自动化所需的最低级别权限。使用 Tower 的团队(Team)来为用户组分配权限,而不是单独为用户分配权限。详情请参阅 Ansible Tower User Guide 中的 基于角色的访问控制

15.4.3. 外部帐户存储

对于一个大型机构,在 Tower 中维护完整的用户会非常耗时,且容易出错。Ansible Tower 支持通过 LDAPSAML 2.0 和特定的:ref:OAuth providers <ag_authentication> 连接到外部账户源。