我们希望听到您的意见!帮助我们深入了解 Ansible 生态系统的现状。
参加 2024 年 Ansible 项目调查

持续检测和缓解 (CDM)

持续检测和缓解 (CDM)

根据 NASCIO,州 CIO 的首要任务是网络安全和风险管理。此举措的一个关键重点是利用网络安全与基础设施安全局 (CISA) 提供的 持续诊断和缓解 (CDM) 框架。在这篇博文中,我们将探讨 CDM 框架的高级视图,回顾 Ansible 在安全自动化中的作用,并最终了解 Ansible 如何帮助机构在使用 CDM 框架时完成从第 0 天到第 2 天的任务。

什么是 CDM?

如今,网络威胁比以往任何时候都更加重要,这意味着网络安全和防御至关重要。国家城市联盟发布的 最新报告 显示,惊人的 44% 的地方政府报告每天甚至每小时都会遭受网络攻击。因此,看到网络安全和风险管理成为州 CIO 的首要任务也就不足为奇了。有了这些背景,让我们了解一下 CDM 计划。

CDM program diagram

来源:https://www.cisa.gov/cdm-training

CDM 框架由 CISA 定义。CDM 提供功能和工具,有助于持续识别网络安全风险,对这些风险进行优先级排序,并使网络安全人员能够根据优先级缓解这些风险。

其核心是提供工具和仪表板,使网络安全专业人员能够了解网络上有什么,谁在网络上,以及网络上发生了什么。CISA 的 CDM 正引领着这项工作,通过向联邦/州机构提供工具来降低网络风险,从而增强其监控和管理网络漏洞威胁的能力。

CDM 模型

CDM 框架提供了一个有观点的四层架构。第一层,A 层,由部署在网络中的传感器和扫描程序组成。这些扫描程序和传感器持续收集与指纹匹配的数据,并将其发送到第二层,B 层,或集成层。

CDM model layer a

第二层,B 层,对 A 层传感器和扫描程序发送的数据进行规范化。这充当相关点。

CDM model layer b

规范化后,数据将被馈送到由机构级和联邦级仪表板组成的 C&D 层。

CDM model layer c

来源: CISA 的 YouTube 频道

然后,机构安全人员查看仪表板并决定优先处理和缓解警报。

Ansible 用于安全自动化

多年来,Ansible 一直是基础设施自动化领域的主导者。Ansible 为基础设施领域带来的价值可以轻松地转化为安全自动化领域,包括

  • 提高速度:减少手动步骤和 GUI 点击次数。支持机构中众多安全解决方案之间的集成。
  • 减少人为错误:通过自动化工作流程和在时间敏感、压力大的情况下的人为操作错误来最大程度地降低风险。
  • 确保一致性:通过在多个安全工具中使用单个框架来支持可审计和可验证的安全流程。

需要保护的现代基础设施的规模和复杂性,再加上使用自动化本身带来的现代网络攻击速度带来的挑战,都需要技术来支持人工操作员。网络安全团队面临的挑战是在 CDM 架构内管理多个安全工具,在工具之间进行集成,并使用工具数据有效地管理其端点的更改。

Ansible 用于 CDM 使用案例

CDM 具有一个有观点的架构和一个 批准的产品列表,其中包含机构可以使用超过 240,000 种产品。您可以想象在涉及不同产品的机构中实施 CDM 的集成需求。Red Hat Ansible 自动化平台是 CDM 使用案例批准的产品之一。那么 Ansible 在这个四层 CDM 模型中处于什么位置呢?让我们看看由传感器和扫描程序组成的 A 层

CDM Ansible

对于这一层,立即可见的两大用例是

  1. 日志丰富
  2. 指纹/签名更新

每次安全运营中心 (SOC) 需要对事件进行分类时,他们可能需要来自传感器或端点本身的更多详细日志。通常,这可以消除潜在的误报。手动执行此操作意味着 SOC 人员必须登录并进行这些配置更改。在整个机构中大规模执行此操作可能需要大量人工操作,并且容易出现人为错误。当然,在调查之后,需要将这些日志级别重置为标准!使用 Ansible 在调查期间自动打开日志丰富,然后在整个范围内关闭详细程度,是 CDM A 层传感器和扫描程序的有效用例。

构成 A 层的扫描程序和传感器需要根据新的攻击载体及时更新指纹。想象一下,必须手动更新数千个传感器上的这些指纹!Ansible 可以成为自动化 A 层所需的第 2 天运营任务的良好解决方案。

B 层怎么样?如果您还记得,B 层会收集来自 A 层的日志,并对数据进行规范化以及关联。

CDM model layer b with Ansible

这些设备是服务器,它们受制于自动化可以帮助的所有传统第 2 天操作,例如修补、操作系统升级和软件更新。

最后,C 和 D 层提供 SOC 人员查看和操作的仪表板。

CDM dashboard with Ansible

可以使用 Ansible playbook 在此层利用与自动化控制器的 API 集成来缓解已知漏洞。Ansible 是一个经过验证的多供应商自动化平台。机构可以通过向 Ansible 发出自动化请求来采用已知漏洞的自动化缓解措施。另一个用例是自动化分类协调的某些方面。例如,如果需要多个团队来调查某个特定警报,Ansible 可以自动向相应的团队发出工单,然后这些团队可以开始其分类(甚至可以使用 Ansible 进行该分类过程)。

总结

总之,CDM 是 CISA 制定的一个有观点的安全框架,机构将其作为解决网络安全和威胁响应的一种方式。CDM 指定了一个批准的产品列表,其中包括 Ansible 自动化平台,机构可以利用这些产品。Ansible 自动化平台可以成为自动化 CDM 不同层的宝贵平台。好处包括

  1. 传感器和扫描程序:

    • 日志丰富
    • 更新签名
  2. 集成层:

    • 修补
    • 第 2 天运营
  3. 缓解

    • 自动化缓解
    • 分类协调












深入了解 Ansible VScode 扩展

深入了解 Ansible VScode 扩展

作为 Red Hat Ansible 自动化平台一部分的 Ansible 继续发展和成熟。最近的增强功能包括 Ansible 内容集合、自动化执行环境以及使用插件和模块不断增长的集成列表。现在,新的和有经验的内容创建者比以往任何时候都更需要能够访问帮助他们更快地编写更好内容的工具。新创建的 Ansible Devtools 计划侧重于开发和增强 ansible-navigatorAnsible VScode 扩展ansible-lint 等工具,以帮助简化 Ansible 自动化内容创建者的体验。在本博文中,我们将深入探讨 Ansible VSCode 扩展,概述其工作原理以及安装后使其正常工作所需的初始设置。

演变

Ansible VSCode 扩展 最初是 Tomasz Maciążek 的 VSCode 扩展的分支。在分支之后,服务器端和客户端代码被解耦到它们自己的单独存储库中,以允许服务器和客户端的独立发布。

  1. Ansible 语言服务器
  2. Ansible VSCode 扩展

Ansible 语言服务器作为节点模块在 npm 存储库 上发布,允许其他支持语言服务器协议的编辑器重用它,而 VSCode 扩展客户端则在 市场 上发布,并具有许多其他功能。

Tomasz 继续是 Ansible 扩展的核心贡献者,我们感谢他和所有其他社区成员的贡献,帮助使扩展在每次新版本中都变得更好,以供 Ansible 内容创建者使用。

语言服务器协议 (LSP) 简介

Ansible 语言服务器实现了 语言服务器协议 (LSP),它是一个开放的、基于 JSON-RPC 的协议,用于在源代码编辑器、集成开发环境 (IDE) 和提供特定于编程语言的功能的服务器之间进行通信。该协议的目标是允许编程语言支持的实现和分发独立于任何给定的编辑器或 IDE。

LSP diagram

来源:https://vscode.js.cn/api/language-extensions/language-server-extension-guide

从上图可以看出,语言服务器协议允许单个语言服务器实现被多个代码编辑器或 IDE 重用,从而避免了像没有 LSP 的情况下那样为每个编辑器重复语言相关支持的需要。语言服务器作为单独的进程运行,并且像 VSCode 这样的开发工具使用 JSON-RPC 通过语言协议与服务器通信。有关更多详细信息,请参阅 语言服务器规范

Ansible 语言服务器

Ansible language server diagram

Ansible 语言服务器提供以下功能:

  • 代码补全
  • 悬停(将光标悬停在关键字上时显示关键字描述)
  • 转到定义(对于模块)
  • 诊断等

它服务于开发工具(客户端)发送的 JSON-RPC 请求。语言服务器运行 Ansible 命令(如 ansible-config、ansible-playbook 等)以支持这些功能,因此需要在本地或自动化执行环境中安装 Ansible ansible-core。此外,如果安装并启用(默认),语言服务器依赖于 ansible-lint 提供诊断信息。在使用自动化执行环境运行时,应包含 ansible-core 和可选的 ansible-lint。

扩展安装

在 VSCode 扩展选项卡中,搜索并安装 Ansible VS Code 扩展

注意:

  • 首次安装扩展时,“运行时状态” 为“尚未激活”,表示扩展尚未运行。只有在编辑器中打开文件并且为该文件识别的语言为“Ansible”后,状态才会变为激活。
  • 对于 Windows 用户,扩展程序适用于 WSL2,而不适用于原生 Windows。

Ansible 扩展设置

Ansible 扩展支持多个配置选项,例如,更改 Ansible、ansible-lint、python 解释器等的执行路径。还有一个选项可以启用自动化执行环境,用户可以选择容器引擎、镜像名称、拉取策略等。要在 VSCode 窗口中查看和更改配置选项,请转到 代码->首选项->设置,并在“搜索设置”框中输入“ansible”,如下面的快照所示。

vscode extension screenshot

可以为给定的用户或工作区设置首选项,并且根据环境,还可以为远程类型和工作区文件夹设置首选项。用户范围内的设置将全局应用于打开的任何 VSCode 实例。工作区范围的设置将存储在您的工作区中,并且仅在打开当前工作区时应用。有关更多信息,请参阅 VSCode 文档 此处。或者,对于工作区设置,您还可以通过编辑工作区根文件夹中的 .vscode/settings.json 文件来提供 Ansible 设置,如下所示。

vscode extension screenshot

激活和使用 Ansible 扩展

如上所述,vscode-ansible 扩展依赖于 ansible-language-server 作为后台进程运行,以提供 Ansible playbook 和任务文件的功能,例如自动完成、悬停、诊断、跳转等。扩展还依赖于 Red Hat vscode-yaml 扩展来提供其他相关文件的自动完成和诊断信息,例如 Ansible 变量文件、ansible-navigator 设置文件、ansible-galaxy 需求和元文件、ansible-lint 配置文件和其他 YAML 文件。扩展使用文件模式匹配将文件与 YAML 语言关联。有关 vscode-yaml 扩展使用文件模式和关联模式文件的信息,请阅读更多 此处

设置了此上下文后,您现在可以继续在 VSCode 窗口中打开 Ansible 项目的根目录。该文件夹将成为您的工作区的根目录,在后台执行 Ansible 命令时,Ansible 语言服务器也将将其视为当前工作目录。如果您尝试在未先设置工作区的情况下打开 Ansible 文件,则插件可能无法正确确定上下文(例如 CWD)。

在 VSCode 窗口中打开 Ansible 文件后,它可能无法被正确识别为 Ansible 语言类型,如下面的快照所示。很可能,文件将被识别为“YAML”语言,因为 Ansible 文件的扩展名要么是“yaml”,要么是“yml”,并且安装 vscode-ansible 扩展,反过来会安装 vscode-yaml 扩展。

vscode extension screenshot

将光标悬停在右下角识别的语言(在本例中为 YAML)上,您将看到“选择语言模式”。通过点击识别的语言名称(YAML),它将打开一个下拉菜单;在选项卡中输入“Ansible”,然后选择它。执行此操作后,您会注意到该文件的识别语言已更改为“Ansible”,如下面的快照所示。

vscode extension screenshot

首次将文件语言识别为 Ansible 时,vscode-ansible 扩展将被激活,并且扩展将在后台运行 ansible-language-server 进程,该进程在您键入和/或将光标悬停在文件内时提供自动完成、悬停和诊断信息。诊断信息将在 问题 选项卡中提供。如果已安装并启用,语言服务器将默认运行 ansible-lint 以生成打开文件的诊断信息。如果未安装 ansible-lint,服务器将运行 ansible-playbook --syntax-check 生成诊断信息。

无需为每个文件更改语言,您可以通过点击“代码->首选项->设置”并在搜索框中输入“文件关联”来设置文件关联设置。添加一个项目以将扩展名与语言类型相关联,如下面的快照所示。

vscode extension screenshot

有关文件关联的更多信息,请参阅文档 此处

使用自动化执行环境

要查看扩展支持的自动化执行环境,您可以转到设置(代码->首选项->设置)并输入“ansible.execution environment”。

vscode extension screenshot

启用执行环境 (EE) 后,扩展将默认拉取“quay.io/ansible/creator-ee:latest”镜像(如果本地不存在)。可以通过为“ansible.executionEnvironment.image”设置提供预期值来更改镜像的值。EE 拉取成功后,Ansible 扩展将从 EE 中复制插件文档到本地缓存文件夹,并将其用于提供自动完成、悬停和跳转功能。由于“creator-ee”镜像捆绑了“ansible-lint”,因此 Ansible 扩展和 ansible-language-server 将将整个工作区装载到 EE 中,并根据设置运行“ansible-lint”或 “ansible-playbook ---syntax-check”以在编辑器中提供诊断信息。

vscode extension screenshot

注意:

  • 如果启用执行环境后自动完成和其他功能无法正常工作,您可以通过打开命令面板(“查看->命令面板”)并执行“开发人员:重新加载窗口”命令重新加载 VS Code,这也会重新启动后台运行的“ansible-language-server”进程。
  • 如果扩展无法按预期工作,您可以按照 此处所示的调试步骤操作。如果仍然无法正常工作,请 此处提交问题。

自动完成现在将为给定执行环境镜像名称中包含的插件提供建议。

vscode extension screenshot

“触发建议”键取决于键盘快捷键。要查看关联的键,请转到 代码->首选项->键盘快捷键

vscode extension screenshot

Ansible Playbook 运行入口点

扩展还提供了一个选项,可以使用“ansible-navigator run”或“ansible-playbook”命令从扩展中运行 Ansible Playbook,如下面的快照所示。

vscode extension screenshot