通过自定义合规性内容,可以定义自己的安全标准,用于补充 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
- 从命令行,导航到包含文件的目录,然后根据操作系统运行以下命令。
- Mac OS 或 Linux
./secops_sdk init
- Windows
secops_sdk.exe init
未显示输出。这是正常现象。您的目录现在包含以下文件夹和文件:
benchmarks
salt/locke/custom
sample_tests
README.md
有关这些文件夹和文件的详细信息,请参见文件夹和文件。
- Mac OS 或 Linux
- (可选)将更改提交到版本控制的存储库。
创建自定义检查
初始化 SDK 是创建自定义内容的必备条件。请参见初始化 SDK。
- 在自定义内容 SDK 中,转到
salt/locke/custom
。此目录包含各种子目录,其中具有示例状态文件 (.sls
) 和元文件 (.meta
)。注: 所有自定义检查都必须同时在状态文件 (.sls
) 和相应的元文件 (.meta
) 中进行配置。 - 生成示例状态文件 (
.sls
) 及其相应元文件 (.meta
) 的副本,并使用自定义检查的描述性名称对这两个文件重命名。与检查关联的两个文件必须位于同一目录中,并且以相同的名称开头,例如:
my_first_check.meta
my_first_check.sls
可以将这两个文件一起保存在
salt/locke/custom
的任何子目录中。 - 编辑元文件的内容,以根据需要自定义检查。该文件采用 YAML 编写。有关文件中所含不同选项的列表,请参见文件夹和文件。
注: 检查元文件包含对不同基准的引用。创建自定义内容时,请确保检查元文件中包含所有关联的基准。
- 编辑状态文件的内容。有关详细信息,请参见文件夹和文件。
- 确保两个文件都保存在同一目录中。
现在,您已完成创建自定义检查所需的最少步骤。可以继续测试检查、提交以进行版本控制或构建内容库。
创建自定义基准
- 在自定义内容 SDK 中,转到
benchmarks
目录。此目录包含示例基准元文件 (.meta
)。 - 生成
Sample_Benchmark.meta
的副本,并使用基准的描述性名称对其重命名。 - 编辑元文件的内容,以根据需要自定义基准。该文件采用 YAML 编写。有关文件中所含不同选项的描述,请参见文件夹和文件。
正在测试自定义内容
- 创建自定义内容后,打开命令行并导航到自定义内容 SDK
sample_tests
目录。 - 使用 Salt 构建 CentOS7 docker 映像以进行测试。
./build.sh
- 启动测试容器。
./up.sh
- 对在
salt/locke/custom
目录中创建的检查运行示例测试。可以像执行正常 Salt 状态一样执行自定义检查,例如:./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True
有关更多测试示例,请参见 SDK README 中的“测试自定义内容”。有关 Salt 状态的详细信息,请参见 Salt 文档:如何使用 Salt 状态?。
- 测试完成后,关闭测试容器。
./down.sh
构建自定义内容库
- 创建自定义内容后,打开命令行并导航到自定义内容 SDK 根目录。
- 构建自定义内容库。
./secops_sdk build -a
SDK 根目录现在包括
_dist
子目录。此子目录包括两个tar.gz
文件,可以用于通过 SaltStack Config 用户界面或 API (RaaS) 导入内容。有关该目录中所含所有文件的描述,请参见文件夹和文件。
导入自定义内容
- 单击侧边菜单上的管理 > SecOps。
- 在合规性内容 - SaltStack 下,单击检查更新。
注: 如果在当前会话期间已经下载了 SaltStack SecOps Compliance 内容,则可以跳过此步骤。
- 单击上载软件包,然后从文件资源管理器中选择
.tar.gz
文件。注: 要使您的自定义检查更易于导航,请使用文件名中包含时间戳的文件。有关文件的详细信息,请参见 文件夹和文件。现在,您的自定义内容包含在 SaltStack SecOps Compliance 中,可用于构建策略、运行评估和修复系统。自定义检查包括用户图标 ,区别于 SaltStack 检查 。
注:也可以使用 API (RaaS) 导入内容,或者在安装期间通过命令行导入内容。请参见 Sec API 接口或 Enterprise 安装指南。
删除自定义检查
- 在用户界面中,转到 SecOps > 检查。
- 单击要删除的检查旁边的菜单 ,然后单击删除。
注: 只能删除自定义内容。自定义内容包括用户图标 ,区别于 SaltStack 内容 。
- 在“删除检查”对话框中的“使用中”下,查看包含该检查的策略和基准列表。这有助于预测删除检查时环境中可能会中断的任何依赖关系。
查看完使用中的依赖关系后,单击下一步。
- 在删除检查 > 警告下,单击删除。该对话框确认检查已删除。
- 单击完成关闭该对话框。
删除自定义基准
- 在用户界面中,转到 SecOps > 基准。
- 单击要删除的检查旁边的菜单 ,然后单击删除。
注:
只能删除自定义内容。自定义内容包括用户图标 ,区别于 SaltStack 内容 。
- 在“删除基准”对话框中的“使用中”下,查看与该基准关联的策略和检查列表。这有助于预测删除基准时环境中可能会中断的任何依赖关系。
查看完使用中的依赖关系后,单击下一步。
- 在删除基准 > 警告下,单击删除。该对话框确认基准已删除。
- 单击完成关闭该对话框。
文件夹和文件
初始化 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 编写,并包含以下选项,可以针对您的内容对这些选项自定义:
除了上述选项外,元文件还包含各种预留项,如 version
、authority
和 ids
。除非管理员另有说明,否则请勿修改这些预留项。
自定义检查文件
检查是 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 用户界面上载