RHACS 云服务


Red Hat Advanced Cluster Security for Kubernetes 4.5

关于 RHACS 云服务

Red Hat OpenShift Documentation Team

摘要

关于了解 RHACS 云服务的指导。

第 1 章 RHACS 云服务描述

1.1. RHACS 简介

Red Hat Advanced Cluster Security for Kubernetes (RHACS)是一个企业级的 Kubernetes 原生容器安全解决方案,可帮助您更安全地构建、部署和运行云原生应用程序。

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)提供 Kubernetes 原生安全性作为服务。使用 RHACS 云服务,红帽维护、升级和管理您的中央服务。

中央服务包括用户界面 (UI)、数据存储、RHACS 应用程序编程接口 (API) 和镜像扫描功能。您可以通过 Red Hat Hybrid Cloud Console 部署 Central 服务。当您创建新的 ACS 实例时,红帽会为 RHACS 创建单独的 control plane。

RHACS 云服务允许您保护与 Central 实例通信的自我管理集群。您安全(称为 Secured Clusters)的集群由您管理,而不是由红帽管理。安全的集群服务包括可选的漏洞扫描服务、准入控制服务以及用于运行时监控和合规性的数据收集服务。您可以在您要保护的任何 OpenShift 或 Kubernetes 集群上安装安全集群服务。

1.2. 架构

RHACS 云服务托管在 Amazon Web Services (AWS)上,两个区域 eu-west-1 和 us-east-1,并使用云提供商提供的网络访问点。RHACS 云服务的每个租户都使用高可用性出口代理,分布到 3 个可用区。有关 RHACS 云服务系统架构和组件的更多信息,请参阅 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)架构

1.3. 账单

客户可以在 Amazon Web Services (AWS) 市场购买 RHACS 云服务订阅。服务成本按安全内核每小时收取,或者属于安全集群的节点的 vCPU。

例 1.1. 订阅成本示例

如果您已建立到两个安全集群的连接,每个节点都有 5 个与 8 个 vCPU 相同的节点(如 Amazon EC2 m7g.2xlarge),则安全内核的总数为 80 (2 x 5 x 8 = 80)。

1.4. 安全性与合规性

Central 实例中的所有 RHACS 云服务数据在传输和静态中加密。数据存储在安全存储中,带有完整复制和高可用性以及定期备份。RHACS 云服务可通过云数据中心提供,以确保最佳性能和满足数据所在要求的能力。

1.4.1. 信息安全指南、角色和职责

红帽的信息安全指南与 NIST Cybersecurity Framework 一致,由执行管理进行批准。红帽为全球范围内认证信息安全专家的专业团队维护。请参见以下资源:

红帽具有严格的内部策略和实践来保护我们的客户及其业务。这些策略和实践是机密的。此外,我们遵守所有适用的法律法规,包括与数据隐私相关的规定。

红帽的信息安全角色和职责不由第三方管理。

红帽为我们的公司信息安全管理系统(ISMS)维护一个 ISO 27001 认证,它管理我们所有的人员的工作、公司端点设备以及身份验证和授权实践。通过实施红帽企业安全标准(ESS)对红帽使用的所有基础架构、产品、服务和技术,我们采取了标准化的方法。ESS 的副本在请求时可用。

RHACS Cloud Service 在 Amazon Web Services (AWS)上托管的 OpenShift Dedicated 实例上运行。OpenShift Dedicated 兼容 ISO 27001、ISO 27017、ISO 27018、PCI DSS、SOC 2 类型 2 和 HIPAA。强大的流程和安全控制与行业标准一致,以管理信息安全性。

RHACS 云服务遵循为 OpenShift Dedicated 定义的相同安全原则、准则、流程和控制。这些认证展示了我们的服务平台、相关操作和管理实践如何与核心安全要求保持一致。我们遵循 NIST 定义的安全软件开发框架(SSDF)实践(包括构建管道安全性)来满足许多要求。SSDF 控制的实施通过我们的安全软件管理生命周期(SSML)实施,用于所有产品和服务。

红帽成熟的全球站点可靠性工程(SRE)团队可全天候提供,并主动管理集群生命周期、基础架构配置、扩展、维护、安全修复和事件响应,因为它与 RHACS 云服务的托管组件相关。Red Hat SRE 团队负责管理 RHACS Cloud Service control plane 的 HA、正常运行时间、备份、恢复和安全性。RHACS 云服务通过电话或聊天附带 99.95% 的可用性 SLA 和 24x7 RH SRE 支持。

您负责使用该产品,包括实施 OpenShift Container Platform 环境中安全集群组件的策略、漏洞管理和部署。Red Hat SRE 团队管理 control plane,其中包含与之前记录的合规性框架匹配的租户数据,包括:

  • 所有 Red Hat SRE 都通过 backplane 访问 data plane 集群,它允许对集群的审计访问
  • Red Hat SRE 只部署来自 Red Hat registry 的镜像。发布到红帽 registry 的所有内容都经过严格的检查。这些镜像对于自我管理的客户是相同的镜像。
  • 每个租户都有自己的独立的 mTLS CA,它会在转换数据中加密,启用多租户隔离。通过 SELinux 控制命名空间和网络策略提供了额外的隔离。
  • 每个租户都有自己的 RDS 数据库的实例。

所有 Red Hat SREs 和开发人员都经过严格的安全开发生命周期培训。

如需更多信息,请参阅以下资源:

1.4.2. 漏洞管理程序

红帽在构建过程中扫描产品中的漏洞,以及我们的专用产品安全团队跟踪和评估新发现的漏洞。Red Hat Information Security 定期扫描运行的环境以了解漏洞。

级别为"关键(Critical) "和"关键(Important) "的安全公告(RHSA),以及级别为"紧急(Urgent) "和精选的程序错误修复公告(RHBA),一旦可用就会发布。所有其他可用的修复程序和补丁程序都通过定期更新发布。所有受关键或重要严重性漏洞影响的 RHACS 云服务软件都会在相关修复可用后立即更新。有关修复关键或高优先级问题的更多信息,请参阅了解红帽产品安全事件响应计划

1.4.3. 安全考试和审计

RHACS 云服务目前不包含任何外部安全认证或测试。

红帽信息风险和安全团队已经为我们的信息安全管理系统(ISMS)实现了 ISO 27001:2013 认证。

1.4.4. 系统互操作性安全性

RHACS 云服务支持与注册表、CI 系统、通知系统、服务Now 和 JIRA 等工作流系统集成,以及安全信息和事件管理(SIEM)平台。有关支持的集成的更多信息,请参阅 集成 文档。自定义集成可以使用 API 或通用 Webhook 来实施。

RHACS 云服务使用基于证书的架构(mTLS),用于客户站点与红帽之间的所有动态流量进行身份验证和端到端加密。它不需要 VPN。不支持 IP allowlist。数据传输使用 mTLS 加密。不支持文件传输,包括安全 FTP。

1.4.5. 恶意代码防止

RHACS 云服务部署在 Red Hat Enterprise Linux CoreOS (RHCOS)上。RHCOS 中的用户空间是只读的。另外,所有 RHACS 云服务实例都由 RHACS 监控在运行时。红帽为 Windows 和 Mac 平台使用商业可用企业级反关联性解决方案,该解决方案集中管理和记录。基于 Linux 的平台中的 anti-virus 解决方案不是红帽策略的一部分,因为它们可以引入其他漏洞。相反,我们会强化并依赖内置工具(如 SELinux)来保护平台。

红帽将 SentinelOne 和 osquery 用于单独的端点安全性,并在供应商提供更新时对其进行更新。

所有第三方 JavaScript 库都会下载并包含在构建镜像中,这些镜像中会针对漏洞进行扫描。

1.4.6. 系统开发生命周期安全性

红帽遵循安全的开发生命周期实践。红帽产品安全团队实践与开放 Web 应用程序安全项目(OWASP)和 ISO12207:2017 均一致。红帽涵盖了 OWASP 项目建议以及其他安全软件开发实践,以增加我们产品的一般安全状况。OWASP 项目分析包含在红帽自动扫描、安全测试和威胁模型中,因为 OWASP 项目根据所选的 CWE 弱点构建。红帽会监控我们的产品中的弱点,以便在问题被利用并成为漏洞前对其进行解决。

如需更多信息,请参阅以下资源:

应用程序会定期扫描,并公开提供该产品的容器扫描结果。例如,在 Red Hat Ecosystem Catalog 网站上,您可以选择组件镜像,如 rhacs-main,点 Security 选项卡查看健康索引和安全更新的状态。

作为红帽政策的一部分,我们所依赖的任何第三方组件都会发布一个支持政策和维护计划。

1.4.7. 软件 Bill of Materials

红帽已发布用于核心红帽产品的软件资料(SBOM)文件。SBOM 是一个机器可读、全面的清单(清单)的软件组件和依赖项,以及许可证和验证信息。SBOM 文件有助于建立对一系列软件应用程序和库的采购和审核情况的评论。SBOMs 与漏洞利用 eXchange (VEX)相结合,可帮助组织解决其漏洞风险评估流程。它们一起提供有关可能存在的潜在风险(其中包括了存在安全漏洞的工件以及此工件和组件或产品之间的关联),以及它们对已知漏洞或漏洞的当前状态。

红帽与其他供应商一起合作定义发布有用的 SBOM 的具体要求,可与通用安全公告框架(CSAF)-VEX 文件关联,并告知消费者及合作伙伴如何使用这些数据。现在,由红帽发布的 SBOM 文件(包括 RHACS 云服务的 SBOM)被视为是客户测试的 beta 版本,并可通过 https://access.redhat.com/security/data/sbom/beta/spdx/ 获得。

有关红帽安全数据的详情,请参阅 红帽安全数据的未来

1.4.8. 数据中心和供应商

红帽使用以下第三方供应商提供订阅支持服务:

  • Flexential 托管 Raleigh 数据中心,这是用于支持红帽客户门户数据库的主要数据中心。
  • digital Realty 托管 Phoenix 数据中心,这是支持红帽客户门户数据库的辅助备份数据中心。
  • salesforce 提供客户票务系统后面的引擎。
  • AWS 用于增加数据中心基础架构容量,其中一些用于支持红帽客户门户网站应用程序。
  • Akamai 用于托管 Web 应用程序防火墙并提供 DDoS 保护。
  • iron Mountain 用于处理敏感材料的破坏。

1.5. Access control

用户帐户通过基于角色的访问控制(RBAC)进行管理。如需更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 中的管理 RBAC。红帽站点可靠性工程师(SRE)可以访问 Central 实例。使用 OpenShift RBAC 控制访问权限。凭证在终止时会立即撤销。

1.5.1. 身份验证供应商

当使用 Red Hat Hybrid Cloud Console 创建 Central 实例时,集群管理员的身份验证将配置为过程的一部分。客户必须管理对 Central 实例的所有访问,作为其集成解决方案的一部分。有关可用身份验证方法的更多信息,请参阅了解身份验证提供程序

RHACS 云服务中的默认身份提供程序是 Red Hat Single Sign-On (SSO)。设置授权规则,为创建 RHACS 云服务的用户以及标记为 Red Hat SSO 中的机构管理员的用户提供管理员访问权限。默认情况下,RHACS 云服务禁用 admin 登录,只能由 SREs 临时启用。有关使用 Red Hat SSO 进行身份验证的更多信息,请参阅对 ACS 控制台的默认访问

1.5.2. 密码管理

红帽密码策略需要使用复杂的密码。密码必须包含至少 14 个字符和至少三个字符:

  • 基本 10 位数字(0 到 9)
  • 大写字符(A 到 Z)
  • 小写字符( 到 z)
  • 标点符号、空格和其他字符

大多数系统需要双因素身份验证。

红帽遵循 NIST 指南 的最佳实践。

1.5.3. 远程访问

通过实施以下准则,严格控制了对远程支持和故障排除的访问:

  • VPN 访问的强大双因素身份验证
  • 带有管理和管理网络的隔离网络,需要通过堡垒主机进行额外的身份验证
  • 所有访问和管理都通过加密的会话执行

我们的客户支持团队提供 Bomgar 作为远程访问解决方案,用于故障排除。Bomgar 会话是可选的,必须由客户启动,并可以被监控和控制。

为防止信息泄漏,日志通过我们的安全信息和事件管理(SIEM)应用程序(SIEM)应用程序向 SRE 提供。

1.5.4. 法规合规性

有关最新的规范合规性信息,请参阅了解 OpenShift Dedicated 的进程和安全性

1.6. 数据保护

红帽通过使用各种方法(如日志记录、访问控制和加密)来提供数据保护。

1.6.1. 数据存储介质保护

为了防止我们的数据和客户端数据不受破坏或破坏的风险,红帽使用以下方法:

  • 访问日志
  • 自动帐户终止流程
  • 最低特权原则的应用

在可能和实际情况下,数据会被按照 NIST 指南和联邦信息处理标准(FIPS)进行传输和静态传输。这包括备份系统。

RHACS 云服务使用 AWS 管理的密钥管理服务(KMS)密钥加密 Amazon Relational Database Service (RDS)数据库中的数据。应用程序与数据库之间的所有数据以及系统之间的数据交换均在传输中加密。

1.6.1.1. 数据保留和销毁

法律要求保留包含个人数据的记录。法律或合理的业务需求不需要的记录会被安全地删除。使用军事等级工具,包括操作程序中的安全数据破坏性要求。此外,员工还可以访问安全文档破坏设施。

1.6.1.2. Encryption

红帽使用 AWS 每年轮转的 AWS 管理的密钥。有关使用密钥的详情,请参考 AWS KMS 密钥管理。有关 RDS 的更多信息,请参阅 Amazon RDS 安全

1.6.1.3. 多租户

RHACS 云服务根据 OpenShift Container Platform 上的命名空间隔离租户。SELinux 提供额外的隔离。每个客户都有唯一的 RDS 实例。

1.6.1.4. 数据所有权

客户数据存储在加密的 RDS 数据库中,在公共互联网上不可用。只有 Site Reliability 工程师(SRE)有权访问它,并且会审核访问。

每个 RHACS 云服务系统都与红帽外部 SSO 集成。设置授权规则后,为创建云服务的用户以及标记为 Red Hat SSO 中的机构管理员的用户提供管理员访问权限。默认情况下,RHACS 云服务禁用 admin 登录,只能由 SREs 临时启用。

红帽收集有关连接到 RHACS 云服务的安全集群数量的信息,以及功能的使用情况。应用程序生成的元数据并存储在 RDS 数据库中由客户所有。红帽仅访问数据以进行故障排除以及客户权限。红帽访问权限需要审核权限升级。

在合同终止后,红帽可以在请求后执行安全磁盘擦除。但是,我们无法物理销毁介质(如 AWS 等云供应商不提供这个选项)。

要在出现漏洞时保护数据,您可以执行以下操作:

  • 使用集群管理页面立即断开所有安全集群与 RHACS 云服务的连接。
  • 使用 Access Control 页面立即禁用对 RHACS Cloud Service 的访问。
  • 立即删除您的 RHACS 实例,它也会删除 RDS 实例。

任何 AWS RDS (数据存储)特定访问修改都由 RHACS 云服务 SRE 工程师实现。

1.7. 指标和日志记录

1.7.1. 服务指标

服务指标仅供内部使用。红帽在商定的级别提供和维护服务。服务指标只能被授权的红帽人员访问。如需更多信息,请参阅 PRODUCT APPENDIX 4 Red Hat ONLINE SERVICES

1.7.2. 客户指标

核心使用容量指标可以通过 Subscription WatchSubscriptions 页面 获得。

1.7.3. 服务日志记录

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)的所有组件的系统日志是内部的,且仅适用于红帽员工。红帽不提供对组件日志的用户访问权限。如需更多信息,请参阅 PRODUCT APPENDIX 4 Red Hat ONLINE SERVICES

1.8. 更新和升级

红帽在对影响服务的更新和升级之前,红帽以合理的努力通知客户。有关对 Central 实例的服务更新所需的决定,其计时是 Red Hat 的唯一责任。

客户无法控制何时对 Central 服务进行升级。如需更多信息,请参阅 PRODUCT APPENDIX 4 Red Hat ONLINE SERVICES。升级到 Red Hat Advanced Cluster Security Cloud Service (RHACS 云服务)的版本被视为服务更新的一部分。升级对客户是透明的,不需要任何更新站点的连接。

客户负责及时进行 RHACS 安全集群服务升级,需要与 RHACS 云服务保持兼容性。

红帽建议为连接到 RHACS 云服务的安全集群启用自动升级。

有关升级版本的更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes Support Matrix

1.9. 可用性

可用性和避免出现灾难对于任何安全平台至关重要。Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)对多个级别的故障提供了大量保护。为了考虑可能的云供应商失败,红帽建立了多个可用区。

1.9.1. 备份和恢复

RHACS 云服务灾难恢复策略包括数据库备份和自定义。这也适用于存储在 Central 数据库中的客户数据。恢复时间因设备和数据库大小的数量而异;但是,由于设备可以进行集群和分发,因此当正确架构规划时,RTO 可以提前减少前期。

所有快照都使用适当的云供应商快照 API 创建,然后上传到安全对象存储,用于 Amazon Web Services (AWS)是一个 S3 存储桶。

  • 红帽不提交恢复点目标(RPO)或恢复时间目标(RTO)。如需更多信息,请参阅 PRODUCT APPENDIX 4 Red Hat ONLINE SERVICES
  • 站点可靠性工程仅作为预防措施执行备份。它们存储在与集群相同的区域中。
  • 客户应该部署带有 Kubernetes 最佳实践的多个可用区保护集群,以确保区域内的高可用性。

灾难恢复计划至少每年执行。商业 Continuity Management Standard 和 guideline 将被实施,以便 BC 生命周期始终跟整个机构。此策略包括每年测试或主要更改功能计划的要求。审核会话需要在任何计划练习或激活后执行,并根据需要计划更新。

红帽有生成器备份系统。我们的 IT 生产系统托管在 Tier 3 数据中心设施中,具有重复测试以确保冗余运行。每年会审核他们以验证合规性。

1.10. 获取对 RHACS 云服务的支持

如果您在执行本文档所述的某个流程或 RHACS 云服务时遇到问题,请访问红帽客户门户

在客户门户网站中,您可以执行以下操作:

  • 搜索或者浏览红帽知识库,了解与红帽产品相关的文章和解决方案。
  • 提交问题单给红帽支持。
  • 访问其他产品文档。

要识别集群中的问题,您可以在 RHACS 云服务中使用 Insights。Insights 提供了问题的详细信息,并在有可用的情况下,提供了如何解决问题的信息。

1.11. 服务删除

您可以使用 Red Hat Hybrid Cloud Console 中的默认删除操作删除 RHACS 云服务。删除 RHACS Cloud Service Central 实例会自动删除所有 RHACS 组件。删除不可逆。

1.12. 定价

有关订阅费用的详情,请参考 PRODUCT APPENDIX 4 Red HatT ONLINE SERVICES

1.13. 服务等级协议

有关为 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)提供的服务级别协议(SLA)的更多信息,请参阅 PRODUCT APPENDIX 4 RED HAT ONLINE SERVICES

第 2 章 Red Hat Advanced Cluster Security Cloud Service 职责概述

本文档概述了 RHACS 云服务管理服务的红帽和客户职责。

2.1. RHACS 云服务的共享职责

虽然红帽管理 RHACS 云服务,但也称为 中央服务,但客户拥有某些职责。

资源或操作红帽负责客户责任

托管的组件,也称为中央组件

  • 平台监控
  • 软件更新
  • 高可用性
  • 备份和恢复
  • 安全性
  • 基础架构配置
  • 扩展
  • 维护
  • 漏洞管理
  • 访问和身份授权

安全集群(内部环境或云)

 
  • 软件更新
  • 备份和恢复
  • 安全性
  • 基础架构配置
  • 扩展
  • 维护
  • 访问和身份授权
  • 漏洞管理

第 3 章 Red Hat Advanced Cluster Security Cloud Service 架构

发现 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)架构和概念。

3.1. Red Hat Advanced Cluster Security Cloud Service 架构概述

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)是一个红帽管理的软件即服务(SaaS)平台,可让您在构建、部署和运行时生命周期中保护 Kubernetes 和 OpenShift Container Platform 集群和应用程序。

RHACS 云服务包括许多内置的 DevOps 实施控制和以安全为中心的最佳实践,具体取决于行业标准,如互联网安全中心(CIS)基准和国家标准技术(NIST)指南。您还可以将其与现有 DevOps 工具和工作流集成,以提高安全性和合规性。

RHACS 云服务架构

下图显示了带有 StackRox Scanner 和 Scanner V4 的架构。Scanner V4 的安装是可选的,但提供了额外的优点。

RHACS 云服务

中央服务包括用户界面 (UI)、数据存储、RHACS 应用程序编程接口 (API) 和镜像扫描功能。您可以通过 Red Hat Hybrid Cloud Console 部署 Central 服务。当您创建新的 ACS 实例时,红帽会为 RHACS 创建单独的 control plane。

RHACS 云服务允许您保护与 Central 实例通信的自我管理集群。您安全(称为 Secured Clusters)的集群由您管理,而不是由红帽管理。安全的集群服务包括可选的漏洞扫描服务、准入控制服务以及用于运行时监控和合规性的数据收集服务。您可以在您要保护的任何 OpenShift 或 Kubernetes 集群上安装安全集群服务。

3.2. Central

红帽管理 Central,即 RHACS 云服务的 control plane。这些服务包括以下组件:

  • Central : Central 是 RHACS 应用程序管理界面和服务。它处理 API 交互和用户界面 (RHACS Portal) 访问。
  • Central DB : Central DB 是 RHACS 的数据库,并处理所有数据持久性。它目前基于 PostgreSQL 13。
  • 扫描程序 V4 :从版本 4.4 开始,RHACS 包含 Scanner V4 漏洞扫描程序,用于扫描容器镜像。扫描程序 V4 基于 ClairCore 构建,同时还支持 Clair 扫描程序。scanner V4 包括 Indexer、Matcher 和 Scanner V4 DB 组件,它们用于扫描。
  • stackrox Scanner: StackRox Scanner 是 RHACS 中的默认扫描程序。StackRox 扫描程序源自 Clair v2 开源扫描程序的分叉。
  • scanner-DB :此数据库包含 StackRox Scanner 的数据。

RHACS 扫描程序会分析每个镜像层,以确定基础操作系统,并确定操作系统软件包管理器安装的编程语言软件包和软件包。它们与来自各种漏洞来源的已知漏洞匹配。另外,StackRox Scanner 会识别节点的操作系统和平台中的漏洞。这些功能计划在以后的版本中为 Scanner V4。

3.2.1. 漏洞源

RHACS 使用以下漏洞源:

Scanner V4 Indexer 使用以下文件来索引红帽容器:

3.3. 安全的集群服务

您可以使用 Red Hat Advanced Cluster Security Cloud Service 在您要保护的每个集群中安装安全集群服务。安全的集群服务包括以下组件:

  • Sensor :传感器是负责分析和监控集群的服务。Sensor 侦听 OpenShift Container Platform 或 Kubernetes API 和 Collector 事件来报告集群的当前状态。Sensor 还根据 RHACS 云服务策略触发部署时间和运行时违反情况。另外,Sensor 负责所有集群交互,如应用网络策略、启动 RHACS 云服务策略的重新处理以及与 Admission 控制器交互。
  • 准入控制器 : Admission 控制器可防止用户创建在 RHACS 云服务中违反安全策略的工作负载。
  • Collector :收集器分析和监控集群节点上的容器活动。它收集容器运行时和网络活动信息,并将收集的数据发送到 Sensor。
  • stackrox Scanner :在 Kubernetes 中,安全集群服务程序包括 Scanner-slim 作为可选组件。但是,在 OpenShift Container Platform 上,RHACS 云服务在每个安全集群中安装 Scanner-slim 版本,以便在 OpenShift Container Platform 集成 registry 和其他 registry 中扫描镜像。
  • scanner-DB :此数据库包含 StackRox Scanner 的数据。
  • scanner V4: Scanner V4 组件会在安全集群中安装(如果已启用)。

    • scanner V4 Indexer: Scanner V4 Indexer 执行镜像索引,之前被称为镜像分析。根据镜像和 registry 凭证,索引程序会从 registry 中拉取镜像。它找到基础操作系统(如果存在),并查找软件包。它存储和输出索引报告,其中包含给定镜像的查找。
    • 扫描程序 V4 DB :如果启用了 Scanner V4,则安装此组件。此数据库存储扫描程序 V4 的信息,包括索引报告。为获得最佳性能,请为 Scanner V4 DB 配置持久性卷声明(PVC)。

      注意

      当在与 Central 服务相同的集群中安装并安装到同一命名空间中时,安全集群服务不会部署 Scanner V4 组件。相反,假设 Central 服务已经包含 Scanner V4 的部署。

其他资源

3.4. 数据访问和权限

红帽无法访问在其中安装安全集群服务的集群。实际上,RHACS 云服务并不需要访问安全集群的权限。例如,您不需要创建一个新的 IAM 策略、访问角色或 API 令牌。

但是,RHACS 云服务会存储安全集群服务发送的数据。所有数据都在 RHACS 云服务中加密。在 RHACS 云服务平台中加密数据有助于确保数据的保密性和完整性。

当您在集群中安装安全集群服务时,它会生成数据并将其传送到 RHACS 云服务。此数据在 RHACS 云服务平台内保持安全,只有授权的 SRE 团队成员和系统才能访问这些数据。RHACS 云服务使用此数据来监控集群和应用程序的安全性和合规性,并提供有用的分析和分析,以帮助您优化部署。

第 4 章 RHACS 云服务入门

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)为您的 Red Hat OpenShift 和 Kubernetes 集群提供安全服务。有关安全集群支持的平台的更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes Support Matrix

先决条件

  • 确保您可以从 Red Hat Hybrid Cloud Console 访问 Advanced Cluster Security 菜单选项。

    注意

    要访问 RHACS Cloud Service 控制台,您需要 Red Hat Single Sign-On (SSO)凭证,如果配置了其他身份提供程序的凭证。请参阅 对 ACS 控制台的默认访问权限

4.1. 安装步骤的高级概述

以下小节概述了安装步骤和相关文档的链接。

4.1.1. 保护 Red Hat OpenShift 集群

要使用 Operator 保护 Red Hat OpenShift 集群,请执行以下步骤:

  1. 验证您要保护的集群 是否满足要求
  2. 在 Red Hat Hybrid Cloud 控制台中,创建一个 ACS 实例
  3. 在您要保护的每个 Red Hat OpenShift 集群中,创建一个名为 stackrox的项目。此项目将包含 RHACS 云服务安全集群的资源。
  4. 在 ACS 控制台中,创建一个 init 捆绑包。init 捆绑包包含允许 RHACS 云服务安全集群和 ACS 控制台通信的 secret。
  5. 在每个 Red Hat OpenShift 集群中,使用它来创建资源 来应用 init 捆绑包
  6. 在每个 Red Hat OpenShift 集群上,安装 RHACS Operator
  7. 在每个 Red Hat OpenShift 集群中,使用 Operator stackrox 项目中创建安全 集群资源。
  8. 通过确保安全集群可以与 ACS 实例通信来验证安装。???

要使用 Helm chart 或 roxctl CLI 保护 Red Hat OpenShift 集群,请执行以下步骤:

  1. 验证您要保护的集群 是否满足要求
  2. 在 Red Hat Hybrid Cloud 控制台中,创建一个 ACS 实例
  3. 在您要保护的每个 Red Hat OpenShift 集群中,创建一个名为 stackrox的项目。此项目将包含 RHACS 云服务安全集群的资源。
  4. 在 ACS 控制台中,创建一个 init 捆绑包。init 捆绑包包含允许 RHACS 云服务安全集群和 ACS 控制台通信的 secret。
  5. 在每个 Red Hat OpenShift 集群中,使用它来创建资源 来应用 init 捆绑包
  6. 在每个 Red Hat OpenShift 集群中,使用 Helm chartroxctl CLIstackrox 集群中安装安全集群资源。
  7. 通过确保安全集群可以与 ACS 实例通信来验证安装。???

4.1.2. 保护 Kubernetes 集群

要保护 Kubernetes 集群,请执行以下步骤:

  1. 验证您要保护的集群 是否满足要求
  2. 在 Red Hat Hybrid Cloud 控制台中,创建一个 ACS 实例
  3. 在 ACS 控制台中,创建一个 init 捆绑包。init 捆绑包包含允许 RHACS 云服务安全集群和 ACS 控制台通信的 secret。
  4. 在每个 Kubernetes 集群中,使用它创建资源 应用 init 捆绑包
  5. 在每个 Kubernetes 集群中,使用 Helm chart 或 roxctl CLI 安装安全 集群资源。
  6. 通过确保安全集群可以与 ACS 实例通信来验证安装。???

4.2. 对 ACS 控制台的默认访问权限

默认情况下,用户可用的身份验证机制是使用 Red Hat Single Sign-On (SSO)进行身份验证。您不能删除或更改 Red Hat SSO 身份验证提供程序。但是,您可以更改最小访问角色并添加额外规则,或者添加其他身份提供程序。

注意

要了解身份验证提供程序在 ACS 中的工作方式,请参阅了解身份验证供应商

为每个 ACS 控制台创建一个 sso.redhat.com 的专用 OIDC 客户端。所有 OIDC 客户端共享相同的 sso.redhat.com 域。sso.redhat.com 发布的令牌中的声明映射到 ACS 发布的令牌,如下所示:

  • realm_access.rolesgroups
  • org_id to rh_org_id
  • is_org_admin to rh_is_org_admin
  • subuserid

内置的 Red Hat SSO 身份验证提供程序将所需的属性 rh_org_id 设置为分配给创建 RHACS 云服务实例的用户的机构 ID。这是用户所属的机构帐户的 ID。这可以被视为用户所具备的"租户",并且归其所有。只有具有相同组织帐户的用户才能使用 Red Hat SSO 身份验证提供程序访问 ACS 控制台。

注意

要更好地控制对 ACS 控制台的访问权限,请配置另一个身份提供程序,而不依赖于 Red Hat SSO 身份验证提供程序。如需更多信息,请参阅了解身份验证提供程序。要将其他身份验证提供程序配置为登录页面上的第一个身份验证选项,其名称应小于 Red Hat SSO

最小访问角色设置为 None。为此字段分配不同的值,可以将 RHACS Cloud Service 实例访问到具有相同机构帐户的所有用户。

在内置 Red Hat SSO 身份验证提供程序中设置的其他规则包括:

  • userid 映射到 Admin的规则
  • 将机构的管理员映射到 Admin的规则

您可以添加更多规则,将 ACS 控制台的访问权限授予具有相同机构帐户的人员。例如,您可以使用 email 作为密钥。

第 5 章 Red Hat Advanced Cluster Security Cloud Service 的默认资源要求

5.1. RHACS 云服务的常规要求

在安装 Red Hat Advanced Cluster Security Cloud Service 前,您的系统必须满足几个要求。

警告

您不能在以下位置安装 RHACS 云服务:

  • Amazon Elastic File System(Amazon EFS)。使用带有默认 gp2 卷类型的 Amazon Elastic Block Store(Amazon EBS)。
  • 没有 SIMD 扩展 (SSE) 4.2 指令集的旧 CPU。例如,比 Sandy Bridge 和 AMD 处理器旧的 Intel 处理器(比 Bulldozer 旧)。这些处理器在 2011 年发布。

要安装 RHACS 云服务,您必须有以下系统之一:

  • OpenShift Container Platform 版本 4.11 或更高版本,以及带有 Red Hat Enterprise Linux CoreOS (RHCOS)或 Red Hat Enterprise Linux (RHEL)支持的操作系统的集群节点
  • 受支持的受管 Kubernetes 平台,以及具有 Amazon Linux、CentOS、Container-Optimized OS (Google、Red Hat Enterprise Linux CoreOS (RHCOS)、Debian、Red Hat Enterprise Linux (RHEL)或 Ubuntu)支持的受管 Kubernetes 平台和集群节点

    有关支持的平台和架构的详情,请查看 Red Hat Advanced Cluster Security for Kubernetes 支持列表

以下最低要求和建议适用于集群节点。

架构

支持的构架有 amd64、ppc64 le、或 s390x

注意

IBM Power (ppc64le)、IBM Z (s390x)和 IBM® LinuxONE (s390x)集群支持安全集群服务。

处理器
需要 3 个 CPU 内核。
内存

需要 6 GiB RAM。

注意

请参阅每个组件的默认内存和 CPU 要求,并确保节点大小可以支持它们。

Storage

对于 RHACS 云服务,不需要持久性卷声明(PVC)。但是,如果您启用了 Scanner V4 的安全集群,则强烈建议使用 PVC。使用固态驱动器(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。

重要

您不能将 Ceph FS 存储与 RHACS 云服务一起使用。红帽建议将 RBD 块模式 PVC 用于 RHACS 云服务。

如果您计划使用 Helm chart 安装 RHACS 云服务,您必须满足以下要求:

  • 如果您要使用 Helm chart 安装和配置 RHACS 云服务,则必须具有 Helm 命令行界面(CLI) v3.2 或更新版本。使用 helm version 命令验证已安装的 Helm 版本。
  • 您必须有权访问 Red Hat Container Registry。有关从 registry.redhat.io 下载镜像的详情,请参考 Red Hat Container Registry Authentication

5.2. 安全的集群服务

安全集群服务包含以下组件:

  • Sensor
  • 准入控制器
  • Collector
  • scanner (可选)
  • 扫描程序 V4 (可选)

如果使用 Web 代理或防火墙,您必须确保安全集群和 Central 可以在 HTTPS 端口 443 中进行通信。

5.2.1. Sensor

Sensor 监控 Kubernetes 和 OpenShift Container Platform 集群。这些服务目前在单个部署中进行部署,它处理与 Kubernetes API 的交互,并与其他 Red Hat Advanced Cluster Security for Kubernetes 组件协调。

CPU 和内存要求

下表列出了在安全集群中安装并运行 sensor 所需的最小 CPU 和内存值。

SensorCPU内存

Request(请求)

2 个内核

4 GiB

限制

4 个核

8 GiB

5.2.2. 准入控制器

Admission 控制器可防止用户创建违反您配置策略的工作负载。

CPU 和内存要求

默认情况下,准入控制服务运行 3 个副本。下表列出了每个副本的请求和限制。

准入控制器CPU内存

Request(请求)

0.05 个内核

100 MiB

限制

0.5 个内核

500 MiB

5.2.3. Collector

收集器将安全集群中每个节点的运行时活动监控为 DaemonSet。它连接到 Sensor 来报告此信息。收集器 Pod 有三个容器。第一个容器是收集器,它监控和报告节点上的运行时活动。另外两个是 compliance 和 node-inventory。

集合要求

要使用 CORE_BPF 集合方法,基本内核必须支持 BTF,并且 BTF 文件必须可供收集器使用。通常,内核版本必须高于 5.8 (适用于 RHEL 节点的4.18)和 CONFIG_DEBUG_INFO_BTF 配置选项必须被设置。

收集器在以下列表中显示的标准位置查找 BTF 文件:

例 5.1. BTF 文件位置

Copy to Clipboard Toggle word wrap
/sys/kernel/btf/vmlinux
/boot/vmlinux-<kernel-version>
/lib/modules/<kernel-version>/vmlinux-<kernel-version>
/lib/modules/<kernel-version>/build/vmlinux
/usr/lib/modules/<kernel-version>/kernel/vmlinux
/usr/lib/debug/boot/vmlinux-<kernel-version>
/usr/lib/debug/boot/vmlinux-<kernel-version>.debug
/usr/lib/debug/lib/modules/<kernel-version>/vmlinux

如果存在这些文件,则内核可能会支持 BTF,CORE_BPF 是可配置的。

CPU 和内存要求

默认情况下,收集器 Pod 运行 3 个容器。下表列出了每个容器的请求和限值,以及每个收集器 Pod 的总数。

收集器容器
类型CPU内存

Request(请求)

0.06 内核

320 MiB

限制

0.9 个内核

1000 MiB

Compliance 容器
类型CPU内存

Request(请求)

0.01 个内核

10 MiB

限制

1 个内核

2000 MiB

node-inventory 容器
类型CPU内存

Request(请求)

0.01 个内核

10 MiB

限制

1 个内核

500 MiB

收集器 pod 总数要求
类型CPU内存

Request(请求)

0.07 个内核

340 MiB

限制

2.75 个内核

3500 MiB

5.2.4. 扫描程序

CPU 和内存要求

此表中的要求基于 3 个副本的默认值。

stackrox ScannerCPU内存

Request(请求)

3 个内核

4500 MiB

限制

6 个内核

12 GiB

StackRox Scanner 需要 Scanner DB (PostgreSQL 15)存储数据。下表列出了安装和运行 Scanner DB 所需的最小内存和存储值。

扫描程序数据库(Scanner DB)CPU内存

Request(请求)

0.2 个内核

512 MiB

限制

2 个内核

4 GiB

5.2.5. scanner V4

扫描程序 V4 是可选的。如果在安全集群中安装 Scanner V4,则应用以下要求。

CPU、内存和存储要求
scanner V4 Indexer

此表中的要求基于默认的 2 个副本。

scanner V4 IndexerCPU内存

Request(请求)

2 个内核

3000 MiB

限制

4 个核

6 GiB

扫描程序 V4 DB

扫描程序 V4 需要 Scanner V4 DB (PostgreSQL 15)来存储数据。下表列出了安装和运行 Scanner V4 DB 所需的最小 CPU、内存和存储值。对于 Scanner V4 DB,不需要 PVC,但强烈建议这样做,因为它可确保最佳性能。

扫描程序 V4 DBCPU内存Storage

Request(请求)

0.2 个内核

2 GiB

10 GiB

限制

2 个内核

4 GiB

10 GiB

第 7 章 使用 Red Hat OpenShift 安全集群设置 RHACS 云服务

7.1. 在 Red Hat Cloud 上创建 RHACS 云实例

通过在 Red Hat Hybrid Cloud Console 中选择一个实例来访问 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)。ACS 实例 包含红帽为您配置和管理的 RHACS 云服务管理界面和服务。管理界面连接到您的安全集群,其中包含扫描的服务并收集有关漏洞的信息。一个实例可以连接到并监控多个集群。

7.1.1. 在控制台中创建实例

在 Red Hat Hybrid Cloud 控制台中,创建一个 ACS 实例 以连接到您的安全集群。

流程

创建 ACS 实例

  1. 登录到 Red Hat Hybrid Cloud 控制台。
  2. 在导航菜单中选择 Advanced Cluster SecurityACS Instances
  3. 选择 Create ACS 实例 并在显示字段中输入信息,或者从下拉列表中选择适当的选项:

    • 名称 :输入 ACS 实例的名称ACS 实例 包含 RHACS Central 组件,也称为 "Central",其中包括由红帽配置和管理的 RHACS 云服务管理界面和服务。您管理与 Central 通信的安全集群。您可以将多个安全集群连接到一个实例。
    • 云供应商 : Central 所在的云供应商。选择 AWS
    • Cloud region : Central 所在的云供应商的区域。选择以下区域之一:

      • US-East, N. Virginia
      • 欧洲、爱尔兰
    • 可用区 : 使用默认值()。
  4. 单击 Create instance

7.1.2. 后续步骤

7.2. 在 Red Hat OpenShift 安全集群中创建项目

在您要保护的每个 Red Hat OpenShift 集群上创建一个项目。然后,您可以使用此项目使用 Operator 或 Helm chart 安装 RHACS Cloud Service 资源。

7.2.1. 在集群中创建项目

流程

  • 在 OpenShift Container Platform 集群中,进入 HomeProjects 并为 RHACS Cloud Service 创建一个项目。使用 stackrox 作为项目名称

7.2.2. 后续步骤

  • 在 ACS 控制台中,创建一个 init 捆绑包。init 捆绑包包含允许 RHACS 云服务安全集群和 ACS 控制台通信的 secret。

7.3. 为安全集群生成 init 捆绑包

在集群中安装 SecuredCluster 资源前,您必须创建一个 init 捆绑包。安装并配置 SecuredCluster 的集群,然后使用此捆绑包与 Central 进行身份验证。您可以使用 RHACS 门户或 roxctl CLI 创建 init 捆绑包。然后,您可以使用它应用 init 捆绑包来创建资源。

注意

您必须具有 Admin 用户角色才能创建 init 捆绑包。

7.3.1. 生成 init 捆绑包

7.3.1.1. 使用 RHACS 门户生成 init 捆绑包

您可以使用 RHACS 门户创建包含 secret 的 init 捆绑包。

注意

您必须具有 Admin 用户角色才能创建 init 捆绑包。

流程

  1. 如"使用 Operator 方法验证中央安装"中所述,查找 RHACS 门户的地址。
  2. 登录到 RHACS 门户。
  3. 如果您没有安全集群,则会出现 Platform ConfigurationClusters 页面。
  4. Create init bundle
  5. 为集群 init 捆绑包输入一个名称。
  6. 选择您的平台。
  7. 选择您要用于安全集群的安装方法: OperatorHelm Chart
  8. Download 生成并下载以 YAML 文件形式创建的 init 捆绑包。如果您使用相同的安装方法,您可以对所有安全集群使用一个 init 捆绑包及其对应的 YAML 文件。

    重要

    安全地存储此捆绑包,因为它包含 secret。

  9. 通过使用它来在安全集群中创建资源来应用 init 捆绑包。
  10. 在每个集群中安装安全的集群服务。
7.3.1.2. 使用 roxctl CLI 生成 init 捆绑包

您可以使用 roxctl CLI 创建带有 secret 的 init 捆绑包。

注意

您必须具有 Admin 用户角色才能创建 init 捆绑包。

先决条件

  • 您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    1. 运行以下命令设置 ROX_API_TOKEN

      Copy to Clipboard Toggle word wrap
      $ export ROX_API_TOKEN=<api_token>
    2. 运行以下命令设置 ROX_CENTRAL_ADDRESS 环境变量:

      Copy to Clipboard Toggle word wrap
      $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
重要

在 RHACS Cloud Service 中,当使用需要 Central 地址的 roxctl 命令时,请使用 Red Hat Hybrid Cloud Console 的 Instance Details 部分显示的 Central 实例地址。例如,使用 acs-ABCD12345.acs.rhcloud.com 而不是 acs-data-ABCD12345.acs.rhcloud.com

流程

  • 要生成包含 Helm 安装 secret 的集群 init 捆绑包,请运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate --output \
      <cluster_init_bundle_name> cluster_init_bundle.yaml
  • 要生成包含 Operator 安装 secret 的集群 init 捆绑包,请运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate --output-secrets \
      <cluster_init_bundle_name> cluster_init_bundle.yaml
    重要

    确保您安全地存储此捆绑包,因为它包含 secret。您可以使用同一捆绑包来设置多个安全集群。

7.3.2. 后续步骤

7.4. 为安全集群应用 init 捆绑包

使用它应用 init 捆绑包来创建资源。

注意

您必须具有 Admin 用户角色才能应用 init 捆绑包。

7.4.1. 在安全集群中应用 init 捆绑包

在配置安全集群前,您必须使用它来应用 init 捆绑包以便在安全集群中创建所需资源。应用 init 捆绑包可让安全集群中的服务与 RHACS 云服务通信。

注意

如果使用 Helm chart 安装,请不要执行此步骤。使用 Helm 完成安装 ; 请参阅"使用 Helm chart 在安全集群中安装 RHACS"。

先决条件

  • 您必须生成了一个包含 secret 的 init 捆绑包。
  • 您必须在安装安全集群服务的集群中创建了 stackrox 项目或命名空间。不需要将 stackrox 用于项目,而是确保在扫描集群时不会报告 RHACS 进程的漏洞。

流程

要创建资源,请执行以下步骤之一:

  • 使用 OpenShift Container Platform Web 控制台创建资源: 在 OpenShift Container Platform Web 控制台中,确保您位于 stackrox 命名空间中。在顶部菜单中,点 + 打开 Import YAML 页面。您可以拖动 init 捆绑包文件或将其内容复制并粘贴到编辑器中,然后点 Create。命令完成后,显示显示 collector-tlssensor-tls 和 admission-control-tls 的资源已创建。
  • 使用 Red Hat OpenShift CLI 创建资源: 使用 Red Hat OpenShift CLI 运行以下命令来创建资源:

    Copy to Clipboard Toggle word wrap
    $ oc create -f <init_bundle>.yaml \
    1
    
      -n <stackrox> 
    2
    1
    指定包含 secret 的 init 捆绑包的文件名。
    2
    指定安装 Central 服务的项目的名称。

验证

  • 重启 Sensor 以获取新证书。

    有关如何重启 Sensor 的更多信息,请参阅"添加资源"部分中的"重启 Sensor 容器"。

7.4.2. 后续步骤

  • 在每个 Red Hat OpenShift 集群上,安装 RHACS Operator
  • 在您要监控的所有集群中安装 RHACS 安全集群服务。

7.4.3. 其他资源

7.5. 安装 Operator

在安全集群中安装 RHACS Operator。

7.5.1. 为 RHACS 云服务安装 RHACS Operator

使用 OpenShift Container Platform 提供的 OperatorHub 是安装 RHACS Operator 的最简单方法。

先决条件

流程

  1. 在 Web 控制台中,进入 OperatorsOperatorHub 页面。
  2. 如果没有显示 Red Hat Advanced Cluster Security for Kubernetes,在 Filter by keyword 框中输入 Advanced Cluster Security 来查找 Red Hat Advanced Cluster Security for Kubernetes Operator。
  3. 选择 Red Hat Advanced Cluster Security for Kubernetes Operator 查看详情页。
  4. 阅读 Operator 的信息,然后点 Install
  5. Install Operator 页面中:

    • 保留安装模式的默认值 All namespaces on the cluster
    • 选择要在其中为 Installed namespace 字段安装 Operator 的特定命名空间。在 rhacs-operator 命名空间中安装 Red Hat Advanced Cluster Security for Kubernetes Operator。
    • 更新批准选择自动或手工。

      如果选择自动更新,则当有新版 Operator 可用时,Operator Lifecycle Manager (OLM)会自动升级 Operator 的运行实例。

      如果选择手动更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准更新请求,才能将 Operator 更新至最新版本。

      红帽建议在 RHACS 云服务中为 Operator 启用自动升级。如需更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes Support Matrix

  6. Install

验证

  • 安装完成后,进入 OperatorsInstalled Operators,以验证 Red Hat Advanced Cluster Security for Kubernetes Operator 的状态是否为 Succeeded

7.5.2. 后续步骤

7.6. 从 RHACS 云服务安装安全集群资源

您可以使用 Operator 或 Helm chart 在安全集群中安装 RHACS 云服务。您还可以使用 roxctl CLI 安装它,但不要使用这个方法,除非您有需要使用它的特定安装需要。

先决条件

  • 您已创建了 Red Hat OpenShift 集群,并在其上安装 Operator。
  • 在 RHACS 云服务中的 ACS 控制台中,您已创建并下载 init 捆绑包。
  • 您可以使用 oc create 命令应用 init 捆绑包。
  • 在安装过程中,您记下 Central API 端点地址。您可以从云控制台导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。

7.6.1. 使用 Operator 在安全集群中安装 RHACS

7.6.1.1. 安装安全的集群服务

您可以使用 Operator 在集群中安装 Secured Cluster 服务,这将创建 SecuredCluster 自定义资源。您必须在要监控的环境中的每个集群中安装 Secured Cluster 服务。

重要

安装 Red Hat Advanced Cluster Security for Kubernetes 时:

  • 如果您是首次安装 RHACS,您必须首先安装 Central 自定义资源,因为 SecuredCluster 自定义资源安装依赖于 Central 生成的证书。
  • 不要在名称以 kubeopenshiftredhat 开头的项目中安装 SecuredCluster,或在 istio-system 项目中安装 SecuredCluster。
  • 如果要在同时托管 Central 的集群中安装 RHACS SecuredCluster 自定义资源,请确保将其安装到与 Central 相同的命名空间中安装。
  • 如果要在没有主机 Central 的集群中安装 Red Hat Advanced Cluster Security for Kubernetes SecuredCluster 自定义资源,红帽建议您在自己的项目中安装 Red Hat Advanced Cluster Security for Kubernetes SecuredCluster 自定义资源,而不是在您安装了 Red Hat Advanced Cluster Security for Kubernetes Operator 的项目中。

先决条件

  • 如果使用 OpenShift Container Platform,您必须安装版本 4.11 或更高版本。
  • 您已在要保护的集群中安装了 RHACS Operator,称为安全集群。
  • 您已生成 init 捆绑包并将其应用到集群。

流程

  1. 在安全集群的 OpenShift Container Platform Web 控制台中,进入 OperatorsInstalled Operators 页面。
  2. 点 RHACS Operator。
  3. 如果您在推荐的命名空间中安装了 Operator,OpenShift Container Platform 会将项目列为 rhacs-operator。选择 Project: rhacs-operatorCreate project

    注意
    • 如果在不同的命名空间中安装了 Operator,OpenShift Container Platform 将列出该命名空间的名称,而不是 rhacs-operator
  4. 输入新项目名称(如 stackrox),然后点 Create。红帽建议您使用 stackrox 作为项目名称。
  5. Operator 详情页面的中央导航菜单中点 Secured Cluster
  6. Create SecuredCluster
  7. Configure via 字段中选择以下选项之一:

    • 表单视图 :如果要使用屏幕字段配置安全集群且不需要更改任何其他字段,则使用这个选项。
    • YAML 视图 :使用此视图使用 YAML 文件设置安全集群。YAML 文件显示在窗口中,您可以在其中编辑字段。如果您选择这个选项,请在完成编辑完该文件时,点 Create
  8. 如果使用 Form view,请通过接受或编辑默认名称来输入新项目名称。默认值为 stackrox-secured-cluster-services
  9. 可选:为集群添加任何标签。
  10. 输入您的 SecuredCluster 自定义资源的唯一名称。
  11. 对于 Central 端点,请输入您的 Central 实例的地址。例如,如果 Central 位于 https://central.example.com,则将中央端点指定为 central.example.com

    • 对于 RHACS 云服务,请使用 Central API 端点地址。您可以从 Red Hat Hybrid Cloud Console 导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 RHACS 实例。
    • 只有在安装了 Central 的同一集群中安装安全集群服务时,才使用 central.stackrox.svc:443 的默认值。
    • 在配置多个集群时,不要使用默认值。反之,在为每个集群配置 Central Endpoint 值时使用主机名。
  12. 对于剩余的字段,接受默认值,或者根据需要配置自定义值。例如,如果您使用自定义证书或不受信任的 CA,您可能需要配置 TLS。如需更多信息,请参阅"使用 Operator 为 RHACS 配置安全集群服务选项"。
  13. Create
  14. 在短暂暂停后,Secured Clusters 页面会显示 stackrox-secured-cluster-services 的状态。您可能会看到以下条件:

    • conditions: Deployed, Initialized: 已安装安全集群服务,安全集群与 Central 通信。
    • conditions: Initialized, Irreconcilable: 安全集群没有与 Central 通信。确保将您在 RHACS web 门户中创建的 init 捆绑包应用到安全集群。

后续步骤

  1. 配置额外的安全集群设置(可选)。
  2. 验证安装。

7.6.2. 使用 Helm chart 在安全集群中安装 RHACS 云服务

您可以使用没有自定义的 Helm chart、使用默认值或配置参数自定义的 Helm chart 在安全集群中安装 RHACS。

首先,确保添加 Helm Chart 仓库。

7.6.2.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    Copy to Clipboard Toggle word wrap
    $ helm repo add rhacs https://mirror.openshift.com/pub/rhacs/charts/

Red Hat Advanced Cluster Security for Kubernetes 的 Helm 仓库包括用于安装不同组件的 Helm chart,包括:

  • 用于安装集中组件(Central 和 Scanner)的中央服务Helm Chart(central-services)。

    注意

    您只部署集中式组件一次,并可使用同一安装监控多个独立集群。

  • 安全集群服务 Helm Chart (secured-cluster-services),用于安装 per-cluster 和 per-node 组件(Sensor、Admission Controller、Collector 和 Scanner-slim)。

    注意

    将 per-cluster 组件部署到要监控的每个集群中,并在要监控的所有节点中部署 per-node 组件。

验证

  • 运行以下命令来验证添加的 chart 存储库:

    Copy to Clipboard Toggle word wrap
    $ helm search repo -l rhacs/
7.6.2.2. 使用 Helm chart 在安全集群中安装 RHACS 云服务
7.6.2.2.1. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart

使用以下说明安装 secure-cluster-services Helm chart,以部署 per-cluster 和 per-node 组件(Sensor、Admission controller、Collector 和 Scanner-slim)。

先决条件

  • 您必须已为集群生成 RHACS init 捆绑包。
  • 您必须有权访问 Red Hat Container Registry 和一个 pull secret 进行身份验证。有关从 registry.redhat.io 下载镜像的详情,请参考 Red Hat Container Registry Authentication
  • 您必须具有公开 Central 服务的地址。

流程

  • 在基于 Kubernetes 的集群上运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \
    1
    
        -f <path_to_pull_secret.yaml> \
    2
    
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 
    3
    
        --set imagePullSecrets.username=<your redhat.com username> \
    4
    
        --set imagePullSecrets.password=<your redhat.com password>
    5
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    使用 -f 选项指定 Red Hat Container Registry 身份验证的 pull secret 的路径。
    3
    指定 Central 的地址和端口号。例如,acs.domain.com:443
    4
    为 Red Hat Container Registry 身份验证包含 pull secret 的用户名。
    5
    包括 Red Hat Container Registry 身份验证的 pull secret 密码。
  • 在 OpenShift Container Platform 集群中运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \
    1
    
        -f <path_to_pull_secret.yaml> \
    2
    
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 
    3
    
        --set scanner.disable=false 
    4
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    使用 -f 选项指定 Red Hat Container Registry 身份验证的 pull secret 的路径。
    3
    指定 Central 的地址和端口号。例如,acs.domain.com:443
    4
    scanner.disable 参数的值设置为 false,这意味着在安装过程中将启用 Scanner-slim。在 Kubernetes 中,安全集群服务现在包括 Scanner-slim 作为可选组件。
7.6.2.3. 使用自定义配置 secured-cluster-services Helm chart

您可以将 Helm Chart 配置参数与 helm installhelm upgrade 命令一起使用。使用 --set 选项或创建 YAML 配置文件来指定这些参数。

创建以下文件来配置 Helm chart 来安装 Red Hat Advanced Cluster Security for Kubernetes:

  • 公共配置文件 values-public.yaml :使用此文件保存所有非敏感配置选项。
  • 专用配置文件 values-private.yaml :使用此文件保存所有敏感配置选项。确保您安全地存储这个文件。
重要

使用 secured-cluster-services Helm Chart 时,请不要更改属于 chart 的 values.yaml 文件。

7.6.2.3.1. 配置参数
参数Description

clusterName

集群的名称。

centralEndpoint

Central 端点的地址。如果使用一个支持非 gRPC 的负载均衡器,请使用带有 ws:// 的端点地址的 WebSocket 协议。在配置多个集群时,使用主机名作为地址。例如,central.example.com

sensor.endpoint

Sensor 端点的地址,包括端口号。

sensor.imagePullPolicy

Sensor 容器的镜像拉取策略。

sensor.serviceTLS.cert

Sensor 使用的内部服务到服务 TLS 证书。

sensor.serviceTLS.key

Sensor 使用的内部服务到服务 TLS 证书密钥。

sensor.resources.requests.memory

Sensor 容器的内存请求。使用此参数覆盖默认值。

sensor.resources.requests.cpu

Sensor 容器的 CPU 请求。使用此参数覆盖默认值。

sensor.resources.limits.memory

Sensor 容器的内存限值。使用此参数覆盖默认值。

sensor.resources.limits.cpu

Sensor 容器的 CPU 限制。使用此参数覆盖默认值。

sensor.nodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Sensor 仅调度到具有指定标签的节点。

sensor.tolerations

如果节点选择器选择污点节点,请使用此参数指定污点容限键、值和 Sensor 的效果。此参数主要用于基础架构节点。

image.main.name

main(主) 镜像的名称。

image.collector.name

Collector 镜像的名称。

image.main.registry

用于主镜像的 registry 地址。

image.collector.registry

用于 Collector 镜像的 registry 地址。

image.scanner.registry

用于 Scanner 镜像的 registry 地址。

image.scannerDb.registry

用于 Scanner DB 镜像的 registry 地址。

image.scannerV4.registry

用于 Scanner V4 镜像的 registry 地址。

image.scannerV4DB.registry

用于 Scanner V4 DB 镜像的 registry 地址。

image.main.pullPolicy

main 镜像的镜像拉取策略。

image.collector.pullPolicy

Collector 镜像的镜像拉取策略。

image.main.tag

使用 main 镜像标签。

image.collector.tag

使用 collector 镜像标签。

collector.collectionMethod

CORE_BPFNO_COLLECTION

collector.imagePullPolicy

Collector 容器的镜像拉取策略。

collector.complianceImagePullPolicy

Compliance 容器的镜像拉取策略。

collector.disableTaintTolerations

如果指定了 false,则容限应用到 Collector,并且收集器 pod 可以调度到具有污点的所有节点上。如果将其指定为 true,则不会应用任何容限,且收集器 pod 不会调度到具有污点的节点。

collector.resources.requests.memory

Collector 容器的内存请求。使用此参数覆盖默认值。

collector.resources.requests.cpu

Collector 容器的 CPU 请求。使用此参数覆盖默认值。

collector.resources.limits.memory

Collector 容器的内存限值。使用此参数覆盖默认值。

collector.resources.limits.cpu

Collector 容器的 CPU 限制。使用此参数覆盖默认值。

collector.complianceResources.requests.memory

Compliance 容器的内存请求。使用此参数覆盖默认值。

collector.complianceResources.requests.cpu

Compliance 容器的 CPU 请求。使用此参数覆盖默认值。

collector.complianceResources.limits.memory

Compliance 容器的内存限值。使用此参数覆盖默认值。

collector.complianceResources.limits.cpu

Compliance 容器的 CPU 限制。使用此参数覆盖默认值。

collector.serviceTLS.cert

Collector 使用的内部服务到服务的 TLS 证书。

collector.serviceTLS.key

Collector 使用的内部服务到服务的 TLS 证书密钥。

admissionControl.listenOnCreates

此设置控制 Kubernetes 是否配置为联系 Red Hat Advanced Cluster Security for Kubernetes,使用 AdmissionReview 请求进行工作负载创建事件。

admissionControl.listenOnUpdates

当将此参数设置为 false 时,Red Hat Advanced Cluster Security for Kubernetes 会以 Kubernetes API 服务器不发送对象更新事件的方式创建 ValidatingWebhookConfiguration。由于对象更新的卷通常高于对象创建的,所以保留此项为 false 会限制准入控制服务的负载,并减少准入控制服务的几率。

admissionControl.listenOnEvents

此设置控制集群是否被配置为联系 Red Hat Advanced Cluster Security for Kubernetes,使用 AdmissionReview 请求用于 Kubernetes execportforward 事件。RHACS 不支持 OpenShift Container Platform 3.11 的此功能。

admissionControl.dynamic.enforceOnCreates

此设置控制 Red Hat Advanced Cluster Security for Kubernetes 是否评估策略 ; 如果被禁用,则会自动接受所有 AdmissionReview 请求。

admissionControl.dynamic.enforceOnUpdates

此设置控制准入控制服务的行为。您必须把 listenOnUpdates 指定为 true 才能正常工作。

admissionControl.dynamic.scanInline

如果将这个选项设置为 true,则准入控制服务会在做出准入决策前请求镜像扫描。由于镜像扫描需要几秒钟,因此只有在您确保部署前扫描集群中使用的所有镜像(例如,在镜像构建期间通过 CI 集成),才启用此选项。这个选项与 RHACS 门户中的 Contact image scanners 选项对应。

admissionControl.dynamic.disableBypass

将它设置为 true 以禁用绕过 Admission 控制器。

admissionControl.dynamic.timeout

在将其标记为失败前,使用此参数指定 RHACS 必须等待准入审核的最大秒数。如果准入 Webhook 在超时时间结束前没有收到请求的信息,它会失败,但处于打开状态时,它仍然允许操作成功。例如,准入控制器允许创建部署,即使扫描超时,RHACS 无法确定部署是否违反了策略。从版本 4.5 开始,红帽将 RHACS 准入控制器 webhook 的默认超时设置从 20 秒减少到 10 秒,从而导致 ValidatingWebhookConfiguration 的有效超时时间为 12 秒。此更改不会影响 OpenShift Container Platform 用户,因为 OpenShift Container Platform 在 13 秒内封装超时。

admissionControl.resources.requests.memory

Admission Control 容器的内存请求。使用此参数覆盖默认值。

admissionControl.resources.requests.cpu

Admission Control 容器的 CPU 请求。使用此参数覆盖默认值。

admissionControl.resources.limits.memory

Admission Control 容器的内存限值。使用此参数覆盖默认值。

admissionControl.resources.limits.cpu

Admission Control 容器的 CPU 限制。使用此参数覆盖默认值。

admissionControl.nodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Admission Control 仅调度到具有指定标签的节点。

admissionControl.tolerations

如果节点选择器选择污点节点,请使用此参数指定污点容限键、值以及 Admission Control 的效果。此参数主要用于基础架构节点。

admissionControl.serviceTLS.cert

Admission Control 使用的内部服务到服务的 TLS 证书。

admissionControl.serviceTLS.key

Admission Control 使用的内部服务对服务的 TLS 证书密钥。

registryOverride

使用此参数覆盖默认的 docker.io registry。如果使用其他 registry,请指定 registry 的名称。

collector.disableTaintTolerations

如果指定了 false,则容限应用到 Collector,Collector pod 可以调度到具有污点的所有节点上。如果您将其指定为 true,则不会应用任何容限,Collector pod 不会调度到具有污点的节点。

createUpgraderServiceAccount

指定 true 以创建 sensor-upgrader 帐户。默认情况下,Red Hat Advanced Cluster Security for Kubernetes 在每个安全集群中创建一个名为 sensor-upgrader 的服务帐户。此帐户具有高特权,但仅在升级过程中使用。如果您没有创建这个帐户,当 Sensor 没有足够权限时,则必须手动完成将来的升级。

createSecrets

指定 false 以跳过 Sensor、Collector 和 Admission 控制器的编配 secret 创建。

collector.slimMode

已弃用。如果要使用 slim Collector 镜像部署 Collector,请指定 true

sensor.resources

Sensor 的资源规格。

admissionControl.resources

Admission 控制器的资源规格。

collector.resources

Collector 的资源规格。

collector.complianceResources

Collector 的 Compliance 容器的资源规格。

exposeMonitoring

如果将此选项设置为 true,Red Hat Advanced Cluster Security for Kubernetes 会在 Sensor、Collector 和 Admission 控制器的端口号 9090 上公开 Prometheus 指标端点。

auditLogs.disableCollection

如果将此选项设置为 true,Red Hat Advanced Cluster Security for Kubernetes 会禁用用于检测对配置映射和 secret 的访问和修改的审计日志检测功能。

scanner.disable

如果将此选项设置为 false,Red Hat Advanced Cluster Security for Kubernetes 会在安全集群中部署一个 Scanner-slim 和 Scanner DB,以允许在集成的 OpenShift 镜像 registry 上扫描镜像。OpenShift Container Platform 和 Kubernetes 安全集群中支持启用 Scanner-slim。默认值为 true

scanner.dbTolerations

如果节点选择器选择污点节点,请使用此参数为 Scanner DB 指定污点容限键、值和效果。

scanner.replicas

Collector 的 Compliance 容器的资源规格。

scanner.logLevel

通过设置此参数,您可以修改扫描程序日志级别。使用这个选项仅用于故障排除目的。

scanner.autoscaling.disable

如果将此选项设置为 true,Red Hat Advanced Cluster Security for Kubernetes 会禁用 Scanner 部署中的自动扩展。

scanner.autoscaling.minReplicas

自动扩展的最小副本数。默认值为 2。

scanner.autoscaling.maxReplicas

自动扩展的最大副本数。默认值为 5。

scanner.nodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Scanner 仅调度到具有指定标签的节点。

scanner.tolerations

如果节点选择器选择污点节点,请使用此参数为 Scanner 指定污点容限键、值和效果。

scanner.dbNodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Scanner DB 仅调度到具有指定标签的节点。

scanner.dbTolerations

如果节点选择器选择污点节点,请使用此参数为 Scanner DB 指定污点容限键、值和效果。

scanner.resources.requests.memory

Scanner 容器的内存请求。使用此参数覆盖默认值。

scanner.resources.requests.cpu

Scanner 容器的 CPU 请求。使用此参数覆盖默认值。

scanner.resources.limits.memory

Scanner 容器的内存限值。使用此参数覆盖默认值。

scanner.resources.limits.cpu

Scanner 容器的 CPU 限制。使用此参数覆盖默认值。

scanner.dbResources.requests.memory

Scanner DB 容器的内存请求。使用此参数覆盖默认值。

scanner.dbResources.requests.cpu

Scanner DB 容器的 CPU 请求。使用此参数覆盖默认值。

scanner.dbResources.limits.memory

Scanner DB 容器的内存限值。使用此参数覆盖默认值。

scanner.dbResources.limits.cpu

Scanner DB 容器的 CPU 限制。使用此参数覆盖默认值。

monitoring.openshift.enabled

如果将此选项设置为 false,Red Hat Advanced Cluster Security for Kubernetes 将不会设置 Red Hat OpenShift 监控。在 Red Hat OpenShift 4 上默认为 true

network.enableNetworkPolicies

为了在网络级别提供安全性,RHACS 在安装了安全集群资源的命名空间中创建默认 NetworkPolicy 资源。这些网络策略允许在特定端口上到特定组件的入站网络数据。如果您不希望 RHACS 创建这些策略,则将此参数设置为 False。这是一个布尔值。默认值为 True,这意味着会自动创建默认策略。

警告

禁用创建默认网络策略可能会破坏 RHACS 组件之间的通信。如果禁用创建默认策略,则必须创建自己的网络策略来允许此通信。

7.6.2.3.1.1. 环境变量

您可以采用以下格式指定 Sensor 和 Admission Controller 的环境变量:

Copy to Clipboard Toggle word wrap
customize:
  envVars:
    ENV_VAR1: "value1"
    ENV_VAR2: "value2"

通过 customize 设置,您可以为此 Helm Chart 创建的所有对象指定自定义 Kubernetes 元数据(标签和注解)以及工作负载的其他 pod 标签、Pod 注解和容器环境变量。

配置是分层的,在更通用范围(例如,所有对象)中定义的元数据被覆盖为更通用范围的元数据(例如,仅适用于 Sensor 部署)。

7.6.2.3.2. 使用自定义安装 secured-cluster-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 secure-cluster-services Helm chart 以部署以下 per-cluster 和 per-node 组件:

  • Sensor
  • 准入控制器
  • Collector
  • scanner:安装 StackRox Scanner 时为安全集群可选
  • 扫描程序 DB:安装 StackRox Scanner 时为安全集群可选
  • 安装 Scanner V4 Indexer 和 Scanner V4 DB 时,扫描程序 V4 Indexer 和 Scanner V4 DB: 可选

先决条件

  • 您必须已为集群生成 RHACS init 捆绑包。
  • 您必须有权访问 Red Hat Container Registry 和一个 pull secret 进行身份验证。有关从 registry.redhat.io 下载镜像的详情,请参考 Red Hat Container Registry Authentication
  • 您必须有用于公开 Central 服务的地址和端口号。

流程

  • 运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ helm install -n stackrox \
      --create-namespace stackrox-secured-cluster-services rhacs/secured-cluster-services \
      -f <name_of_cluster_init_bundle.yaml> \
      -f <path_to_values_public.yaml> -f <path_to_values_private.yaml> \
    1
    
      --set imagePullSecrets.username=<username> \
    2
    
      --set imagePullSecrets.password=<password> 
    3
    1
    使用 -f 选项指定 YAML 配置文件的路径。
    2
    为 Red Hat Container Registry 身份验证包含 pull secret 的用户名。
    3
    包括 Red Hat Container Registry 身份验证的 pull secret 密码。
注意

要使用持续集成(CI)系统部署 secure-cluster-services Helm Chart,请将 init 捆绑包 YAML 文件作为环境变量传递给 helm install 命令:

Copy to Clipboard Toggle word wrap
$ helm install ... -f <(echo "$INIT_BUNDLE_YAML_SECRET") 
1
1
如果您使用 base64 编码变量,请使用 helm install …​ -f <(echo "$INIT_BUNDLE_YAML_SECRET" | base64 --decode) 命令。
7.6.2.4. 在部署 secure-cluster-services Helm chart 后更改配置选项

在部署 secure-cluster-services Helm Chart 后,您可以对任何配置选项进行更改。

当使用 helm upgrade 命令进行修改时,会应用以下准则和要求:

  • 您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,每当您进行更改时,您必须手动指定所有选项。
  • 有些更改(如启用 Scanner V4)需要为组件发布新证书。因此,您必须在进行这些更改时提供 CA。

    • 如果 CA 在初始安装过程中由 Helm chart 生成,则必须从集群中检索这些值,并将其提供给 helm upgrade 命令。central-services Helm Chart 的安装后备注包括用于检索自动生成的值的命令。
    • 如果 CA 在 Helm Chart 之外生成,并在安装 central-services chart 时提供,那么您必须在使用 helm upgrade 命令时再次执行该操作,例如在 helm upgrade 命令中使用 --reuse-values 标志。

流程

  1. 使用新值更新 values-public.yamlvalues-private.yaml 配置文件。
  2. 运行 helm upgrade 命令并使用 -f 选项指定配置文件:

    Copy to Clipboard Toggle word wrap
    $ helm upgrade -n stackrox \
      stackrox-secured-cluster-services rhacs/secured-cluster-services \
      --reuse-values \
    1
    
      -f <path_to_values_public.yaml> \
      -f <path_to_values_private.yaml>
    1
    如果您修改了没有包括在 values_public.yamlvalues_private.yaml 文件中的值,请包含 --reuse-values 参数。

7.6.3. 使用 roxctl CLI 在安全集群中安装 RHACS

要使用 CLI 在安全集群中安装 RHACS,请执行以下步骤:

  1. 安装 roxctl CLI。
  2. 安装 Sensor。
7.6.3.1. 安装 roxctl CLI

您必须首先下载二进制文件。您可以在 Linux、Windows 或 macOS 上安装 roxctl

7.6.3.1.1. 在 Linux 中安装 roxctl CLI

您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。

注意

amd64、arm 64、ppc64 les390x 架构提供了 Linux 的 roxctl CLI。

流程

  1. 确定目标操作系统的 roxctl 架构:

    Copy to Clipboard Toggle word wrap
    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Linux/roxctl${arch}"
  3. 使 roxctl 二进制文件可执行:

    Copy to Clipboard Toggle word wrap
    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    Copy to Clipboard Toggle word wrap
    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
7.6.3.1.2. 在 macOS 上安装 roxctl CLI

您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。

注意

macOS 的 roxctl CLI 可用于 amd64arm64 架构。

流程

  1. 确定目标操作系统的 roxctl 架构:

    Copy to Clipboard Toggle word wrap
    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Darwin/roxctl${arch}"
  3. 从二进制文件中删除所有扩展属性:

    Copy to Clipboard Toggle word wrap
    $ xattr -c roxctl
  4. 使 roxctl 二进制文件可执行:

    Copy to Clipboard Toggle word wrap
    $ chmod +x roxctl
  5. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    Copy to Clipboard Toggle word wrap
    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
7.6.3.1.3. 在 Windows 上安装 roxctl CLI

您可以按照以下流程在 Windows 上安装 roxctl CLI 二进制文件。

注意

amd64 架构提供了适用于 Windows 的 roxctl CLI。

流程

  • 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Windows/roxctl.exe

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
7.6.3.2. 安装传感器(Sensor)

要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。此安装方法也称为清单安装方法。

要使用清单安装方法执行安装,请仅遵循以下流程之一

  • 使用 RHACS web 门户下载集群捆绑包,然后提取并运行传感器脚本。
  • 使用 roxctl CLI 为 OpenShift Container Platform 集群生成所需的传感器配置,并将其与您的 Central 实例关联。

先决条件

  • 您必须已安装了 Central 服务,也可以在 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)上选择 ACS 实例 来访问 Central 服务。
7.6.3.2.1. 使用 Web 门户的清单安装方法

流程

  1. 在安全集群中,在 RHACS 门户中,进入 Platform ConfigurationClusters
  2. 选择 Secure a clusterLegacy 安装方法
  3. 为集群指定一个名称。
  4. 根据您要部署 Sensor 的位置,为字段提供适当的值。

    • 如果您要在同一集群中部署 Sensor,请接受所有字段的默认值。
    • 如果您要部署到不同的集群中,请将 central.stackrox.svc:443 替换为负载均衡器、节点端口或其他地址,包括端口号,可以被其他集群访问。
    • 如果您使用一个支持非 gRPC 的负载均衡器,如 HAProxy、AWS Application Load Balancer (ALB) 或 AWS Elastic Load Balancing (ELB),请使用 WebSocket Secure (wss) 协议。使用 ws

      • 使用 wss:// 为地址加上前缀。
      • 在地址后添加端口号,例如 ws://stackrox-central.example.com:443
  5. Next 以继续 Sensor 设置。
  6. Download YAML File and Keys 下载集群捆绑包(zip 归档)。

    重要

    集群捆绑包 zip 存档包括每个集群的唯一配置和密钥。不要在另一个集群中重复使用相同的文件。

  7. 在可以访问被监控的集群的系统中,从集群捆绑包中提取并运行 sensor 脚本:

    Copy to Clipboard Toggle word wrap
    $ unzip -d sensor sensor-<cluster_name>.zip
    Copy to Clipboard Toggle word wrap
    $ ./sensor/sensor.sh

    如果您收到没有部署 Sensor 所需的权限的警告,请按照屏幕说明操作,或联系集群管理员寻求帮助。

部署 Sensor 后,它会联系中心并提供集群信息。

7.6.3.2.2. 使用 roxctl CLI 安装清单

流程

  1. 运行以下命令,为 OpenShift Container Platform 集群生成所需的传感器配置,并将其与您的 Central 实例关联:

    Copy to Clipboard Toggle word wrap
    $ roxctl sensor generate openshift --openshift-version <ocp_version> --name <cluster_name> --central "$ROX_ENDPOINT" 
    1
    1
    对于 --openshift-version 选项,请指定集群的主 OpenShift Container Platform 版本号。例如,为 OpenShift Container Platform 版本 3.x 指定 3,为 OpenShift Container Platform 版本 4.x 指定 4
  2. 在可以访问被监控的集群的系统中,从集群捆绑包中提取并运行 sensor 脚本:

    Copy to Clipboard Toggle word wrap
    $ unzip -d sensor sensor-<cluster_name>.zip
    Copy to Clipboard Toggle word wrap
    $ ./sensor/sensor.sh

    如果您收到没有部署 Sensor 所需的权限的警告,请按照屏幕说明操作,或联系集群管理员寻求帮助。

部署 Sensor 后,它会联系中心并提供集群信息。

验证

  1. 返回 RHACS 门户并检查部署是否成功。如果成功,当在 Platform ConfigurationClusters 中查看集群列表时,集群状态会显示一个绿色勾号和 Healthy 状态。如果您没有看到绿色勾选标记,请使用以下命令检查问题:

    • 在 OpenShift Container Platform 中输入以下命令:

      Copy to Clipboard Toggle word wrap
      $ oc get pod -n stackrox -w
    • 在 Kubernetes 上,输入以下命令:

      Copy to Clipboard Toggle word wrap
      $ kubectl get pod -n stackrox -w
  2. Finish 关闭窗口。

安装后,Sensor 开始向 RHACS 报告安全信息,RHACS 门户仪表板开始显示部署、镜像和策略违反情况。

7.6.4. 后续步骤

  • 通过确保安全集群可以与 ACS 实例通信来验证安装。???

7.7. 在 RHACS 云服务中为安全集群服务配置代理

您必须在 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)环境中为安全集群服务配置代理设置,以便在安全集群和指定代理服务器之间建立连接。这样可确保可靠的数据收集和传输。

7.7.1. 在 SecuredCluster CR 中指定环境变量

要配置出口代理,您可以使用集群范围的 Red Hat OpenShift 代理,或者在 SecuredCluster 自定义资源(CR)配置文件中指定 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量,以确保代理正确使用代理并绕过指定域中的内部请求。

代理配置适用于所有运行的服务:Sensor、Collector、Admission Controller 和 Scanner。

流程

  • 在 SecuredCluster CR 配置文件中的自定义规格中指定 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量:

    例如:

    Copy to Clipboard Toggle word wrap
    # proxy collector
    customize:
      envVars:
        - name: HTTP_PROXY
          value: http://egress-proxy.stackrox.svc:xxxx 
    1
    
        - name: HTTPS_PROXY
          value: http://egress-proxy.stackrox.svc:xxxx 
    2
    
        - name: NO_PROXY
          value: .stackrox.svc 
    3
    1
    变量 HTTP_PROXY 设置为值 http://egress-proxy.stackrox.svc:xxxx。这是用于 HTTP 连接的代理服务器。
    2
    变量 HTTPS_PROXY 设置为值 http://egress-proxy.stackrox.svc:xxxx。这是用于 HTTPS 连接的代理服务器。
    3
    变量 NO _PROXY 设置为 .stackrox.svc。此变量用于定义不应通过代理服务器访问的主机名或 IP 地址。

7.8. 验证安全集群的安装

安装 RHACS 云服务后,您可以执行一些步骤来验证安装是否成功。

要验证安装,请从 Red Hat Hybrid Cloud 控制台访问 ACS 控制台。仪表板显示 RHACS 云服务监控的集群数量,以及节点、部署、镜像和违反情况的信息。

如果没有数据出现在 ACS 控制台中:

  • 确保至少有一个安全集群连接到 RHACS 云服务实例。如需更多信息,请参阅从 RHACS 云服务安装安全集群资源
  • 检查 Sensor pod 日志,以确保与 RHACS 云服务实例的连接成功。
  • 在 Red Hat OpenShift 集群中,进入 Platform ConfigurationClusters 来验证组件是否健康并查看额外的操作信息。
  • 检查本地集群的 Operator 中的 SecuredCluster API 中的值,以确保正确输入了 Central API 端点。这个值应该与 Red Hat Hybrid Cloud Console 中的 ACS 实例 详情中所示的值相同。

第 8 章 使用 Kubernetes 安全集群设置 RHACS 云服务

8.1. 为 Kubernetes 集群创建 RHACS 云服务实例

通过在 Red Hat Hybrid Cloud Console 中选择一个实例来访问 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)。ACS 实例 包含红帽为您配置和管理的 RHACS 云服务管理界面和服务。管理界面连接到您的安全集群,其中包含扫描的服务并收集有关漏洞的信息。一个实例可以连接到并监控多个集群。

8.1.1. 在控制台中创建实例

在 Red Hat Hybrid Cloud 控制台中,创建一个 ACS 实例 以连接到您的安全集群。

流程

创建 ACS 实例

  1. 登录到 Red Hat Hybrid Cloud 控制台。
  2. 在导航菜单中选择 Advanced Cluster SecurityACS Instances
  3. 选择 Create ACS 实例 并在显示字段中输入信息,或者从下拉列表中选择适当的选项:

    • 名称 :输入 ACS 实例的名称ACS 实例 包含 RHACS Central 组件,也称为 "Central",其中包括由红帽配置和管理的 RHACS 云服务管理界面和服务。您管理与 Central 通信的安全集群。您可以将多个安全集群连接到一个实例。
    • 云供应商 : Central 所在的云供应商。选择 AWS
    • Cloud region : Central 所在的云供应商的区域。选择以下区域之一:

      • US-East, N. Virginia
      • 欧洲、爱尔兰
    • 可用区 : 使用默认值()。
  4. 单击 Create instance

8.1.2. 后续步骤

  • 在您要保护的每个 Kubernetes 集群中,使用 Helm chart 或 roxctl CLI 安装安全 集群资源。

8.2. 为 Kubernetes 安全集群生成 init 捆绑包

在集群中安装 SecuredCluster 资源前,您必须创建一个 init 捆绑包。安装并配置 SecuredCluster 的集群,然后使用此捆绑包与 ACS 控制台进行身份验证。您可以使用 RHACS 门户或 roxctl CLI 创建 init 捆绑包。然后,您可以使用它应用 init 捆绑包来创建资源。

8.2.1. 使用 RHACS 门户生成 init 捆绑包

您可以使用 RHACS 门户创建包含 secret 的 init 捆绑包。

注意

您必须具有 Admin 用户角色才能创建 init 捆绑包。

流程

  1. 如"使用 Operator 方法验证中央安装"中所述,查找 RHACS 门户的地址。
  2. 登录到 RHACS 门户。
  3. 如果您没有安全集群,则会出现 Platform ConfigurationClusters 页面。
  4. Create init bundle
  5. 为集群 init 捆绑包输入一个名称。
  6. 选择您的平台。
  7. 选择您要用于安全集群的安装方法: OperatorHelm Chart
  8. Download 生成并下载以 YAML 文件形式创建的 init 捆绑包。如果您使用相同的安装方法,您可以对所有安全集群使用一个 init 捆绑包及其对应的 YAML 文件。

    重要

    安全地存储此捆绑包,因为它包含 secret。

  9. 通过使用它来在安全集群中创建资源来应用 init 捆绑包。
  10. 在每个集群中安装安全的集群服务。

8.2.2. 使用 roxctl CLI 生成 init 捆绑包

您可以使用 roxctl CLI 创建带有 secret 的 init 捆绑包。

注意

您必须具有 Admin 用户角色才能创建 init 捆绑包。

先决条件

  • 您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    1. 运行以下命令设置 ROX_API_TOKEN

      Copy to Clipboard Toggle word wrap
      $ export ROX_API_TOKEN=<api_token>
    2. 运行以下命令设置 ROX_CENTRAL_ADDRESS 环境变量:

      Copy to Clipboard Toggle word wrap
      $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
重要

在 RHACS Cloud Service 中,当使用需要 Central 地址的 roxctl 命令时,请使用 Red Hat Hybrid Cloud Console 的 Instance Details 部分显示的 Central 实例地址。例如,使用 acs-ABCD12345.acs.rhcloud.com 而不是 acs-data-ABCD12345.acs.rhcloud.com

流程

  • 要生成包含 Helm 安装 secret 的集群 init 捆绑包,请运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate --output \
      <cluster_init_bundle_name> cluster_init_bundle.yaml
  • 要生成包含 Operator 安装 secret 的集群 init 捆绑包,请运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate --output-secrets \
      <cluster_init_bundle_name> cluster_init_bundle.yaml
    重要

    确保您安全地存储此捆绑包,因为它包含 secret。您可以使用同一捆绑包来设置多个安全集群。

8.2.3. 后续步骤

8.3. 为 Kubernetes 安全集群应用 init 捆绑包

使用它应用 init 捆绑包来创建资源。

8.3.1. 在安全集群中应用 init 捆绑包

在配置安全集群前,您必须使用它来应用 init 捆绑包以便在安全集群中创建所需资源。应用 init 捆绑包可让安全集群中的服务与 RHACS 云服务通信。

注意

如果使用 Helm chart 安装,请不要执行此步骤。使用 Helm 完成安装 ; 请参阅"使用 Helm chart 在安全集群中安装 RHACS"。

先决条件

  • 您必须生成了一个包含 secret 的 init 捆绑包。
  • 您必须在安装安全集群服务的集群中创建了 stackrox 项目或命名空间。不需要将 stackrox 用于项目,而是确保在扫描集群时不会报告 RHACS 进程的漏洞。

流程

要创建资源,请执行以下步骤之一:

  • 使用 OpenShift Container Platform Web 控制台创建资源: 在 OpenShift Container Platform Web 控制台中,确保您位于 stackrox 命名空间中。在顶部菜单中,点 + 打开 Import YAML 页面。您可以拖动 init 捆绑包文件或将其内容复制并粘贴到编辑器中,然后点 Create。命令完成后,显示显示 collector-tlssensor-tls 和 admission-control-tls 的资源已创建。
  • 使用 Red Hat OpenShift CLI 创建资源: 使用 Red Hat OpenShift CLI 运行以下命令来创建资源:

    Copy to Clipboard Toggle word wrap
    $ oc create -f <init_bundle>.yaml \
    1
    
      -n <stackrox> 
    2
    1
    指定包含 secret 的 init 捆绑包的文件名。
    2
    指定安装 Central 服务的项目的名称。
  • 使用 kubectl CLI,运行以下命令来创建资源:

    Copy to Clipboard Toggle word wrap
    $ kubectl create namespace stackrox 
    1
    
    $ kubectl create -f <init_bundle>.yaml \
    2
    
      -n <stackrox> 
    3
    1
    创建安装安全集群资源的项目。这个示例使用 stackrox
    2
    指定包含 secret 的 init 捆绑包的文件名。
    3
    指定您创建的项目名称。这个示例使用 stackrox

验证

  • 重启 Sensor 以获取新证书。

    有关如何重启 Sensor 的更多信息,请参阅"添加资源"部分中的"重启 Sensor 容器"。

8.3.2. 后续步骤

  • 在您要监控的所有集群中安装 RHACS 安全集群服务。

8.3.3. 其他资源

8.4. 从 Kubernetes 集群上的 RHACS 云服务安装安全集群服务

您可以使用以下方法之一在安全集群中安装 RHACS 云服务:

  • 使用 Helm chart
  • 使用 roxctl CLI (除非有需要使用它的特定安装需要)

8.4.1. 使用 Helm chart 在安全集群中安装 RHACS 云服务

您可以使用没有自定义的 Helm chart 在安全集群中安装 RHACS,方法是使用带有默认值的 Helm chart,或使用带有自定义配置参数的 Helm chart。

首先,确保添加 Helm Chart 仓库。

8.4.1.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    Copy to Clipboard Toggle word wrap
    $ helm repo add rhacs https://mirror.openshift.com/pub/rhacs/charts/

Red Hat Advanced Cluster Security for Kubernetes 的 Helm 仓库包括用于安装不同组件的 Helm chart,包括:

  • 安全集群服务 Helm Chart (secured-cluster-services),用于安装 per-cluster 和 per-node 组件(Sensor、Admission Controller、Collector 和 Scanner-slim)。

    注意

    将 per-cluster 组件部署到要监控的每个集群中,并在要监控的所有节点中部署 per-node 组件。

验证

  • 运行以下命令来验证添加的 chart 存储库:

    Copy to Clipboard Toggle word wrap
    $ helm search repo -l rhacs/
8.4.1.2. 使用 Helm chart 在安全集群中安装 RHACS 云服务
8.4.1.2.1. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart

使用以下说明安装 secure-cluster-services Helm chart,以部署 per-cluster 和 per-node 组件(Sensor、Admission controller、Collector 和 Scanner-slim)。

先决条件

  • 您必须已为集群生成 RHACS init 捆绑包。
  • 您必须有权访问 Red Hat Container Registry 和一个 pull secret 进行身份验证。有关从 registry.redhat.io 下载镜像的详情,请参考 Red Hat Container Registry Authentication
  • 您必须具有 Central API 端点地址。您可以从 Red Hat Hybrid Cloud Console 导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。
8.4.1.3. 使用自定义配置 secured-cluster-services Helm chart

流程

本节论述了可用于 helm installhelm upgrade 命令的 Helm Chart 配置参数。您可以使用 --set 选项或创建 YAML 配置文件来指定这些参数。

创建以下文件来配置 Helm chart 来安装 Red Hat Advanced Cluster Security for Kubernetes:

  • 公共配置文件 values-public.yaml :使用此文件保存所有非敏感配置选项。
  • 专用配置文件 values-private.yaml :使用此文件保存所有敏感配置选项。确保您安全地存储这个文件。
重要

在使用 secured-cluster-services Helm Chart 时,不要修改属于 chart 的 values.yaml 文件。

8.4.1.3.1. 配置参数
参数Description

clusterName

集群的名称。

centralEndpoint

Central 端点的地址。如果使用一个支持非 gRPC 的负载均衡器,请使用带有 ws:// 的端点地址的 WebSocket 协议。在配置多个集群时,使用主机名作为地址。例如,central.example.com

sensor.endpoint

Sensor 端点的地址,包括端口号。

sensor.imagePullPolicy

Sensor 容器的镜像拉取策略。

sensor.serviceTLS.cert

Sensor 使用的内部服务到服务 TLS 证书。

sensor.serviceTLS.key

Sensor 使用的内部服务到服务 TLS 证书密钥。

sensor.resources.requests.memory

Sensor 容器的内存请求。使用此参数覆盖默认值。

sensor.resources.requests.cpu

Sensor 容器的 CPU 请求。使用此参数覆盖默认值。

sensor.resources.limits.memory

Sensor 容器的内存限值。使用此参数覆盖默认值。

sensor.resources.limits.cpu

Sensor 容器的 CPU 限制。使用此参数覆盖默认值。

sensor.nodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Sensor 仅调度到具有指定标签的节点。

sensor.tolerations

如果节点选择器选择污点节点,请使用此参数指定污点容限键、值和 Sensor 的效果。此参数主要用于基础架构节点。

image.main.name

main(主) 镜像的名称。

image.collector.name

Collector 镜像的名称。

image.main.registry

用于主镜像的 registry 地址。

image.collector.registry

用于 Collector 镜像的 registry 地址。

image.scanner.registry

用于 Scanner 镜像的 registry 地址。

image.scannerDb.registry

用于 Scanner DB 镜像的 registry 地址。

image.scannerV4.registry

用于 Scanner V4 镜像的 registry 地址。

image.scannerV4DB.registry

用于 Scanner V4 DB 镜像的 registry 地址。

image.main.pullPolicy

main 镜像的镜像拉取策略。

image.collector.pullPolicy

Collector 镜像的镜像拉取策略。

image.main.tag

使用 main 镜像标签。

image.collector.tag

使用 collector 镜像标签。

collector.collectionMethod

CORE_BPFNO_COLLECTION

collector.imagePullPolicy

Collector 容器的镜像拉取策略。

collector.complianceImagePullPolicy

Compliance 容器的镜像拉取策略。

collector.disableTaintTolerations

如果指定了 false,则容限应用到 Collector,并且收集器 pod 可以调度到具有污点的所有节点上。如果将其指定为 true,则不会应用任何容限,且收集器 pod 不会调度到具有污点的节点。

collector.resources.requests.memory

Collector 容器的内存请求。使用此参数覆盖默认值。

collector.resources.requests.cpu

Collector 容器的 CPU 请求。使用此参数覆盖默认值。

collector.resources.limits.memory

Collector 容器的内存限值。使用此参数覆盖默认值。

collector.resources.limits.cpu

Collector 容器的 CPU 限制。使用此参数覆盖默认值。

collector.complianceResources.requests.memory

Compliance 容器的内存请求。使用此参数覆盖默认值。

collector.complianceResources.requests.cpu

Compliance 容器的 CPU 请求。使用此参数覆盖默认值。

collector.complianceResources.limits.memory

Compliance 容器的内存限值。使用此参数覆盖默认值。

collector.complianceResources.limits.cpu

Compliance 容器的 CPU 限制。使用此参数覆盖默认值。

collector.serviceTLS.cert

Collector 使用的内部服务到服务的 TLS 证书。

collector.serviceTLS.key

Collector 使用的内部服务到服务的 TLS 证书密钥。

admissionControl.listenOnCreates

此设置控制 Kubernetes 是否配置为联系 Red Hat Advanced Cluster Security for Kubernetes,使用 AdmissionReview 请求进行工作负载创建事件。

admissionControl.listenOnUpdates

当将此参数设置为 false 时,Red Hat Advanced Cluster Security for Kubernetes 会以 Kubernetes API 服务器不发送对象更新事件的方式创建 ValidatingWebhookConfiguration。由于对象更新的卷通常高于对象创建的,所以保留此项为 false 会限制准入控制服务的负载,并减少准入控制服务的几率。

admissionControl.listenOnEvents

此设置控制集群是否被配置为联系 Red Hat Advanced Cluster Security for Kubernetes,使用 AdmissionReview 请求用于 Kubernetes execportforward 事件。RHACS 不支持 OpenShift Container Platform 3.11 的此功能。

admissionControl.dynamic.enforceOnCreates

此设置控制 Red Hat Advanced Cluster Security for Kubernetes 是否评估策略 ; 如果被禁用,则会自动接受所有 AdmissionReview 请求。

admissionControl.dynamic.enforceOnUpdates

此设置控制准入控制服务的行为。您必须把 listenOnUpdates 指定为 true 才能正常工作。

admissionControl.dynamic.scanInline

如果将这个选项设置为 true,则准入控制服务会在做出准入决策前请求镜像扫描。由于镜像扫描需要几秒钟,因此只有在您确保部署前扫描集群中使用的所有镜像(例如,在镜像构建期间通过 CI 集成),才启用此选项。这个选项与 RHACS 门户中的 Contact image scanners 选项对应。

admissionControl.dynamic.disableBypass

将它设置为 true 以禁用绕过 Admission 控制器。

admissionControl.dynamic.timeout

在将其标记为失败前,使用此参数指定 RHACS 必须等待准入审核的最大秒数。如果准入 Webhook 在超时时间结束前没有收到请求的信息,它会失败,但处于打开状态时,它仍然允许操作成功。例如,准入控制器允许创建部署,即使扫描超时,RHACS 无法确定部署是否违反了策略。从版本 4.5 开始,红帽将 RHACS 准入控制器 webhook 的默认超时设置从 20 秒减少到 10 秒,从而导致 ValidatingWebhookConfiguration 的有效超时时间为 12 秒。

admissionControl.resources.requests.memory

Admission Control 容器的内存请求。使用此参数覆盖默认值。

admissionControl.resources.requests.cpu

Admission Control 容器的 CPU 请求。使用此参数覆盖默认值。

admissionControl.resources.limits.memory

Admission Control 容器的内存限值。使用此参数覆盖默认值。

admissionControl.resources.limits.cpu

Admission Control 容器的 CPU 限制。使用此参数覆盖默认值。

admissionControl.nodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Admission Control 仅调度到具有指定标签的节点。

admissionControl.tolerations

如果节点选择器选择污点节点,请使用此参数指定污点容限键、值以及 Admission Control 的效果。此参数主要用于基础架构节点。

admissionControl.serviceTLS.cert

Admission Control 使用的内部服务到服务的 TLS 证书。

admissionControl.serviceTLS.key

Admission Control 使用的内部服务对服务的 TLS 证书密钥。

registryOverride

使用此参数覆盖默认的 docker.io registry。如果使用其他 registry,请指定 registry 的名称。

collector.disableTaintTolerations

如果指定了 false,则容限应用到 Collector,Collector pod 可以调度到具有污点的所有节点上。如果您将其指定为 true,则不会应用任何容限,Collector pod 不会调度到具有污点的节点。

createUpgraderServiceAccount

指定 true 以创建 sensor-upgrader 帐户。默认情况下,Red Hat Advanced Cluster Security for Kubernetes 在每个安全集群中创建一个名为 sensor-upgrader 的服务帐户。此帐户具有高特权,但仅在升级过程中使用。如果您没有创建这个帐户,当 Sensor 没有足够权限时,则必须手动完成将来的升级。

createSecrets

指定 false 以跳过 Sensor、Collector 和 Admission 控制器的编配 secret 创建。

collector.slimMode

已弃用。如果要使用 slim Collector 镜像部署 Collector,请指定 true

sensor.resources

Sensor 的资源规格。

admissionControl.resources

Admission 控制器的资源规格。

collector.resources

Collector 的资源规格。

collector.complianceResources

Collector 的 Compliance 容器的资源规格。

exposeMonitoring

如果将此选项设置为 true,Red Hat Advanced Cluster Security for Kubernetes 会在 Sensor、Collector 和 Admission 控制器的端口号 9090 上公开 Prometheus 指标端点。

auditLogs.disableCollection

如果将此选项设置为 true,Red Hat Advanced Cluster Security for Kubernetes 会禁用用于检测对配置映射和 secret 的访问和修改的审计日志检测功能。

scanner.disable

如果将此选项设置为 false,Red Hat Advanced Cluster Security for Kubernetes 会在安全集群中部署一个 Scanner-slim 和 Scanner DB,以允许在集成的 OpenShift 镜像 registry 上扫描镜像。OpenShift Container Platform 和 Kubernetes 安全集群中支持启用 Scanner-slim。默认值为 true

scanner.dbTolerations

如果节点选择器选择污点节点,请使用此参数为 Scanner DB 指定污点容限键、值和效果。

scanner.replicas

Collector 的 Compliance 容器的资源规格。

scanner.logLevel

通过设置此参数,您可以修改扫描程序日志级别。使用这个选项仅用于故障排除目的。

scanner.autoscaling.disable

如果将此选项设置为 true,Red Hat Advanced Cluster Security for Kubernetes 会禁用 Scanner 部署中的自动扩展。

scanner.autoscaling.minReplicas

自动扩展的最小副本数。默认值为 2。

scanner.autoscaling.maxReplicas

自动扩展的最大副本数。默认值为 5。

scanner.nodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Scanner 仅调度到具有指定标签的节点。

scanner.tolerations

如果节点选择器选择污点节点,请使用此参数为 Scanner 指定污点容限键、值和效果。

scanner.dbNodeSelector

将节点选择器标签指定为 label-key: label-value,以强制 Scanner DB 仅调度到具有指定标签的节点。

scanner.dbTolerations

如果节点选择器选择污点节点,请使用此参数为 Scanner DB 指定污点容限键、值和效果。

scanner.resources.requests.memory

Scanner 容器的内存请求。使用此参数覆盖默认值。

scanner.resources.requests.cpu

Scanner 容器的 CPU 请求。使用此参数覆盖默认值。

scanner.resources.limits.memory

Scanner 容器的内存限值。使用此参数覆盖默认值。

scanner.resources.limits.cpu

Scanner 容器的 CPU 限制。使用此参数覆盖默认值。

scanner.dbResources.requests.memory

Scanner DB 容器的内存请求。使用此参数覆盖默认值。

scanner.dbResources.requests.cpu

Scanner DB 容器的 CPU 请求。使用此参数覆盖默认值。

scanner.dbResources.limits.memory

Scanner DB 容器的内存限值。使用此参数覆盖默认值。

scanner.dbResources.limits.cpu

Scanner DB 容器的 CPU 限制。使用此参数覆盖默认值。

monitoring.openshift.enabled

如果将此选项设置为 false,Red Hat Advanced Cluster Security for Kubernetes 将不会设置 Red Hat OpenShift 监控。在 Red Hat OpenShift 4 上默认为 true

network.enableNetworkPolicies

为了在网络级别提供安全性,RHACS 在安装了安全集群资源的命名空间中创建默认 NetworkPolicy 资源。这些网络策略允许在特定端口上到特定组件的入站网络数据。如果您不希望 RHACS 创建这些策略,则将此参数设置为 False。这是一个布尔值。默认值为 True,这意味着会自动创建默认策略。

警告

禁用创建默认网络策略可能会破坏 RHACS 组件之间的通信。如果禁用创建默认策略,则必须创建自己的网络策略来允许此通信。

8.4.1.3.1.1. 环境变量

您可以采用以下格式指定 Sensor 和 Admission Controller 的环境变量:

Copy to Clipboard Toggle word wrap
customize:
  envVars:
    ENV_VAR1: "value1"
    ENV_VAR2: "value2"

通过 customize 设置,您可以为此 Helm Chart 创建的所有对象指定自定义 Kubernetes 元数据(标签和注解)以及工作负载的其他 pod 标签、Pod 注解和容器环境变量。

配置是分层的,在更通用范围(例如,所有对象)中定义的元数据被覆盖为更通用范围的元数据(例如,仅适用于 Sensor 部署)。

8.4.1.3.2. 使用自定义安装 secured-cluster-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 secure-cluster-services Helm chart 以部署以下 per-cluster 和 per-node 组件:

  • Sensor
  • 准入控制器
  • Collector
  • scanner:安装 StackRox Scanner 时为安全集群可选
  • 扫描程序 DB:安装 StackRox Scanner 时为安全集群可选
  • 安装 Scanner V4 Indexer 和 Scanner V4 DB 时,扫描程序 V4 Indexer 和 Scanner V4 DB: 可选

先决条件

  • 您必须已为集群生成 RHACS init 捆绑包。
  • 您必须有权访问 Red Hat Container Registry 和一个 pull secret 进行身份验证。有关从 registry.redhat.io 下载镜像的详情,请参考 Red Hat Container Registry Authentication
  • 您必须具有 Central API 端点地址。您可以从 Red Hat Hybrid Cloud Console 导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 RHACS 实例。

流程

  • 运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ helm install -n stackrox \
      --create-namespace stackrox-secured-cluster-services rhacs/secured-cluster-services \
      -f <name_of_cluster_init_bundle.yaml> \
      -f <path_to_values_public.yaml> -f <path_to_values_private.yaml> \
    1
    
      --set imagePullSecrets.username=<username> \
    2
    
      --set imagePullSecrets.password=<password> 
    3
    1
    使用 -f 选项指定 YAML 配置文件的路径。
    2
    为 Red Hat Container Registry 身份验证包含 pull secret 的用户名。
    3
    包括 Red Hat Container Registry 身份验证的 pull secret 密码。
注意

要使用持续集成(CI)系统部署 secure-cluster-services Helm Chart,请将 init 捆绑包 YAML 文件作为环境变量传递给 helm install 命令:

Copy to Clipboard Toggle word wrap
$ helm install ... -f <(echo "$INIT_BUNDLE_YAML_SECRET") 
1
1
如果您使用 base64 编码变量,请使用 helm install …​ -f <(echo "$INIT_BUNDLE_YAML_SECRET" | base64 --decode) 命令。
8.4.1.4. 在部署 secure-cluster-services Helm chart 后更改配置选项

在部署 secure-cluster-services Helm Chart 后,您可以对任何配置选项进行更改。

当使用 helm upgrade 命令进行修改时,会应用以下准则和要求:

  • 您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,每当您进行更改时,您必须手动指定所有选项。
  • 有些更改(如启用 Scanner V4)需要为组件发布新证书。因此,您必须在进行这些更改时提供 CA。

    • 如果 CA 在初始安装过程中由 Helm chart 生成,则必须从集群中检索这些值,并将其提供给 helm upgrade 命令。central-services Helm Chart 的安装后备注包括用于检索自动生成的值的命令。
    • 如果 CA 在 Helm Chart 之外生成,并在安装 central-services chart 时提供,那么您必须在使用 helm upgrade 命令时再次执行该操作,例如在 helm upgrade 命令中使用 --reuse-values 标志。

流程

  1. 使用新值更新 values-public.yamlvalues-private.yaml 配置文件。
  2. 运行 helm upgrade 命令并使用 -f 选项指定配置文件:

    Copy to Clipboard Toggle word wrap
    $ helm upgrade -n stackrox \
      stackrox-secured-cluster-services rhacs/secured-cluster-services \
      --reuse-values \
    1
    
      -f <path_to_values_public.yaml> \
      -f <path_to_values_private.yaml>
    1
    如果您修改了没有包括在 values_public.yamlvalues_private.yaml 文件中的值,请包含 --reuse-values 参数。

8.4.2. 使用 roxctl CLI 在安全集群中安装 RHACS

要使用 CLI 在安全集群中安装 RHACS,请执行以下步骤:

  1. 安装 roxctl CLI。
  2. 安装 Sensor。
8.4.2.1. 安装 roxctl CLI

您必须首先下载二进制文件。您可以在 Linux、Windows 或 macOS 上安装 roxctl

8.4.2.1.1. 在 Linux 中安装 roxctl CLI

您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。

注意

amd64、arm 64、ppc64 les390x 架构提供了 Linux 的 roxctl CLI。

流程

  1. 确定目标操作系统的 roxctl 架构:

    Copy to Clipboard Toggle word wrap
    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Linux/roxctl${arch}"
  3. 使 roxctl 二进制文件可执行:

    Copy to Clipboard Toggle word wrap
    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    Copy to Clipboard Toggle word wrap
    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
8.4.2.1.2. 在 macOS 上安装 roxctl CLI

您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。

注意

macOS 的 roxctl CLI 可用于 amd64arm64 架构。

流程

  1. 确定目标操作系统的 roxctl 架构:

    Copy to Clipboard Toggle word wrap
    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Darwin/roxctl${arch}"
  3. 从二进制文件中删除所有扩展属性:

    Copy to Clipboard Toggle word wrap
    $ xattr -c roxctl
  4. 使 roxctl 二进制文件可执行:

    Copy to Clipboard Toggle word wrap
    $ chmod +x roxctl
  5. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    Copy to Clipboard Toggle word wrap
    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
8.4.2.1.3. 在 Windows 上安装 roxctl CLI

您可以按照以下流程在 Windows 上安装 roxctl CLI 二进制文件。

注意

amd64 架构提供了适用于 Windows 的 roxctl CLI。

流程

  • 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Windows/roxctl.exe

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
8.4.2.2. 安装传感器(Sensor)

要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。此安装方法也称为清单安装方法。

要使用清单安装方法执行安装,请仅遵循以下流程之一

  • 使用 RHACS web 门户下载集群捆绑包,然后提取并运行传感器脚本。
  • 使用 roxctl CLI 为 OpenShift Container Platform 集群生成所需的传感器配置,并将其与您的 Central 实例关联。

先决条件

  • 您必须已安装了 Central 服务,也可以在 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)上选择 ACS 实例 来访问 Central 服务。
8.4.2.2.1. 使用 Web 门户的清单安装方法

流程

  1. 在安全集群中,在 RHACS 门户中,进入 Platform ConfigurationClusters
  2. 选择 Secure a clusterLegacy 安装方法
  3. 为集群指定一个名称。
  4. 根据您要部署 Sensor 的位置,为字段提供适当的值。

    • 输入 Central API 端点地址。您可以从 Red Hat Hybrid Cloud Console 导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 RHACS 实例。
  5. Next 以继续 Sensor 设置。
  6. Download YAML File and Keys 下载集群捆绑包(zip 归档)。

    重要

    集群捆绑包 zip 存档包括每个集群的唯一配置和密钥。不要在另一个集群中重复使用相同的文件。

  7. 在可以访问被监控的集群的系统中,从集群捆绑包中提取并运行 sensor 脚本:

    Copy to Clipboard Toggle word wrap
    $ unzip -d sensor sensor-<cluster_name>.zip
    Copy to Clipboard Toggle word wrap
    $ ./sensor/sensor.sh

    如果您收到没有部署 Sensor 所需的权限的警告,请按照屏幕说明操作,或联系集群管理员寻求帮助。

部署 Sensor 后,它会联系中心并提供集群信息。

8.4.2.2.2. 使用 roxctl CLI 安装清单

流程

  1. 运行以下命令,为 OpenShift Container Platform 集群生成所需的传感器配置,并将其与您的 Central 实例关联:

    Copy to Clipboard Toggle word wrap
    $ roxctl sensor generate openshift --openshift-version <ocp_version> --name <cluster_name> --central "$ROX_ENDPOINT" 
    1
    1
    对于 --openshift-version 选项,请指定集群的主 OpenShift Container Platform 版本号。例如,为 OpenShift Container Platform 版本 3.x 指定 3,为 OpenShift Container Platform 版本 4.x 指定 4
  2. 在可以访问被监控的集群的系统中,从集群捆绑包中提取并运行 sensor 脚本:

    Copy to Clipboard Toggle word wrap
    $ unzip -d sensor sensor-<cluster_name>.zip
    Copy to Clipboard Toggle word wrap
    $ ./sensor/sensor.sh

    如果您收到没有部署 Sensor 所需的权限的警告,请按照屏幕说明操作,或联系集群管理员寻求帮助。

部署 Sensor 后,它会联系中心并提供集群信息。

验证

  1. 返回 RHACS 门户并检查部署是否成功。如果成功,当在 Platform ConfigurationClusters 中查看集群列表时,集群状态会显示一个绿色勾号和 Healthy 状态。如果您没有看到绿色勾选标记,请使用以下命令检查问题:

    • 在 Kubernetes 上,输入以下命令:

      Copy to Clipboard Toggle word wrap
      $ kubectl get pod -n stackrox -w
  2. Finish 关闭窗口。

安装后,Sensor 开始向 RHACS 报告安全信息,RHACS 门户仪表板开始显示部署、镜像和策略违反情况。

8.5. 验证安全集群的安装

安装 RHACS 云服务后,您可以执行一些步骤来验证安装是否成功。

要验证安装,请从 Red Hat Hybrid Cloud 控制台访问 ACS 控制台。仪表板显示 RHACS 云服务监控的集群数量,以及节点、部署、镜像和违反情况的信息。

如果没有数据出现在 ACS 控制台中:

  • 确保至少有一个安全集群连接到 RHACS 云服务实例。如需更多信息,请参阅使用 Helm chartroxctl CLI 安装的说明
  • 检查 Sensor pod 日志,以确保与 RHACS 云服务实例的连接成功。
  • 检查本地集群的 Operator 中的 SecuredCluster API 中的值,以确保正确输入了 Central API 端点。这个值应该与 Red Hat Hybrid Cloud Console 中的 ACS 实例 详情中所示的值相同。

第 9 章 升级 RHACS 云服务

9.1. 使用 Operator 在 RHACS Cloud Service 中升级安全集群

红帽为它管理的组件(包括 Central 服务)提供常规服务更新。这些服务更新包括升级到 Red Hat Advanced Cluster Security Cloud Service 的新版本。

您必须定期升级安全集群中的 RHACS 版本,以确保与 RHACS 云服务兼容。

9.1.1. 准备升级

在升级 Red Hat Advanced Cluster Security for Kubernetes (RHACS)版本前,请完成以下步骤:

  • 如果您要升级的集群包含 SecuredCluster 自定义资源(CR),请将 collection 方法改为 CORE_BPF。如需更多信息,请参阅"删除集合方法"。
9.1.1.1. 更改集合方法

如果要升级的集群包含 SecuredCluster CR,您必须确保在升级前将每个节点集合设置设置为 CORE_BPF

流程

  1. 在 OpenShift Container Platform Web 控制台中进入 RHACS Operator 页面。
  2. 在顶部导航菜单中,选择 Secured Cluster
  3. 点实例名称,如 stackrox-secured-cluster-services
  4. 使用以下方法之一更改设置:

    • Form 视图中,在 Per Node SettingsCollector SettingsCollection 下,选择 CORE_BPF
    • YAML 打开 YAML 编辑器并找到 spec.perNode.collector.collection 属性。如果值为 KernelModuleEBPF,请将其改为 CORE_BPF
  5. Save。

9.1.2. 为安全集群回滚 Operator 升级

要回滚 Operator 升级,您可以使用 CLI 或 OpenShift Container Platform Web 控制台。

注意

在安全集群中,只有在个别情况下才需要回滚 Operator 升级,例如,如果安全集群出现问题。

9.1.2.1. 使用 CLI 回滚 Operator 升级

您可以使用 CLI 命令回滚 Operator 版本。

流程

  1. 运行以下命令来删除 OLM 订阅:

    • 对于 OpenShift Container Platform,运行以下命令:

      Copy to Clipboard Toggle word wrap
      $ oc -n rhacs-operator delete subscription rhacs-operator
    • 对于 Kubernetes,运行以下命令:

      Copy to Clipboard Toggle word wrap
      $ kubectl -n rhacs-operator delete subscription rhacs-operator
  2. 运行以下命令来删除集群服务版本 (CSV):

    • 对于 OpenShift Container Platform,运行以下命令:

      Copy to Clipboard Toggle word wrap
      $ oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
    • 对于 Kubernetes,运行以下命令:

      Copy to Clipboard Toggle word wrap
      $ kubectl -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
  3. 在回滚频道上安装 Operator 的最新版本。
9.1.2.2. 使用 Web 控制台回滚 Operator 升级

您可以使用 OpenShift Container Platform Web 控制台回滚 Operator 版本。

先决条件

  • 您可以使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群 Web 控制台。

流程

  1. 进入 OperatorsInstalled Operators 页面。
  2. 点 RHACS Operator。
  3. Operator Details 页面中,从 Actions 列表中选择 Uninstall Operator。按照此操作,Operator 将停止运行,不再接收更新。
  4. 在回滚频道上安装 Operator 的最新版本。

9.1.3. Operator 升级问题故障排除

按照以下步骤调查并解决 RHACS Operator 的与升级相关的问题。

9.1.3.1. Central 或 Secured 集群无法部署

当 RHACS Operator 满足以下条件时,您必须检查自定义资源条件以查找问题:

  • 如果 Operator 无法部署安全集群
  • 如果 Operator 无法将 CR 应用到实际资源
  • 对于安全集群,运行以下命令检查条件:

    Copy to Clipboard Toggle word wrap
    $ oc -n rhacs-operator describe securedclusters.platform.stackrox.io 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

您可以识别条件输出中的配置错误:

输出示例

Copy to Clipboard Toggle word wrap
 Conditions:
    Last Transition Time:  2023-04-19T10:49:57Z
    Status:                False
    Type:                  Deployed
    Last Transition Time:  2023-04-19T10:49:57Z
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2023-04-19T10:59:10Z
    Message:               Deployment.apps "central" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "50": must be less than or equal to cpu limit
    Reason:                ReconcileError
    Status:                True
    Type:                  Irreconcilable
    Last Transition Time:  2023-04-19T10:49:57Z
    Message:               No proxy configuration is desired
    Reason:                NoProxyConfig
    Status:                False
    Type:                  ProxyConfigFailed
    Last Transition Time:  2023-04-19T10:49:57Z
    Message:               Deployment.apps "central" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "50": must be less than or equal to cpu limit
    Reason:                InstallError
    Status:                True
    Type:                  ReleaseFailed

另外,您可以查看 RHACS pod 日志以查找有关此问题的更多信息。运行以下命令来查看日志:

Copy to Clipboard Toggle word wrap
oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager 
1
1
如果使用 Kubernetes,请输入 kubectl 而不是 oc

9.2. 使用 Helm chart 在 RHACS 云服务中升级安全集群

您可以使用 Helm chart 在 RHACS 云服务中升级安全集群。

如果使用 Helm chart 安装 RHACS 安全集群,您可以通过更新 Helm chart 并运行 helm upgrade 命令升级到最新版本的 RHACS。

9.2.1. 更新 Helm Chart 仓库

在升级到 Red Hat Advanced Cluster Security for Kubernetes 的新版本前,您必须始终更新 Helm chart。

先决条件

  • 您必须已添加了 Red Hat Advanced Cluster Security for Kubernetes Helm Chart 仓库。
  • 您必须使用 Helm 版本 3.8.3 或更新版本。

流程

  • 更新 Red Hat Advanced Cluster Security for Kubernetes chart 软件仓库。

    Copy to Clipboard Toggle word wrap
    $ helm repo update

验证

  • 运行以下命令来验证添加的 chart 存储库:

    Copy to Clipboard Toggle word wrap
    $ helm search repo -l rhacs/

9.2.2. 运行 Helm 升级命令

您可以使用 helm upgrade 命令更新 Red Hat Advanced Cluster Security for Kubernetes (RHACS)。

先决条件

  • 您必须有权访问用于安装 Red Hat Advanced Cluster Security for Kubernetes (RHACS)的 values-private.yaml 配置文件。否则,您必须先生成包含 root 证书的 values-private.yaml 配置文件,然后才能继续这些命令。

流程

  • 运行 helm upgrade 命令并使用 -f 选项指定配置文件:

    Copy to Clipboard Toggle word wrap
    $ helm upgrade -n stackrox stackrox-secured-cluster-services \
      rhacs/secured-cluster-services --version <current-rhacs-version> \
    1
    
      -f values-private.yaml
    1
    使用 -f 选项指定 YAML 配置文件的路径。

9.2.3. 其他资源

9.3. 使用 roxctl CLI 在 RHACS 云服务中手动升级安全集群

您可以使用 roxctl CLI 在 RHACS 云服务中升级安全集群。

重要

只有在使用 roxctl CLI 安装安全集群时,才需要手动升级安全集群。

9.3.1. 升级 roxctl CLI

要将 roxctl CLI 升级到最新版本,您必须卸载 roxctl CLI 的当前版本,然后安装 roxctl CLI 的最新版本。

9.3.1.1. 卸载 roxctl CLI

您可以按照以下流程卸载 Linux 上的 roxctl CLI 二进制文件。

流程

  • 查找并删除 roxctl 二进制文件:

    Copy to Clipboard Toggle word wrap
    $ ROXPATH=$(which roxctl) && rm -f $ROXPATH 
    1
    1
    根据您的环境,您可能需要管理员删除 roxctl 二进制文件。
9.3.1.2. 在 Linux 中安装 roxctl CLI

您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。

注意

amd64、arm 64、ppc64 les390x 架构提供了 Linux 的 roxctl CLI。

流程

  1. 确定目标操作系统的 roxctl 架构:

    Copy to Clipboard Toggle word wrap
    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Linux/roxctl${arch}"
  3. 使 roxctl 二进制文件可执行:

    Copy to Clipboard Toggle word wrap
    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    Copy to Clipboard Toggle word wrap
    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
9.3.1.3. 在 macOS 上安装 roxctl CLI

您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。

注意

macOS 的 roxctl CLI 可用于 amd64arm64 架构。

流程

  1. 确定目标操作系统的 roxctl 架构:

    Copy to Clipboard Toggle word wrap
    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Darwin/roxctl${arch}"
  3. 从二进制文件中删除所有扩展属性:

    Copy to Clipboard Toggle word wrap
    $ xattr -c roxctl
  4. 使 roxctl 二进制文件可执行:

    Copy to Clipboard Toggle word wrap
    $ chmod +x roxctl
  5. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    Copy to Clipboard Toggle word wrap
    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version
9.3.1.4. 在 Windows 上安装 roxctl CLI

您可以按照以下流程在 Windows 上安装 roxctl CLI 二进制文件。

注意

amd64 架构提供了适用于 Windows 的 roxctl CLI。

流程

  • 下载 roxctl CLI:

    Copy to Clipboard Toggle word wrap
    $ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Windows/roxctl.exe

验证

  • 验证您已安装的 roxctl 版本:

    Copy to Clipboard Toggle word wrap
    $ roxctl version

9.3.2. 手动升级所有安全集群

重要

为确保最佳功能,请为您的 RHACS 云服务运行的安全集群使用相同的 RHACS 版本。如果您使用自动升级,请使用自动升级来更新所有安全集群。如果没有使用自动升级,请在所有安全集群中完成本节中的说明。

要完成每个运行 Sensor、Collector 和 Admission 控制器的安全集群的手动升级,请按照以下步骤操作。

9.3.2.1. 更新其他镜像

在不使用自动升级时,您必须更新每个安全集群中的 sensor, collector 和 compliance 镜像。

注意

如果使用 Kubernetes,请在此流程中列出的命令中使用 kubectl 而不是 oc

流程

  1. 更新 Sensor 镜像:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.9 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. 更新 Compliance 镜像:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.9 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  3. 更新 Collector 镜像:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.5.9 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    注意

    如果使用 collector slim 镜像,请运行以下命令:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:{rhacs-version}
  4. 更新准入控制镜像:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.9
重要

如果您使用 roxctl CLI 在 Red Hat OpenShift 上安装 RHACS,则需要迁移安全性上下文约束(SCC)。

如需更多信息,请参阅"添加资源"部分中的"手动升级过程中缓解 SCC"。

9.3.2.2. 在手动升级过程中迁移 SCC

通过使用 roxctl CLI 在手动升级过程中迁移安全性上下文约束(SCC),您可以无缝转换 Red Hat Advanced Cluster Security for Kubernetes (RHACS)服务以使用 Red Hat OpenShift SCC,确保 Central 和所有安全的集群间的兼容性和最佳安全配置。

流程

  1. 列出在所有安全集群中部署的所有 RHACS 服务:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'

    输出示例

    Copy to Clipboard Toggle word wrap
    Name:      admission-control-6f4dcc6b4c-2phwd
               openshift.io/scc: stackrox-admission-control
    #...
    Name:      central-575487bfcb-sjdx8
               openshift.io/scc: stackrox-central
    Name:      central-db-7c7885bb-6bgbd
               openshift.io/scc: stackrox-central-db
    Name:      collector-56nkr
               openshift.io/scc: stackrox-collector
    #...
    Name:      scanner-68fc55b599-f2wm6
               openshift.io/scc: stackrox-scanner
    Name:      scanner-68fc55b599-fztlh
    #...
    Name:      sensor-84545f86b7-xgdwf
               openshift.io/scc: stackrox-sensor
    #...

    在本例中,您可以看到每个 Pod 都有自己的自定义 SCC,这通过 openshift.io/scc 字段指定。

  2. 添加所需的角色和角色绑定,以使用 Red Hat OpenShift SCC 而不是 RHACS 自定义 SCC。
  3. 要添加所需的角色和角色绑定,以便将 Red Hat OpenShift SCC 用于所有安全集群,请完成以下步骤:

    1. 创建名为 upgrade-scs.yaml 的文件,该文件使用以下内容定义角色和角色绑定资源:

      例 9.1. YAML 文件示例

      Copy to Clipboard Toggle word wrap
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role  
      1
      
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: collector
           app.kubernetes.io/instance: stackrox-secured-cluster-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-secured-cluster-services
           app.kubernetes.io/version: 4.4.0
           auto-upgrade.stackrox.io/component: sensor
        name: use-privileged-scc  
      2
      
        namespace: stackrox 
      3
      
      rules:  
      4
      
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - privileged
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding 
      5
      
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: collector
           app.kubernetes.io/instance: stackrox-secured-cluster-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-secured-cluster-services
           app.kubernetes.io/version: 4.4.0
           auto-upgrade.stackrox.io/component: sensor
        name: collector-use-scc 
      6
      
        namespace: stackrox
      roleRef: 
      7
      
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-privileged-scc
      subjects: 
      8
      
      - kind: ServiceAccount
        name: collector
        namespace: stackrox
      - - -
      1
      本例中的 Kubernetes 资源的类型 Role
      2
      角色资源的名称。
      3
      创建角色的命名空间。
      4
      描述角色资源授予权限。
      5
      本例中的 Kubernetes 资源的类型,即 RoleBinding
      6
      角色绑定资源的名称。
      7
      指定要在同一命名空间中绑定的角色。
      8
      指定绑定到角色的主题。
    2. 运行以下命令,创建 upgrade-scs.yaml 文件中指定的角色和角色绑定资源:

      Copy to Clipboard Toggle word wrap
      $ oc -n stackrox create -f ./update-scs.yaml
      重要

      您必须在每个安全集群中运行此命令,以创建 upgrade-scs.yaml 文件中指定的角色和角色绑定。

  4. 删除特定于 RHACS 的 SCC:

    1. 要删除特定于所有安全集群的 SCC,请运行以下命令:

      Copy to Clipboard Toggle word wrap
      $ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
      重要

      您必须在每个安全集群中运行此命令,才能删除特定于每个安全集群的 SCC。

验证

  • 运行以下命令,确保所有 pod 都使用正确的 SCC:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'

    将输出与下表进行比较:

    组件以前的自定义 SCC新的 Red Hat OpenShift 4 SCC

    Central

    stackrox-central

    nonroot-v2

    Central-db

    stackrox-central-db

    nonroot-v2

    扫描程序

    stackrox-scanner

    nonroot-v2

    Scanner-db

    stackrox-scanner

    nonroot-v2

    Admission Controller

    stackrox-admission-control

    restricted-v2

    Collector

    stackrox-collector

    privileged

    Sensor

    stackrox-sensor

    restricted-v2

9.3.2.2.1. 编辑 Sensor 部署的 GOMEMLIMIT 环境变量

升级到版本 4.4 要求您手动将 GOMEMLIMIT 环境变量替换为 ROX_MEMLIMIT 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Sensor 部署的变量:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox edit deploy/sensor 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。
9.3.2.2.2. 为 Collector 部署编辑 GOMEMLIMIT 环境变量

升级到版本 4.4 要求您手动将 GOMEMLIMIT 环境变量替换为 ROX_MEMLIMIT 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Collector 部署的变量:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox edit deploy/collector 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。
9.3.2.2.3. 编辑 Admission Controller 部署的 GOMEMLIMIT 环境变量

升级到版本 4.4 要求您手动将 GOMEMLIMIT 环境变量替换为 ROX_MEMLIMIT 环境变量。您必须为每个部署编辑此变量。

流程

  1. 运行以下命令来编辑 Admission Controller 部署的变量:

    Copy to Clipboard Toggle word wrap
    $ oc -n stackrox edit deploy/admission-control 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  2. GOMEMLIMIT 变量替换为 ROX_MEMLIMIT
  3. 保存该文件。
9.3.2.2.4. 验证安全集群升级

在升级了安全集群后,验证更新的 pod 是否正常工作。

流程

  • 检查新 pod 是否已部署:

    Copy to Clipboard Toggle word wrap
    $ oc get deploy,ds -n stackrox -o wide 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
    Copy to Clipboard Toggle word wrap
    $ oc get pod -n stackrox --watch 
    1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

9.3.3. 启用 RHCOS 节点扫描

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

先决条件

流程

  1. 运行以下命令来更新合规性容器之一。

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

      Copy to Clipboard Toggle word wrap
      $ 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 指标的合规性容器,请运行以下命令:

      Copy to Clipboard Toggle word wrap
      $ 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 中:

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

      Copy to Clipboard Toggle word wrap
      $ 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.5.9","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"}]}]}}}}'

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.