了解 Red Hat Advanced Cluster Security for Kubernetes 架构和概念。
Red Hat Advanced Cluster Security for Kubernetes (RHACS) 使用分布式架构,支持大规模部署,并经过优化以最大限度地减少对底层 OpenShift Container Platform 或 Kubernetes 节点的的影响。
下图显示了包含 StackRox Scanner 和 Scanner V4 组件的架构。Scanner V4 的安装是可选的,但可以提供额外的好处。
您可以在 OpenShift Container Platform 或 Kubernetes 集群中将 RHACS 安装为一组容器。RHACS 包括以下服务:
您在一个集群上安装的中心服务
您在每个想要通过 RHACS 保护的集群上安装的安全集群服务
除了这些主要服务之外,RHACS 还与其他外部组件交互以增强集群的安全性。
当您使用 Operator 在 OpenShift Container Platform 上安装 RHACS 时,RHACS 会在每个受保护的集群上安装轻量级扫描器。轻量级扫描器可以扫描集成式 OpenShift 镜像注册表中的镜像。当您使用 Helm 安装方法(使用默认值)在 OpenShift Container Platform 或 Kubernetes 上安装 RHACS 时,不会安装轻量级扫描器版本。要在受保护的集群上使用 Helm 安装轻量级扫描器,必须设置scanner.disable=false
参数。您无法使用roxctl
安装方法安装轻量级扫描器。
您在一个集群上安装中心服务。这些服务包括以下组件:
中心服务 (Central):中心服务是 RHACS 应用程序管理界面和服务。它处理 API 交互和用户界面 (RHACS 门户) 访问。您可以使用同一个中心服务实例来保护多个 OpenShift Container Platform 或 Kubernetes 集群。
中心数据库 (Central DB):中心数据库是 RHACS 的数据库,处理所有数据持久化。它目前基于 PostgreSQL 13。
扫描器 V4 (Scanner V4):从 4.4 版本开始,RHACS 包含用于扫描容器镜像的扫描器 V4 漏洞扫描器。扫描器 V4 基于ClairCore,它也为Clair 扫描器提供支持。扫描器 V4 支持扫描特定语言和操作系统的镜像组件。对于 4.4 版本,您必须将此扫描器与 StackRox 扫描器结合使用,才能提供节点和平台扫描功能,直到扫描器 V4 支持这些功能为止。扫描器 V4 包含索引器、匹配器和数据库组件。
扫描器 V4 索引器 (Scanner V4 Indexer):扫描器 V4 索引器执行镜像索引(以前称为镜像分析)。给定镜像和注册表凭据,索引器会从注册表中提取镜像。它查找基本操作系统(如果存在)并查找软件包。它存储并输出索引报告,其中包含给定镜像的结果。
扫描器 V4 匹配器 (Scanner V4 Matcher):扫描器 V4 匹配器执行漏洞匹配。如果中心服务扫描器 V4 索引器已对镜像进行索引,则匹配器会从索引器获取索引报告,并将该报告与存储在扫描器 V4 数据库中的漏洞进行匹配。如果受保护的集群服务扫描器 V4 索引器执行了索引,则匹配器使用从该索引器发送的索引报告,然后与漏洞进行匹配。匹配器还会获取漏洞数据,并使用最新的漏洞数据更新扫描器 V4 数据库。扫描器 V4 匹配器输出漏洞报告,其中包含镜像的最终结果。
扫描器 V4 数据库 (Scanner V4 DB):此数据库存储扫描器 V4 的信息,包括所有漏洞数据和索引报告。在安装中心服务的集群上,扫描器 V4 数据库需要持久卷声明 (PVC)。
StackRox 扫描器 (StackRox Scanner):StackRox 扫描器是 RHACS 中的默认扫描器。4.4 版本添加了一个新的扫描器,扫描器 V4。StackRox 扫描器源于 Clair v2 开源扫描器的分支。您必须继续使用此扫描器进行 RHCOS 节点扫描和平台扫描。
扫描器数据库 (Scanner-DB):此数据库包含 StackRox 扫描器的相关数据。
RHACS 扫描器会分析每个镜像层以确定基本操作系统,并识别编程语言包和由操作系统包管理器安装的包。它们会将结果与来自各种漏洞来源的已知漏洞进行匹配。此外,StackRox 扫描器还会识别节点操作系统和平台中的漏洞。这些功能计划在未来的版本中添加到扫描器 V4 中。
漏洞来源取决于系统中使用的扫描器。RHACS 包含两个扫描器:StackRox 扫描器和扫描器 V4。StackRox 扫描器是默认扫描器,从 4.6 版本开始已弃用。扫描器 V4 在 4.4 版本中引入,是推荐的镜像扫描器。
StackRox 扫描器使用以下漏洞数据源:
Red Hat OVAL v2
在Amazon Linux 安全中心中跟踪的数据
NVD:这用于各种目的,例如在供应商未提供信息时填补信息空白。例如,Alpine 不提供描述、CVSS 评分、严重程度或发布日期。
本产品使用 NVD API,但未获得 NVD 的认可或认证。 |
Linux 手册条目和NVD 手册条目:上游 StackRox 项目维护着一组漏洞,这些漏洞可能由于其他来源的数据格式问题或数据缺失而未被发现。
repository-to-cpe.json:将 RPM 存储库映射到其相关的 CPE,这是匹配基于 RHEL 的镜像的漏洞所必需的。
扫描器 V4 使用以下漏洞数据源:
从 4.6 版本开始使用。此数据源以漏洞可利用性交换 (VEX)格式提供漏洞数据。RHACS 利用 VEX 的优势,大大减少了初始加载漏洞数据所需的时间和存储漏洞数据所需的空间。
当您使用使用 OVAL 的 RHACS 版本(例如 RHACS 4.5 版本)和使用 VEX 的版本(例如 4.6 版本)进行扫描时,RHACS 可能列出的漏洞数量不同。例如,RHACS 不再显示状态为“正在调查”的漏洞,而这些漏洞包含在以前使用 OVAL 数据的版本中。
有关 Red Hat 安全数据的更多信息,包括有关使用 OVAL、通用安全咨询框架版本 2.0 (CSAF) 和 VEX 的信息,请参阅Red Hat 安全数据的未来。
这与 VEX 数据一起用于出现在Red Hat 容器目录中的镜像。
这用于与语言相关的漏洞,例如 Go、Java、JavaScript、Python 和 Ruby。此数据源可能为漏洞提供 CVE ID 以外的其他漏洞 ID,例如 GitHub 安全咨询 (GHSA) ID。
RHACS 使用可在OSV.dev上获得的 OSV 数据库,该数据库受Apache License 2.0许可。 |
此功能用于多种用途,例如在供应商未提供信息时填补信息空白。例如,Alpine 未提供描述、CVSS 评分、严重性或发布日期。
本产品使用 NVD API,但未获得 NVD 的认可或认证。 |
在Amazon Linux 安全中心中跟踪的数据
StackRox:上游 StackRox 项目维护着一组漏洞,这些漏洞可能由于其他来源的数据格式或数据缺失而未被发现。
扫描器 V4 索引器使用以下文件来索引 Red Hat 容器
repository-to-cpe.json:将 RPM 存储库映射到其相关的 CPE,这是匹配基于 RHEL 的镜像的漏洞所必需的。
container-name-repos-map.json:此文件将容器名称与其各自的存储库匹配。
您可以使用 Red Hat Advanced Cluster Security 在要保护的每个集群上安装安全集群服务。安全集群服务包括以下组件
传感器 (Sensor):传感器是负责分析和监控集群的服务。传感器侦听 OpenShift Container Platform 或 Kubernetes API 和 Collector 事件以报告集群的当前状态。传感器还会根据 RHACS 策略触发部署时和运行时违规。此外,传感器还负责所有集群交互,例如应用网络策略、启动 RHACS 策略的重新处理以及与准入控制器交互。
准入控制器 (Admission controller):准入控制器阻止用户创建违反 RHACS 中安全策略的工作负载。
收集器 (Collector):收集器分析和监控集群节点上的容器活动。它收集容器运行时和网络活动信息,并将收集到的数据发送到传感器。
StackRox 扫描器:在 Kubernetes 中,安全集群服务包含 Scanner-slim 作为可选组件。但是,在 OpenShift Container Platform 上,RHACS 会在每个安全集群上安装 Scanner-slim 版本,以扫描 OpenShift Container Platform 集成注册表中以及可选的其他注册表中的镜像。
扫描器数据库 (Scanner-DB):此数据库包含 StackRox 扫描器的相关数据。
扫描器 V4:如果启用,则在安全集群上安装扫描器 V4 组件。
扫描器 V4 索引器 (Scanner V4 Indexer):扫描器 V4 索引器执行镜像索引(以前称为镜像分析)。给定镜像和注册表凭据,索引器会从注册表中提取镜像。它查找基本操作系统(如果存在)并查找软件包。它存储并输出索引报告,其中包含给定镜像的结果。
扫描器 V4 数据库 (Scanner V4 DB):如果启用扫描器 V4,则会安装此组件。此数据库存储扫描器 V4 的信息,包括索引报告。为了获得最佳性能,请为扫描器 V4 数据库配置持久卷声明 (PVC)。
当安全集群服务与中央服务安装在同一个集群和同一个命名空间中时,安全集群服务不会部署扫描器 V4 组件。而是假设中央服务已经包含扫描器 V4 的部署。 |
Red Hat Advanced Cluster Security for Kubernetes (RHACS) 与以下外部组件交互
第三方系统:您可以将 RHACS 与其他系统集成,例如 CI/CD 管道、事件管理 (SIEM) 系统、日志记录、电子邮件等等。
roxctl
:roxctl
是用于在 RHACS 上运行命令的命令行界面 (CLI)。
镜像注册表:您可以将 RHACS 与各种镜像注册表集成,并使用 RHACS 来扫描和查看镜像。RHACS 通过使用在安全集群中发现的镜像拉取密钥来自动配置活动镜像的注册表集成。但是,对于扫描非活动镜像,您必须手动配置注册表集成。
definitions.stackrox.io
:RHACS 在 definitions.stackrox.io
端点聚合来自各种漏洞源的数据,并将此信息传递给中央服务。这些数据源包括通用数据、国家漏洞数据库 (NVD) 数据以及特定发行版的数据,例如 Alpine、Debian 和 Ubuntu。
collector-modules.stackrox.io
:中央服务访问 collector-modules.stackrox.io
以获取受支持的内核模块,并将这些模块传递给收集器。
本节说明 RHACS 服务如何相互交互。
组件 | 方向 | 组件 | 描述 |
---|---|---|---|
中央服务 (Central) |
⮂ |
扫描器 V4 索引器 (Scanner V4 Indexer) |
中央服务请求索引器下载并索引(分析)给定的镜像。此过程会生成索引报告。扫描器 V4 索引器向中央服务请求映射文件,这些文件有助于索引过程。 |
中央服务 (Central) |
⮂ |
扫描器 V4 匹配器 (Scanner V4 Matcher) |
中央服务请求扫描器 V4 匹配器将给定的镜像与已知的漏洞匹配。此过程会生成最终扫描结果:漏洞报告。扫描器 V4 匹配器向中央服务请求最新的漏洞。 |
传感器 (Sensor) |
⮂ |
扫描器 V4 索引器 (Scanner V4 Indexer) |
在使用 Operator 部署或使用委托扫描时,Red Hat OpenShift 环境中默认启用 |
扫描器 V4 索引器 (Scanner V4 Indexer) |
→ |
镜像注册表 (Image Registries) |
索引器从注册表中提取镜像元数据以确定镜像的层,并下载每个以前未索引的层。 |
扫描器 V4 匹配器 (Scanner V4 Matcher) |
→ |
扫描器 V4 索引器 (Scanner V4 Indexer) |
扫描器 V4 匹配器向索引器请求镜像索引的结果(索引报告)。然后,它使用该报告来确定相关的漏洞。此交互仅在中央集群中对镜像进行索引时才会发生。当扫描器 V4 正在匹配安全集群中索引的镜像的漏洞时,不会发生此交互。 |
扫描器 V4 索引器 (Scanner V4 Indexer) |
→ |
扫描器 V4 数据库 (Scanner V4 DB) |
索引器存储与索引结果相关的数据,以确保只下载和索引镜像层一次。这可以防止不必要的网络流量和其他资源利用。 |
扫描器 V4 匹配器 (Scanner V4 Matcher) |
→ |
扫描器 V4 数据库 (Scanner V4 DB) |
扫描器 V4 匹配器将其所有漏洞数据存储在数据库中,并定期更新这些数据。扫描器 V4 索引器也会在漏洞匹配过程中查询这些数据。 |
传感器 (Sensor) |
⮂ |
中央服务 (Central) |
中央服务和传感器之间存在双向通信。传感器定期轮询中央服务以下载传感器捆绑包配置的更新。它还会发送安全集群观察到的活动和观察到的策略违规事件。中央服务与传感器通信以强制对所有部署针对已启用策略重新进行处理。 |
收集器 (Collector) |
⮂ |
传感器 (Sensor) |
收集器与传感器通信并将所有事件发送到集群的相应传感器。在受支持的 OpenShift Container Platform 集群上,收集器会分析安装在节点上的软件包并将它们发送到传感器,以便扫描器稍后可以扫描这些软件包中的漏洞。收集器还会向传感器请求缺少的驱动程序。传感器向收集器请求合规性扫描结果。此外,传感器从中央服务接收外部无类域间路由信息并将其推送到收集器。 |
准入控制器 (Admission controller) |
⮂ |
传感器 (Sensor) |
传感器将要强制执行的安全策略列表发送给准入控制器。准入控制器将安全策略违规警报发送给传感器。准入控制器也可以根据需要向传感器请求镜像扫描。 |
准入控制器 (Admission controller) |
➞ |
中央服务 (Central) |
这种情况并不常见;但是,如果已知中央服务端点且传感器不可用,则准入控制器可以直接与中央服务通信。 |
组件 | 方向 | 交互组件 | 描述 |
---|---|---|---|
中央服务 (Central) |
⮂ |
扫描器 |
中央组件和扫描器之间存在双向通信。中央组件请求扫描器进行图像扫描,扫描器请求中央组件更新其CVE数据库。 |
中央服务 (Central) |
➞ |
|
中央组件连接到 |
中央服务 (Central) |
➞ |
|
中央组件从 |
中央服务 (Central) |
➞ |
镜像仓库 |
中央组件查询镜像仓库以获取镜像元数据。例如,在RHACS门户中显示Dockerfile指令。 |
扫描器 |
➞ |
镜像仓库 |
扫描器从镜像仓库拉取镜像以识别漏洞。 |
传感器 (Sensor) |
⮂ |
中央服务 (Central) |
中央组件和传感器之间存在双向通信。传感器定期轮询中央组件以下载传感器捆绑包配置的更新。它还会发送事件,用于报告受保护集群的观察到的活动和观察到的策略违规情况。中央组件与传感器通信以强制重新处理针对已启用策略的所有部署。 |
传感器 (Sensor) |
⮂ |
扫描器 |
传感器可以与安装在受保护集群中的轻量级扫描器通信。此连接允许传感器在中央组件可能无法访问的情况下直接从受保护集群访问注册表。扫描器向传感器请求更新的数据,传感器将这些请求转发到中央组件,中央组件从 |
收集器 (Collector) |
⮂ |
传感器 (Sensor) |
收集器与传感器通信并将所有事件发送到集群的相应传感器。在受支持的 OpenShift Container Platform 集群上,收集器会分析安装在节点上的软件包并将它们发送到传感器,以便扫描器稍后可以扫描这些软件包中的漏洞。收集器还会向传感器请求缺少的驱动程序。传感器向收集器请求合规性扫描结果。此外,传感器从中央服务接收外部无类域间路由信息并将其推送到收集器。 |
准入控制器 (Admission controller) |
⮂ |
传感器 (Sensor) |
传感器将要强制执行的安全策略列表发送给准入控制器。准入控制器将安全策略违规警报发送给传感器。准入控制器也可以根据需要向传感器请求镜像扫描。 |
准入控制器 (Admission controller) |
➞ |
中央服务 (Central) |
这种情况并不常见;但是,如果已知中央服务端点且传感器不可用,则准入控制器可以直接与中央服务通信。 |
RHACS的组件使用各种默认端口和连接协议。根据您的系统和防火墙配置,您可能需要配置防火墙以允许特定端口上的流量。
下表提供了RHACS内部以及RHACS与外部组件之间某些连接的默认端口和协议。这有助于配置您的防火墙以允许入站和出站集群流量。
但是,在某些情况下,您可能需要更详细的信息。例如,如果您的防火墙集成在集群路由器中,您可能需要指定在同一个集群内但可能位于不同IP网络上的连接的端口。在这种情况下,您可以使用OpenShift Container Platform和Kubernetes集群中的RHACS网络策略YAML文件来确定可能需要配置的连接和端口。
组件或外部实体 | 连接类型 | 端口 | 附加信息 |
---|---|---|---|
中央组件和扫描器V4索引器 |
gRPC |
8443 |
|
中央组件和受保护集群上的传感器 |
|
443 |
传感器和中央组件主要通过传感器到中央组件443端口发起的双向gRPC流进行通信。 |
中央组件和用户(CLI) |
|
443 |
有关 |
中央组件和漏洞信息源 |
HTTPS |
443 |
默认连接到 |
收集器到传感器 |
gRPC |
443 |
这是一个由收集器到传感器443端口发起的双向gRPC连接。 |
收集器(合规性)到传感器 |
gRPC |
8444 |
如果在OpenShift Container Platform 4版本上启用了节点扫描,则此连接由传感器到收集器pod中运行的合规性组件发起。 |
扫描器到扫描器数据库 |
TCP |
5432 |
|
扫描器V4索引器到中央组件 |
HTTPS |
443 |
|
扫描器V4索引器和匹配器到扫描器V4数据库 |
TCP |
5432 |
|
传感器和准入控制器 |
gRPC |
443 |
这是一个由准入控制器到传感器443端口发起的双向gRPC流。这发生在委托扫描方案或OpenShift Container Platform受保护集群中。 |