本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

自定义合规检查

为合规检查创建自定义脚本

自定义脚本可以在容器和主机上运行,用于合规检查和其他评估。自定义合规检查是一个可以在任何容器上运行的bash脚本,用于验证条件并在容器或节点合规部分报告结果。

出于防止滥用的考虑,默认情况下禁用创建自定义脚本的功能。可以通过在控制器和执行器中设置CUSTOM_CHECK_CONTROL 环境变量来启用此功能。值为"disable"(默认,不允许)、"strict"(仅限管理员角色)或"loose"(管理员、合规和运行时策略角色)。

使用自定义脚本时应格外小心。自定义脚本可以在容器名称空间中以容器权限运行任何可执行文件。可执行文件可能非常具有破坏性,例如rm、format、fdisk等。这种警告同样适用于主机/节点。如果自定义检查脚本能够访问集群中的主节点,则在主机上的自定义检查脚本可能会更加具有破坏性。

  • 自定义脚本由运行时策略权限控制,并使用命名空间RBAC;用户应正确设置Kubernetes用户角色。

  • 自定义脚本以与运行容器相同的权限运行。

  • 一旦自定义脚本被删除,合规结果将被移除。

  • 自定义合规检查需要遵循一种格式,以便在容器或节点的合规报告中正确报告结果。

    • 脚本以’if’语句开始,以检查某些条件。

    • 如果退出代码为0,则自定义检查通过。

    • 如果退出代码为1,则自定义检查失败。

示例脚本检查容器是否具有没有密码的root账户。

if [ $(cat /etc/shadow | grep  'root:::0:::::') ]; then
     DESCRIPTION="CVE-2019-5021 fails."
     echo $DESCRIPTION;
     exit 1;
else
     echo "CVE-2019-5021 pass";
     exit 0;
fi

检查容器中脏牛文件的示例脚本。

if [ $(find . / | grep -w 'cow') ]; then
     DESCRIPTION="dirty cow seen in the container"
    echo $DESCRIPTION;
    exit 1;
else
    echo "no dirty cow found pass";
    exit 0;
fi

其他说明

  • 脚本的超时时间为1分钟,如果未完成,则会被终止并在合规结果中报告为错误。

  • 脚本可以在所有三种操作模式下执行:发现、监控和保护。

创建自定义检查脚本

  • 从策略 → 组中选择服务组(用户创建或自动学习)。

  • 点击自定义检查选项卡。

  • 输入脚本名称。不允许使用空格。

  • 将脚本复制并粘贴到脚本部分。

  • 点击添加按钮以添加脚本。

  • 可以从右上角提供的选项创建和管理多个脚本。

  • 脚本在服务组覆盖的容器上运行,脚本创建后以及脚本更新时都会运行。

  • 从资产 → 容器 → 合规性或资产 → 节点 → 合规性查看脚本结果。

样本

在由3个容器组成的演示组上创建自定义检查脚本

ComplianceDemo

显示nginx容器的合规结果,该容器有脏牛文件,因此报告了警告。

合规Nginx

显示nodejs容器的合规结果,该容器没有脏牛文件,因此脚本报告通过。

合规Nodejs

显示nginx容器的合规性检查结果,该检查超时。

合规超时

为合规报告创建响应规则

响应规则可以在策略→的响应规则中创建,基于自定义合规检查结果。结果属于合规类别,可以为某一特定级别的所有事件创建响应。

  • 选择合规类别

  • 在组选项中输入服务组名称,并从自动选择选项中选择所需组

  • 输入级别并从自动选择选项中选择级别:警告

  • 启用所需的操作:隔离、webhook和/或抑制日志

  • 启用状态按钮

  • 点击添加按钮以添加响应规则

下一个合规事件的结果为警告,将触发相应的响应规则操作。

ComplianceResponse

通过名称为合规报告和自定义检查脚本创建响应规则:

  • 选择合规类别

  • 在组选项中输入服务组名称,并从下拉选项中选择所需组,或将组名称留空以适用于所有

  • 输入’n’并从下拉菜单中选择自定义检查脚本名称

  • 启用所需的操作:隔离、webhook和/或抑制日志

  • 启用状态按钮

  • 点击添加按钮以添加响应规则

下一个合规事件结果为警告,将触发相应的响应规则操作。

ComplianceResponse