通过自定义合规性内容,可以定义自己的安全标准,用于补充 SaltStack SecOps Compliance 中内置的安全基准和检查库。此自定义内容有助于增强 SaltStack SecOps Compliance 策略以满足您的内部要求。

检查是 SaltStack SecOps Compliance 进行评估以满足合规性的安全标准。基准是安全检查的类别。

SaltStack SecOps Compliance 包括自定义内容 Software Development Kit (SDK),可以用于创建、测试和构建自己的自定义安全内容。可以导入自定义安全内容,以便与 SaltStack SecOps Compliance 内置安全库一起用于评估和修复。通过导入自定义内容功能,还可以使用自己选择的版本控制系统对内容进行版本控制。

要使用自定义检查,请先初始化 SaltStack SecOps Compliance 自定义内容 SDK。SDK 包含示例文件,可以对其修改以创建自己的自定义检查以及基准。SDK 还包含基于 Docker 的测试环境,可以在其中测试新内容。

创建并测试自定义内容后,可以构建内容文件,并导入到 SaltStack SecOps Compliance 以开始评估和修复。自定义检查包括用户图标 自定义检查用户图标,区别于 SaltStack 检查 内置检查防护图标SaltStack SecOps Compliance 可跟踪策略与自定义内容之间的依赖关系,并提供删除内容时可能会中断的依赖关系列表。

必备条件

  • 下载 SaltStack SecOps Compliance 自定义内容 SDK。
  • 安装 Docker。请参见 Docker 安装文档

初始化 SDK

  1. 从命令行,导航到包含文件的目录,然后根据操作系统运行以下命令。
    • Mac OS 或 Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    未显示输出。这是正常现象。您的目录现在包含以下文件夹和文件:

    • benchmarks
    • salt/locke/custom
    • sample_tests
    • README.md

    有关这些文件夹和文件的详细信息,请参见文件夹和文件

  2. (可选)将更改提交到版本控制的存储库。

创建自定义检查

注:

初始化 SDK 是创建自定义内容的必备条件。请参见初始化 SDK

  1. 在自定义内容 SDK 中,转到 salt/locke/custom。此目录包含各种子目录,其中具有示例状态文件 (.sls) 和元文件 (.meta)。
    注: 所有自定义检查都必须同时在状态文件 ( .sls) 和相应的元文件 ( .meta) 中进行配置。
  2. 生成示例状态文件 (.sls) 及其相应元文件 (.meta) 的副本,并使用自定义检查的描述性名称对这两个文件重命名。

    与检查关联的两个文件必须位于同一目录中,并且以相同的名称开头,例如:

    • my_first_check.meta
    • my_first_check.sls

    可以将这两个文件一起保存在 salt/locke/custom 的任何子目录中。

  3. 编辑元文件的内容,以根据需要自定义检查。该文件采用 YAML 编写。有关文件中所含不同选项的列表,请参见文件夹和文件
    注: 检查元文件包含对不同基准的引用。创建自定义内容时,请确保检查元文件中包含所有关联的基准。
  4. 编辑状态文件的内容。有关详细信息,请参见文件夹和文件
  5. 确保两个文件都保存在同一目录中。

    现在,您已完成创建自定义检查所需的最少步骤。可以继续测试检查、提交以进行版本控制或构建内容库。

创建自定义基准

注: 初始化 SDK 是创建自定义内容的必备条件。请参见 初始化 SDK
  1. 在自定义内容 SDK 中,转到 benchmarks 目录。此目录包含示例基准元文件 (.meta)。
  2. 生成 Sample_Benchmark.meta 的副本,并使用基准的描述性名称对其重命名。
  3. 编辑元文件的内容,以根据需要自定义基准。该文件采用 YAML 编写。有关文件中所含不同选项的描述,请参见文件夹和文件

正在测试自定义内容

注: 安装 Docker 是执行以下操作的必备条件。有关下载和安装 Docker 的详细信息,请参见 Docker 安装文档
  1. 创建自定义内容后,打开命令行并导航到自定义内容 SDK sample_tests 目录。
  2. 使用 Salt 构建 CentOS7 docker 映像以进行测试。
    ./build.sh
  3. 启动测试容器。
    ./up.sh
  4. 对在 salt/locke/custom 目录中创建的检查运行示例测试。可以像执行正常 Salt 状态一样执行自定义检查,例如:
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    有关更多测试示例,请参见 SDK README 中的“测试自定义内容”。有关 Salt 状态的详细信息,请参见 Salt 文档:如何使用 Salt 状态?

  5. 测试完成后,关闭测试容器。
    ./down.sh

构建自定义内容库

  1. 创建自定义内容后,打开命令行并导航到自定义内容 SDK 根目录。
  2. 构建自定义内容库。
    ./secops_sdk build -a

    SDK 根目录现在包括 _dist 子目录。此子目录包括两个 tar.gz 文件,可以用于通过 SaltStack Config 用户界面或 API (RaaS) 导入内容。有关该目录中所含所有文件的描述,请参见文件夹和文件

导入自定义内容

  1. 单击侧边菜单上的管理 > SecOps
  2. 合规性内容 - SaltStack 下,单击检查更新
    注: 如果在当前会话期间已经下载了 SaltStack SecOps Compliance 内容,则可以跳过此步骤。
  3. 单击上载软件包,然后从文件资源管理器中选择 .tar.gz 文件。
    注: 要使您的自定义检查更易于导航,请使用文件名中包含时间戳的文件。有关文件的详细信息,请参见 文件夹和文件

    现在,您的自定义内容包含在 SaltStack SecOps Compliance 中,可用于构建策略、运行评估和修复系统。自定义检查包括用户图标 自定义检查用户图标,区别于 SaltStack 检查 内置检查防护图标

    注:

    也可以使用 API (RaaS) 导入内容,或者在安装期间通过命令行导入内容。请参见 Sec API 接口或 Enterprise 安装指南

删除自定义检查

  1. 在用户界面中,转到 SecOps > 检查
  2. 单击要删除的检查旁边的菜单 菜单图标,然后单击删除
    注: 只能删除自定义内容。自定义内容包括用户图标 自定义检查用户图标,区别于 SaltStack 内容 内置检查防护图标
  3. 在“删除检查”对话框中的“使用中”下,查看包含该检查的策略和基准列表。这有助于预测删除检查时环境中可能会中断的任何依赖关系。

    查看完使用中的依赖关系后,单击下一步

  4. 删除检查 > 警告下,单击删除。该对话框确认检查已删除。
  5. 单击完成关闭该对话框。

删除自定义基准

  1. 在用户界面中,转到 SecOps > 基准
  2. 单击要删除的检查旁边的菜单 菜单图标,然后单击删除
    注:

    只能删除自定义内容。自定义内容包括用户图标 自定义检查用户图标,区别于 SaltStack 内容 内置检查防护图标

  3. 在“删除基准”对话框中的“使用中”下,查看与该基准关联的策略和检查列表。这有助于预测删除基准时环境中可能会中断的任何依赖关系。

    查看完使用中的依赖关系后,单击下一步

  4. 删除基准 > 警告下,单击删除。该对话框确认基准已删除。
  5. 单击完成关闭该对话框。

文件夹和文件

初始化 SDK 后,您的目录将包含以下文件夹和文件:

  • benchmarks - 包含自定义基准元文件 (.meta)
  • salt/locke/custom - 包含自定义检查状态文件 (.sls) 和元文件 (.meta)
  • sample_tests - 包含使用 Docker 进行测试的示例文件
  • README.md - 提供有关 SDK 的更多详细信息

下面详细介绍了重要文件。

自定义基准文件

基准是安全检查的类别。SaltStack SecOps Compliance 内置基准由公认的专家定义。但是,自定义基准可以按您自己的组织标准进行定义。每个基准都包含一个建议(称为检查)列表并在 benchmarks 目录中具有相应的 .meta 文件。有关 SaltStack SecOps Compliance 中基准的详细信息,请参见基准

通过创建基准元文件,就创建了检查类别。然后,可以通过在检查元文件中的 benchmark_id 下指定该基准,向该基准添加检查。请参见文件夹和文件

元文件采用 YAML 编写,并包含以下选项,可以针对您的内容对这些选项自定义:

name

基准名称

display_name

将在 SaltStack SecOps Compliance 的基准列表中显示的基准名称

desc

基准描述

注:

除了上述选项外,元文件还包含各种预留项,如 versionauthorityids。除非管理员另有说明,否则请勿修改这些预留项。

自定义检查文件

检查是 SaltStack SecOps Compliance 进行评估以满足合规性的安全标准。这是与基准关联的建议。建议提供描述、基本原理、审核和修复信息。每项检查至少由两个文件定义:状态文件 (.sls) 和相应的元文件 (.meta)。

注:

与检查关联的两个文件必须位于同一目录中,并且以相同的名称开头,例如:

  • my_first_check.meta
  • my_first_check.sls

可以将这两个文件一起保存在 salt/locke/custom 的任何子目录中。

下面进一步详细介绍了每个文件类型。

检查元文件

检查元文件包括检查描述,以及检查的相关其他详细信息,例如其版本、适用的操作系统等。元文件采用 YAML 编写,并使用 .meta 文件扩展名。

自定义检查元文件包括以下选项:

version

检查内容的版本。目前仅支持值 1

display_name

此检查的名称,将显示在 SaltStack Config 用户界面的检查列表中。

global_description

检查的详细说明。可以提供比通过检查名称和基准名称提供更多的信息。

osfinger

允许运行此检查的操作系统列表。如果主机没有与此列表中的值匹配的 osfinger 值,则检查的评估结果将恢复为 notapplicable

refs

满足此检查的其他基准或安全标准中其他检查的交叉引用信息。

benchmark_id

列出检查所属的每个基准。

每个基准条目将创建一个新部分,其中包含以下子选项:

type

基准的类型。定义特定机构不提供的自定义检查时输入 custom

desc

安全建议的标题,将显示在 SaltStack Config 用户界面的检查列表中。

control_id

建议编号,例如来自相应 CIS 文档的建议编号。

scored

此字段模仿 CIS 建议(可能为“已评分”或“未评分”)。未评分的 CIS 建议不计入安全分数,也不会降低安全分数。“true”表示已评分,false 表示未评分。可以根据内部需求选择对检查进行评分或不评分。

profile

CIS 和其他基准分为多个配置文件。例如,CIS CentOS Linux 7 基准有四个配置文件,通过以下形式表示:

profile:
  server:level1
  workstation:level1
  server:level2
  workstation:level3
information

检查的描述。可能类似于检查的 global_description 字段。

rationale

实施检查的基本原理说明。

remediation

有关如何修复处于不合规状态的系统的说明。

检查状态文件

检查状态文件应用 Salt 状态以执行评估和修复。状态函数是一种包含在状态模块中的函数,可以管理特定状态对系统的应用。状态函数会频繁调用一个或多个执行模块以执行给定任务。状态文件采用 YAML 和 Jinja 编写,并使用 .sls 文件扩展名。

评估的结果是在 test=True 模式下运行状态文件的结果。如果结果显示应用状态会导致发生更改,则主机将视为不合规。如果应用状态不会导致发生更改,则主机将视为合规。

有关 Salt 状态的详细信息,请参见 Salt 文档:如何使用 Salt 状态?

自定义内容库文件

构建自定义内容库后,您的目录将包含 _dist 目录,其中包含以下附加文件:

  • digest.json - 包含有关内容的哈希和其他信息
  • secops_custom.tar.gz - 准备好进行摄取的 gzip tar 文件。这适用于通过 SaltStack Config 用户界面上载。有关内容摄取的详细信息,请参见 Enterprise 安装指南
  • secops_custom.txt - secops_custom.tar.gz 的 base64 编码版本。有助于进行 API 调用
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz - secops_custom.tar.gz 的相同副本,由于其描述性文件名包括创建日期和 tar UUID,适用于通过 SaltStack Config 用户界面上载