跳到内容

关于 Security-Guard

Security-Guard 通过监控用户容器和事件的行为,提供对已部署 Knative 服务的安全性状况的可见性。Security-Guard 还支持根据行为对事件进行可选的阻止以及终止用户容器实例。

Security-Guard 配置文件和标准

Security-Guard 创建每个用户容器行为和每个事件行为的配置文件。然后将这些行为与预定义的标准进行比较。如果配置文件不符合标准,Security-Guard 可以记录警报、阻止行为不当的事件或停止行为不当的服务实例,具体取决于用户配置。

与配置文件进行比较的标准由一组微规则组成。这些规则描述了事件和用户容器的预期行为,包括预期响应。您可以选择手动设置微规则,或使用 Security-Guard 的机器学习功能来自动创建微规则。

守护程序

每个服务的微规则集存储在 Kubernetes 系统中,作为 Guardian 对象。在 Knative 中,Security-Guard 使用 guardians.guard.security.knative.dev CRD 存储守护程序。

要列出所有 CRD 守护程序,请使用

kubectl get guardians.guard.security.knative.dev

示例输出

NAME            AGE
helloworld-go   10h

使用 Security-Guard

Security-Guard 通过将其警报写入服务队列代理日志来提供情景意识。您可以观察队列代理以查看警报。

安全警报出现在队列代理日志文件中,并以字符串 SECURITY ALERT! 开头。Security-Guard 的默认设置是在报告新模式后学习任何新模式。默认情况下,Security-Guard 永远不会阻止事件,也不会停止服务实例。

当部署新的服务并正在积极地服务请求时,Security-Guard 通常需要大约 30 分钟才能学习服务请求和响应的模式并构建相应的微规则。在初始学习阶段之后,Security-Guard 会更新服务守护程序中的微规则,之后,它只会在检测到行为变化时发送警报。

请注意,在默认设置中,Security-Guard 会继续学习任何新行为,因此当新行为再次发生时,它会避免重复报告警报。正确的安全程序应包括审查 Security-Guard 检测到的任何新行为。

Security-Guard 也可以配置为以其他操作模式运行,例如

  • 在初始学习阶段之后,从自动学习转向手动微规则管理
  • 当请求/响应不符合微规则时,阻止请求/响应

有关更多信息或故障排除帮助,请参阅 Knative Slack 中的 #knative-security 频道。

Security-Guard 用例

Security-Guard 从安全角度支持 Knative 服务生命周期中的四个不同阶段。

  • 零日漏洞
  • 易受攻击
  • 可利用
  • 滥用

接下来,我们将详细介绍每个阶段以及 Security-Guard 如何在该阶段用于管理服务的安全性。

零日

在正常情况下,拥有服务的 Knative 用户不知道服务中存在任何已知漏洞。但是,可以合理地假设服务存在弱点。

Security-Guard 为 Knative 用户提供检测/阻止作为传入事件的一部分发送的模式的能力,这些模式可能被用于利用未知的零日服务漏洞。

易受攻击的

一旦发布描述服务漏洞的 CVE,拥有服务的 Knative 用户需要启动一个过程来通过引入服务的新修订版来消除漏洞。此删除已知漏洞的过程可能需要数周才能完成。

Security-Guard 使 Knative 用户能够设置微规则来检测/阻止包含模式的传入事件,这些模式可能被用作针对已发现漏洞的未来某些攻击的一部分。这样,用户就可以继续提供服务,即使服务存在已知漏洞。

可利用的

当发现已知漏洞有效地损害服务时,拥有服务的 Knative 用户需要一种方法来过滤包含特定漏洞的传入事件。这通常是在成功攻击期间发生的,其中有效的漏洞能够损害用户容器。

Security-Guard 使 Knative 用户能够设置微规则来检测/阻止包含特定漏洞的传入事件,同时允许其他事件被服务。

误用

当攻击者建立能够接管服务实例的攻击模式时,首先利用一个或多个漏洞,然后开始误用服务实例,停止服务实例需要攻击者重复攻击模式。在任何给定时间,一些服务实例可能被入侵和误用,而其他实例则按设计运行。

Security-Guard 使 Knative 用户能够检测/删除误用服务实例,同时允许其他实例继续服务事件。

其他资源

请参阅 Security-Guard Github 仓库 中的 Readme 文件。

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,以用于该目的。了解更多。