2.3. 初始配置
授予对系统某些部分的访问权限会公开安全漏洞。应用以下实践来帮助保护访问:
- 最小化对系统管理帐户的访问。用户界面(Web 接口)和对运行自动化控制器的操作系统之间存在不同。系统管理员或超级用户可以访问、编辑和破坏任何系统应用程序。具有对自动化控制器的 root 访问权限的用户都可以解密这些凭据,因此尽量减少对系统管理帐户的访问对于维护安全系统至关重要。
- 最小化本地系统访问。除了用于管理目的外,自动化控制器不需要本地用户访问。非管理员用户不应该具有自动化控制器系统的访问权限。
- 强制隔离任务。不同的自动化组件可能需要在不同级别上访问系统。为每个组件使用不同的密钥或凭证,以便最小化任何一个密钥或凭证漏洞的影响。
- 将自动化控制器限制为只能进行低级自动化控制器配置和灾难恢复的最小用户集合。在自动化控制器上下文中,任何自动化控制器 '系统管理员' 或 'superuser' 帐户都可以编辑、更改和更新自动化控制器中的任何清单或自动化定义。
2.3.1. 使用配置作为代码范式 复制链接链接已复制到粘贴板!
红帽社区实践创建了一组通过集合提供的自动化内容,以将 Ansible Automation Platform 基础架构和配置作为代码进行管理。这允许通过配置即代码(CaC)实现平台本身的自动化。 虽然这种方法的许多好处很明确,但存在安全隐患。
以下 Ansible 内容集合可用于使用基础架构作为代码方法来管理 Ansible Automation Platform 组件,它们都位于 Ansible Automation Hub 上:
| 验证的集合 | 集合用途 |
|
| 用于自动化 Ansible Automation Platform 第 1 天和第 2 天操作的 Ansible 内容,包括安装、备份和恢复、证书管理等。 |
|
|
用于管理 Ansible Automation Platform 组件的创建角色集合,包括用户和组(RBAC)、项目、作业模板和工作流、凭证等。此集合包括来自旧的 |
|
| 用于创建和管理执行环境镜像或从旧的 Tower virtualenvs 迁移到执行环境的一组角色。 |
很多机构使用 CI/CD 平台来配置管道或其他方法来管理这类基础架构。但是,原生使用 Ansible Automation Platform 时,可以将 webhook 配置为原生链接基于 Git 的存储库。这样,Ansible 可以响应 Git 事件来直接触发作业模板。这消除了对整个流程的外部 CI 组件的需求,从而减少了攻击面。
这些实践支持对所有基础架构和配置的版本控制。应用 Git 最佳实践以确保代码质量检查,然后再同步到 Ansible Automation Platform。相关的 Git 最佳实践包括:
- 创建拉取请求。
- 确保检查工具已就位。
- 确保没有提交纯文本 secret。
- 确保遵循 pre-commit hook 和任何其他策略。
CAC 还鼓励使用外部 vault 系统,无需将任何敏感数据存储在存储库中,或者根据需要处理需要单独处理 vault 文件。在源代码存储库中存储 Ansible Automation Platform 配置时,这尤其重要,因为自动化控制器凭证和 Event-Driven Ansible 凭证必须以纯文本形式提供给集合变量,不应提交到源存储库。有关使用外部 vault 系统的更多信息,请参阅本指南中的 外部凭证密码库注意事项 部分。
2.3.2. 配置集中式日志记录 复制链接链接已复制到粘贴板!
集中日志记录有助于监控系统安全性并执行大规模日志分析。机密性、完整性和可用性 (CIA)三方源自美国军事和政府的想法组合,是正确安全系统开发和最佳实践的基础。集中式日志记录处于完整性方面,以帮助识别数据或系统是否被篡改。登录到集中式系统通过在单一位置收集所有日志来实现跨多个系统的故障排除自动化,因此更容易地识别问题、分析趋势以及将不同服务器的事件相关联,特别是在复杂的 Ansible Automation Platform 部署中。手动检查各个机器会非常耗时,因此除了满足安全最佳实践外,通过调试功能进行集中式日志记录。这样可确保系统整体健康和稳定性,并帮助识别潜在的安全隐患。除了日志配置外,还需要考虑因为存储容量而记录失败,同时应考虑硬件故障和高可用性架构。
还有一些额外的优点,包括:
- 数据以 JSON 格式通过 HTTP 连接发送,使用自定义处理程序中设计的最小服务特定调整或通过导入的库。对控制器最有用的数据类型是作业事实数据、作业事件/作业运行、活动流数据和日志消息。
- 通过从基础架构的不同部分分析日志来深入了解自动化过程,包括 playbook 执行详情、任务结果和系统事件。
- 通过分析执行时间和资源使用情况,识别性能瓶颈并优化 Ansible playbook。
- 集中式日志记录通过为审计提供单一数据源来帮助满足合规要求。
- 第三方与 Splunk、Logstash、Elasticure 或 Loggly 等集中式日志管理平台集成,以收集和分析日志。
日志记录聚合器服务用于以下监控和数据分析系统:
- Splunk
- Loggly
- Sumologic
- 弹性堆栈(以前称为 ELK 堆栈)
2.3.2.1. 设置日志记录 复制链接链接已复制到粘贴板!
要将日志记录设置为集中日志的任何聚合器类型,请按照以下步骤操作:
流程
-
在导航面板中,选择
。 - 在 Logging 设置页面中,单击 。
您可以配置以下选项:
- 日志记录聚合器 :输入您要将日志发送到的主机名或 IP 地址。
logging Aggregator Port :如果聚合器需要端口,请为其指定端口。
注意当连接类型是 HTTPS 时,您可以输入主机名作为带有端口号的 URL,之后不需要再次输入端口。但是,TCP 和 UDP 连接由主机名和端口号组合决定,而不是 URL。因此,对于 TCP 或 UDP 连接,请在指定字段中提供端口。如果在 Logging Aggregator 字段中输入了 URL,则将其主机名部分提取为主机名。
- 日志记录聚合器类型 :点击以从列表中选择聚合器服务:
- 日志记录聚合器用户名 :如果需要,请输入日志记录聚合器的用户名。
- 日志记录聚合器密码/令牌 :如果需要,请输入日志聚合器的密码。
-
将数据发送到日志聚合器表单的日志记录器 : 所有四种类型的数据都会默认预先填充。点字段旁的工具提示
图标了解每种数据类型的附加信息。删除您不想的数据类型。
- 集群范围的唯一标识符 :使用它来唯一标识实例。
- 日志记录聚合器协议 :点击以选择一个与日志聚合器通信的连接类型(协议)。后续选项因所选的协议而异。
- TCP 连接超时 :指定连接超时(以秒为单位)。这个选项只适用于 HTTPS 和 TCP 日志聚合器协议。
- 日志记录聚合器级别 阈值 :选择希望日志处理器报告的严重性级别。
-
可在日志操作队列中存储的最大消息数:Definess 的
rsyslog操作队列以存储的消息数量增长。这可能会影响内存用量。当队列达到这个数字的 75% 时,队列开始写入磁盘(rsyslog中的queue.highWatermark)。当它达到 90%、NotICE、INFO和DEBUG消息时,将开始丢弃(带有queue.discardSeverity=5的queue.discardMark)。 -
rsyslogd 操作排队(以 GB 为单位)的最大磁盘持久性 :如果
rsyslog操作需要时间处理传入的消息(默认为 1),则要存储的数据量(以 GB 为单位)。等同于操作中的rsyslogd queue.maxdiskspace设置(如omhttp)。它将文件存储在LOG_AGGREGATOR_MAX_DISK_USAGE_PATH指定的目录中。 -
rsyslogd 磁盘持久性的文件系统位置 :在外部日志聚合器停机后,应重试日志的位置(默认为
/var/lib/awx)。等同于rsyslogd queue.spoolDirectory设置。 - Log Format for API 4XX Errors: 配置特定的错误消息。如需更多信息,请参阅 API 4XX 错误配置。
设置以下选项:
Log System Tracking Facts Individually: 点击工具提示
图标了解其他信息,如您要将其打开还是默认关闭。
- 检查您选择的日志记录聚合的条目。
- 启用外部日志记录 :如果要将日志发送到外部日志聚合器,请选择此复选框。
- 启用/禁用 HTTPS 证书验证 :默认为 HTTPS 日志协议启用证书验证。如果您希望日志处理程序在建立连接前验证外部日志聚合器发送的 HTTPS 证书,请选择此复选框。
启用 rsyslogd 调试 :选择此复选框,为
rsyslogd启用高详细程度调试。对于为外部日志聚合调试连接问题非常有用。- 点 或 来取消更改。
2.3.2.2. 配置 LDAP 日志 复制链接链接已复制到粘贴板!
以下步骤启用 LDAP 日志记录:
要为 LDAP 启用日志记录,请使用以下流程:
流程
编辑网关设置文件:
-
在 Ansible Automation Platform2.5 容器化上,该文件为
~/aap/gateway/etc/settings.py(作为运行平台网关容器的用户)。 在基于 Ansible Automation Platform2.5 RPM 上,该文件为
/etc/ansible-automation-platform/gateway/settings.py。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在 Ansible Automation Platform2.5 容器化上,该文件为
重启平台网关服务或容器:
在 Ansible Automation Platform2.5 Containerized 上,重启平台网关服务,以便重启平台网关容器:
注意确保使用
'--user' 标志运行 systemctl,如下所示:+
$ systemctl --user restart automation-gateway在基于 Ansible Automation Platform2.5 RPM 中,使用
automation-gateway-service命令:[ automation-gateway-service restart
2.3.2.3. 实施安全控制 复制链接链接已复制到粘贴板!
以下一些满足合规要求的示例来自美国国防部 安全技术实施指南,但返回完整性和安全性最佳实践。
自动化控制器必须使用外部日志供应商,这些供应商可在独立的受保护的存储库中收集用户活动日志,以防止修改或回复。自动化控制器必须配置为使用外部日志记录来编译来自服务器中多个组件的日志记录。发生事件必须时间与时间相关,才能准确进行诊断分析。此外,关联性必须满足某些容错标准。
以下步骤实现安全控制:
流程
- 以管理员身份登录自动化控制器。
-
在导航面板中,选择
。 - 在 Logging 设置页面中,单击 。
设置以下字段:
-
将 日志记录聚合器 设置为
未配置。这是默认值。 -
将 Enable External Logging 设置为
On。 - 将 日志记录聚合器级别阈值 设置为 DEBUG。
- 将 TCP 连接超时设置为 5 (默认值)或组织超时。
-
将 Enable/disable HTTPS 证书验证 设置为
On。
-
将 日志记录聚合器 设置为
- 点击 。
自动化控制器必须分配日志记录存储容量,并在日志失败时默认关闭(除非可用性是一个覆盖问题)。当系统面临处理日志的风险时,它会检测到并采取措施来缓解故障。日志处理失败包括软件/硬件错误、日志捕获机制中的故障,以及达到或超过日志存储容量。在故障期间,必须将应用服务器配置为关闭,除非应用服务器是高可用性系统的一部分。当可用性是覆盖时,响应日志失败的其他批准操作如下:
- 如果因为缺少日志记录存储容量导致失败,则应用程序必须继续生成日志记录(如果需要,自动重启日志服务),以先先出行的方式覆盖最旧的日志记录。
如果日志记录发送到集中式集合服务器,并且与这个服务器的通信丢失或者服务器失败,应用程序必须在恢复通信前在本地对日志记录进行队列记录,或直到手动检索日志记录为止。在恢复与集中式集合服务器的连接后,必须采取措施将本地日志数据与集合服务器同步。
以下步骤实现安全控制:
打开 Web 浏览器,进入日志记录 API
/api/v2/settings/logging/确保您作为自动化控制器管理员进行身份验证。
在 Content 部分中,修改以下值:
-
LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GB= 日志缓冲的定义要求。 -
LOG_AGGREGATOR_MAX_DISK_USAGE_PATH=/var/lib/awx..Click .
-
2.3.2.4. 为每个主机实施安全控制 复制链接链接已复制到粘贴板!
自动化控制器的日志文件必须通过明确定义的特权访问。自动化控制器日志文件的保密性会导致攻击者识别他们可能无法获取的系统的关键信息,使它们能够枚举更多信息以启用升级或随后的移动。
要实现安全控制,请使用以下流程:
流程
作为每个自动化控制器主机的系统管理员,设置自动化控制器 NGINX 日志目录的权限和所有者:
-
chmod 770 /var/log/nginx -
chown nginx:root /var/log/nginx
-
设置自动化控制器日志目录的权限和所有者:
-
chmod 770 /var/log/tower -
chown awx:awx /var/log/tower
-
设置自动化控制器 supervisor 日志目录的权限和所有者:
-
chmod 770 /var/log/supervisor/ -
chown root:root /var/log/supervisor/
-
在日志子系统失败时,自动化控制器必须配置为切换到另一个系统。自动化控制器主机必须能够切换到另一个自动化控制器主机,这些自动化控制器主机可以在检测应用程序日志处理失败时处理应用程序和日志记录功能。这可实现应用程序的持续操作和日志记录功能,同时尽量减少用户丢失和日志数据的操作。
- 如果自动化控制器不在 HA 配置中,管理员必须重新安装自动化控制器。
2.3.3. 为系统管理员实施安全控制 复制链接链接已复制到粘贴板!
自动化控制器必须生成适当的日志记录。自动化控制器的 Web 服务器必须记录与用户会话相关的所有详细信息,以支持故障排除、调试和取取分析。如果没有数据日志记录功能,组织会丢失重要审计和分析工具,以进行事件调查。
使用以下步骤将安全控制作为每个自动化控制器主机的系统管理员实现:
流程
-
在导航面板中,选择
。此时会显示 System Settings 页面。 - 点 。
设置以下内容:
- 启用活动流 = On
- 为清单同步启用活动流 = On
- 机构管理员可以管理用户和团队 = On
- 机构管理员可见所有用户 = On
- 点击 。
2.3.4. 外部凭证库注意事项 复制链接链接已复制到粘贴板!
Secret 管理是维护安全自动化平台的基本组件。我们推荐以下 secret 管理实践:
- 确保没有对系统的访问权限的未授权用户,并确保只有需要访问权限的用户才被授予它。自动化控制器会加密密码和 API 令牌等敏感信息,但也存储密钥来解密。授权用户可能可以访问所有内容。
- 使用外部系统管理 secret。如果需要更新凭证,外部系统就可以检索更新的凭证,其复杂性比内部系统复杂。用于管理 secret 的外部系统包括 CyberArk、HashiCorp Vault、Microsoft Azure Key Management 等。如需更多信息,请参阅使用自动化执行的 Secret 管理系统 部分。