4.6. 使用进程基准
您可以通过对基础架构安全性使用流程基础来最小化风险。通过这种方法,Red Hat Advanced Cluster Security for Kubernetes 首先发现现有进程并创建基准。然后,它以默认的 deny-all 模式运行,只允许基线中列出的进程运行。
- 进程基准
- 安装 Red Hat Advanced Cluster Security for Kubernetes 时,没有默认的进程基准。当 Red Hat Advanced Cluster Security for Kubernetes 发现部署时,它为部署中的每个容器类型创建一个进程基准。然后,它会将所有发现的进程添加到自己的进程基线中。
- 进程基准状态
- 在进程发现阶段,所有基准都处于解锁状态。
处于 解锁 状态:
- 当 Red Hat Advanced Cluster Security for Kubernetes 发现新的进程时,它会将该进程添加到进程基点中。
- 进程不会显示为风险,且不会触发任何违反情况。
当 Red Hat Advanced Cluster Security for Kubernetes 从部署中的一个容器接收第一个进程指示符时,它会完成进程发现阶段。有关如何配置发现阶段持续时间的详情,请参考"配置进程基准的观察周期"。
此时:
- Red Hat Advanced Cluster Security for Kubernetes 会停止向进程基础中添加进程。
- 不在进程基线中的新进程会显示为风险,但不会触发任何违反情况。
要生成违反情况,您必须手动锁定进程基线。
处于 锁定状态 :
- Red Hat Advanced Cluster Security for Kubernetes 会停止向进程基础中添加进程。
- 不在进程基线中的新进程会触发违反情况。
独立于锁定或解锁的基准状态,您始终可以从基线中添加或移除进程。
对于一个部署,如果每个 pod 都有多个容器,Red Hat Advanced Cluster Security for Kubernetes 会为每个容器类型创建一个进程基准。对于这样的部署,如果锁定了一些基准并且一些基准被解锁,则该部署的基准状态将显示为 Mixed。
4.6.1. 为进程基准配置观察周期 复制链接链接已复制到粘贴板!
您可以通过设置 ROX_BASELINE_GENERATION_DURATION 环境变量来配置进程基准的观察周期。
流程
运行以下命令设置
ROX_BASELINE_GENERATION_DURATION环境变量:$ oc -n stackrox set env deploy/central \ ROX_BASELINE_GENERATION_DURATION=<value>-
oc: 如果使用 Kubernetes,请输入kubectl。 <value> : 使用时间单位,例如:300ms,-1.5h, 或2h45m。有效时间单位是:-
ns -
us或swigs -
ms -
s -
m -
h
-
-
4.6.2. 查看进程基准 复制链接链接已复制到粘贴板!
您可以从 风险 视图中查看进程基准。
流程
- 在 RHACS 门户中,从导航菜单中选择 Risk。
- 从默认 风险 视图中的部署列表中选择一个部署。部署详情会在右侧的面板中打开。
- 在 Deployment details 面板中,选择 Process Discovery 选项卡。
- 进程基准在 Spec Container Baselines 部分下看到。
4.6.3. 在基线中添加进程 复制链接链接已复制到粘贴板!
您可以向基准添加一个进程。
流程
- 在 RHACS 门户中,从导航菜单中选择 Risk。
- 从默认 风险 视图中的部署列表中选择一个部署。部署详情会在右侧的面板中打开。
- 在 Deployment details 面板中,选择 Process Discovery 选项卡。
- 在 Running Processes 部分下,点您要添加到进程基线的进程的 Add 图标。
Add 图标仅适用于不在进程基线中的进程。
4.6.4. 从基准中删除进程 复制链接链接已复制到粘贴板!
您可以从基准中删除进程。
流程
- 在 RHACS 门户中,从导航菜单中选择 Risk。
- 从默认 风险 视图中的部署列表中选择一个部署。部署详情会在右侧的面板中打开。
- 在 Deployment details 面板中,选择 Process Discovery 选项卡。
- 在 Spec Container baselines 部分下,点您要从进程基准中删除的进程的 Remove 图标。
4.6.5. 锁定和解锁进程基准 复制链接链接已复制到粘贴板!
您可以锁定基线,以为所有没有列在基线中的进程触发违规,也可以取消锁定基线来停止触发违规。
流程
- 在 RHACS 门户中,从导航菜单中选择 Risk。
- 从默认 风险 视图中的部署列表中选择一个部署。部署详情会在右侧的面板中打开。
- 在 Deployment details 面板中,选择 Process Discovery 选项卡。
在 Spec Container baselines 部分下:
- 点 锁定 图标为不在基线中的进程触发违反情况。
- 点 Unlock 图标为不在基线中的进程停止触发违反情况。
4.6.6. 为进程基准配置自动锁定 复制链接链接已复制到粘贴板!
您可以将 RHACS 配置为在进程离开观察期时自动锁定进程基准。必须在 Central 和安全集群中启用 auto-lock 功能。
在使用这个功能时请注意以下准则:
- 默认情况下,该功能在安全集群中默认启用并禁用。因此,启用该功能不需要重启 Central。但是,更改 Central 中的功能状态需要重启 Central。
- 这个功能只适用于启用了该功能的安全集群的进程基准。
- 在启用功能后禁用该功能不会解锁功能被功能锁定的进程基准。
- 启用该功能不会锁定在启用功能前保留观察周期的进程基准。
流程
- 在 OpenShift Container Platform Web 控制台中进入 RHACS Operator 页面。
- 在顶部导航菜单中,选择 Secured Cluster。
- 点实例名称,如 stackrox-secured-cluster-services。
使用以下方法之一更改设置:
-
在 Form 视图中,在 Process baselines settings
Auto Lock 下选择 Enabled 或 Disabled。 -
点 YAML 打开 YAML 编辑器,并找到
spec.processBaselines.autoLock属性。更改为Enabled或Disabled。
-
在 Form 视图中,在 Process baselines settings
- 点 Save。
-
要在 Central 中启用或禁用该功能,请设置
ROX_AUTO_LOCK_PROCESS_BASELINES环境变量。默认值为true。
4.6.6.1. 自动锁定过程基线已知限制 复制链接链接已复制到粘贴板!
当进程基准自动锁定时,Central DB 和 Sensor 会消耗更多 CPU 和内存资源。这会导致 CPU 节流和 pod 因内存不足而崩溃。
以下结果是从使用 1,000 个部署的测试中获取的,其中 5,000 个进程每 30 秒生成一次(每秒 166.67 个进程)。测试是在启用和禁用功能的情况下运行。两个测试之间比较资源使用量。在测试中,进程基线生成持续时间被设置为三分钟,进程创建率在基线生成期结束后不会改变。
- Sensor 使用更多内存。
- Sensor 内存用量的区别没有随时间增加。
- 0.14 CPU 增加的 Sensor CPU 使用量增加。
- Central 使用更多内存。
- 在启用了 auto-lock 时,Central 内存用量的增加率为 65 Kb 每秒 65 Kb 每秒。
- 0.12 CPU 增加了中央 CPU 使用量。
- Central DB 使用 296 Mb 更多内存并启用了 auto-lock。
- Central DB 内存用量的差别似乎随着时间而增加。
- Central DB CPU 使用率较低,并增加了 0.03 CPU。
4.6.6.2. 批量锁定和解锁进程基准 复制链接链接已复制到粘贴板!
您可以使用 API 端点锁定或解锁集群中的所有进程基准。您可以指定一组可选的命名空间,将操作限制为只有这些命名空间。API 端点如下:
-
/v1/processbaselines/bulk/lock -
/v1/processbaselines/bulk/unlock
以下示例显示了端点的输入:
{
"cluster_id": "aeaaaaaa-0000-0000-0000-000000000000",
"namespaces": [
"stackrox",
"gmp-system"
]
}
这些端点返回成功或失败。