×

对于 OpenShift Container Platform,Red Hat Enterprise Linux CoreOS (RHCOS) 是控制平面唯一支持的操作系统。对于节点主机,OpenShift Container Platform 支持 RHCOS 和 Red Hat Enterprise Linux (RHEL)。使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS),您可以扫描 RHCOS 节点的漏洞并检测潜在的安全威胁。

作为 RHCOS 安装的一部分,RHACS 会扫描节点主机上安装的 RHCOS RPM 包,以查找任何已知的漏洞。

首先,RHACS 会分析并检测 RHCOS 组件。然后,它会使用 RHEL 和以下数据流来匹配已识别组件的漏洞

  • 如果使用 StackRox Scanner 进行节点扫描,则会使用 OpenShift 4.X 开放漏洞和评估语言 (OVAL) v2 安全数据流。

  • 如果使用 Scanner V4 进行节点扫描,则会使用 Red Hat 通用安全咨询框架 (CSAF) 漏洞可利用性交换 (VEX)。

  • 如果使用 `roxctl` CLI 安装 RHACS,则必须手动启用 RHCOS 节点扫描功能。在 OpenShift Container Platform 上使用 Helm 或 Operator 安装方法时,此功能默认启用。

使用 StackRox Scanner 启用 RHCOS 节点扫描

如果您使用 OpenShift Container Platform,可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 来启用对 Red Hat Enterprise Linux CoreOS (RHCOS) 节点的漏洞扫描。

先决条件
步骤
  1. 运行以下命令之一来更新合规性容器。

    • 对于默认的禁用指标的合规性容器,请运行以下命令

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
    • 对于启用了 Prometheus 指标的合规性容器,请运行以下命令

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
  2. 通过执行以下步骤来更新 Collector DaemonSet (DS)

    1. 通过运行以下命令向 Collector DS 添加新的卷挂载

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
    2. 通过运行以下命令添加新的 `NodeScanner` 容器

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.6.1","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'

使用 Scanner V4 启用 RHCOS 节点扫描

如果您使用 OpenShift Container Platform,可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 来启用对 Red Hat Enterprise Linux CoreOS (RHCOS) 节点的漏洞扫描。

使用 Scanner V4 进行 RHCOS 节点扫描仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围

先决条件
步骤

要启用节点索引(也称为节点扫描),请使用 Scanner V4

  1. 在 Central Pod 的 `central` 容器中,通过在 Central 集群上运行以下命令将 `ROX_NODE_INDEX_ENABLED` 变量设置为 `true`

    $ kubectl -n stackrox set env deployment/central ROX_NODE_INDEX_ENABLED=true (1)
    1 对于 OpenShift Container Platform,请使用 `oc` 代替 `kubectl`。
  2. 在 Collector Daemonset 的 `compliance` 容器中,通过在安全集群上运行以下命令将 `ROX_NODE_INDEX_ENABLED` 变量设置为 `true`

    $ kubectl -n stackrox set env daemonset/collector ROX_NODE_INDEX_ENABLED=true (1)
    1 对于 OpenShift Container Platform,请使用 `oc` 代替 `kubectl`。
  3. 要验证节点扫描是否正常工作,请检查 Central 日志中是否有以下消息

    Scanned index report and found <number> components for node <node_name>.

    其中

    <number>

    指定发现的组件数量。

    <node_name>

    指定节点的名称。

分析和检测

当您将 RHACS 与 OpenShift Container Platform 一起使用时,RHACS 会创建两个用于分析和检测的协调容器:合规性容器和节点清单容器。合规性容器已经是早期 RHACS 版本的一部分。但是,节点清单容器是 RHACS 4.0 中的新增功能,仅适用于 OpenShift Container Platform 集群节点。

启动后,合规性容器和节点清单容器会在五分钟内开始对 Red Hat Enterprise Linux CoreOS (RHCOS) 软件组件进行第一次清单扫描。接下来,节点清单容器会扫描节点的文件系统以识别已安装的 RPM 包并报告 RHCOS 软件组件。之后,清单扫描会定期进行,通常每四个小时一次。您可以通过配置合规性容器的 ROX_NODE_SCANNING_INTERVAL 环境变量来自定义默认间隔。

RHCOS 节点的漏洞匹配

中央服务(包括 Central 和 Scanner)执行漏洞匹配。节点扫描使用以下扫描程序进行:

  • StackRox Scanner:这是默认扫描程序。StackRox Scanner 使用 Red Hat 的开放漏洞和评估语言 (OVAL) v2 安全数据流来匹配 Red Hat Enterprise Linux CoreOS (RHCOS) 软件组件中的漏洞。

  • Scanner V4:Scanner V4 可作为技术预览功能用于节点扫描。必须显式启用 Scanner V4。有关更多信息,请参阅“其他资源”中的文档。

扫描 RHCOS 节点时,4.0 版之后的 RHACS 不再使用 Kubernetes 节点元数据来查找内核和容器运行时版本。相反,RHACS 使用已安装的 RHCOS RPM 来评估该信息。

相关的环境变量

您可以使用以下环境变量来配置 RHACS 上的 RHCOS 节点扫描。

表 1. 节点清单配置
环境变量 描述

ROX_NODE_SCANNING_CACHE_TIME

缓存的清单被认为过时的时间。默认为 `ROX_NODE_SCANNING_INTERVAL` 的 90%,即 `3h36m`。

ROX_NODE_SCANNING_INITIAL_BACKOFF

如果找到回退文件,则节点扫描将延迟的初始时间(以秒为单位)。默认值为 `30s`。

ROX_NODE_SCANNING_MAX_BACKOFF

回退的上限。默认值为 5m,是 Kubernetes 重启策略稳定性计时器的 50%。

表 2. 合规性配置
环境变量 描述

ROX_NODE_INDEX_ENABLED

控制是否为此集群启用节点索引。默认值为 `false`。设置此变量以使用基于 Scanner V4 的 RHCOS 节点扫描。

ROX_NODE_SCANNING_INTERVAL

节点扫描之间间隔持续时间的基值。默认值为 `4h`。

ROX_NODE_SCANNING_INTERVAL_DEVIATION

节点扫描的持续时间可能与基间隔时间不同。但是,最大值受 `ROX_NODE_SCANNING_INTERVAL` 限制。

ROX_NODE_SCANNING_MAX_INITIAL_WAIT

第一次节点扫描之前的最大等待时间,该时间是随机生成的。您可以将此值设置为 `0` 以禁用初始节点扫描等待时间。默认值为 `5m`。

使用仪表板识别节点中的漏洞

您可以使用**漏洞管理**视图来识别节点中的漏洞。已识别的漏洞包括核心 Kubernetes 组件和容器运行时(如 Docker、CRI-O、runC 和 containerd)中的漏洞。有关 RHACS 可以扫描的操作系统的更多信息,请参阅“受支持的操作系统”。

步骤
  1. 在 RHACS 门户中,转到**漏洞管理**→**仪表板**。

  2. 选择标题上的**节点**以查看影响您节点的所有 CVE 列表。

  3. 从列表中选择一个节点以查看影响该节点的所有 CVE 的详细信息。

    1. 选择一个节点后,所选节点的节点详细信息面板将会打开。节点视图显示节点的详细信息,包括按 CVSS 分数划分的 CVE 信息以及该节点的可修复 CVE。

    2. 按 CVSS 分数划分的 CVE部件标题上选择查看全部,以查看所选节点中所有 CVE 的列表。您还可以筛选 CVE 列表。

    3. 要将可修复的 CVE 导出为 CSV 文件,请在节点发现部分选择导出为 CSV

查看节点 CVE

您可以使用 RHACS 识别节点中的漏洞。已识别的漏洞包括:

  • 核心 Kubernetes 组件中的漏洞

  • 容器运行时(例如 Docker、CRI-O、runC 和 containerd)中的漏洞

有关 RHACS 可以扫描的操作系统的更多信息,请参阅“受支持的操作系统”。

步骤
  1. 在 RHACS 门户中,单击漏洞管理节点 CVE

  2. 要查看数据,请执行以下任一操作:

    • 要查看影响所有节点的所有 CVE 列表,请选择<数量> 个 CVE

    • 要查看包含 CVE 的节点列表,请选择<数量> 个节点

  3. 可选:要根据实体筛选 CVE,请选择相应的筛选器和属性。要添加更多筛选条件,请按照以下步骤操作:

    1. 从列表中选择实体或属性。

    2. 根据您的选择,输入适当的信息(例如文本),或选择日期或对象。

    3. 单击向右箭头图标。

    4. 可选:选择其他实体和属性,然后单击向右箭头图标将其添加。筛选实体和属性列在下面的表格中。

      表 3. CVE 筛选
      实体 属性

      节点

      • 名称:节点的名称。

      • 操作系统:节点的操作系统,例如 Red Hat Enterprise Linux (RHEL)。

      • 标签:节点的标签。

      • 注释:节点的注释。

      • 扫描时间:节点的扫描日期。

      CVE

      • 名称:CVE 的名称。

      • 发现时间:RHACS 发现 CVE 的日期。

      • CVSS:CVE 的严重性级别。

        以下值与 CVE 的严重性级别相关联:

        • 大于

        • 大于或等于

        • 等于

        • 小于或等于

        • 小于

      节点组件

      • 名称:组件的名称。

      • 版本:组件的版本,例如 4.15.0-2024。您可以使用此信息搜索特定版本的组件,例如,与组件名称结合使用。

      集群

      • 名称:集群的名称。

      • 标签:集群的标签。

      • 类型:集群的类型,例如 OCP。

      • 平台类型:平台的类型,例如 OpenShift 4 集群。

  4. 可选:要细化结果列表,请执行以下任一操作:

    • 单击CVE 严重性,然后选择一个或多个级别。

    • 单击CVE 状态,然后选择可修复不可修复

  5. 可选:要查看节点的详细信息以及根据 CVSS 分数和该节点的可修复 CVE 的 CVE 信息,请单击节点列表中的节点名称。