安装


Red Hat Advanced Cluster Security for Kubernetes 3.74

安装 Red Hat Advanced Cluster Security for Kubernetes

Red Hat OpenShift Documentation Team

摘要

本文档论述了如何使用 Operator、Helm chart 或 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes。

第 1 章 支持的平台和安装方法

OpenShift Container Platform 和 Kubernetes 平台上支持 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 和 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)。

1.1. 不同平台的安装方法

您可以在不同的平台上执行不同类型的安装。

注意

不是所有安装方法都支持所有平台。

表 1.1. 支持的平台和推荐的安装方法
平台类型 [1]平台对 Central 的支持对安全集群的支持支持的安装方法安装步骤

受管服务平台

Red Hat OpenShift Dedicated (OSD)

[2]

[2]

Operator (推荐)、Helm chart 或 roxctl CLI [3]

Azure Red Hat OpenShift (ARO)

[2]

[2]

Red Hat OpenShift Service on AWS (ROSA)

[2]

[2]

Amazon Elastic Kubernetes Service (Amazon EKS)

有限 [4]

Helm chart (推荐)或 roxctl CLI [3]

Google Kubernetes Engine (Google GKE)

有限 [4]

Microsoft Azure Kubernetes Service (Microsoft AKS)

有限 [4]

自我管理的平台

Red Hat OpenShift Container Platform (OCP) 4.x

Operator (推荐)、Helm chart 或 roxctl CLI [3]

Red Hat OpenShift Kubernetes Engine (OKE) 4.x

  1. 对每个平台的支持取决于平台和结束的生命周期。
  2. Red Hat Advanced Cluster Security for Kubernetes (RHACS) 作为自我管理的附加组件支持,用于满足 RHACS 安装和大小要求的受管 OpenShift 服务。部署和管理 RHACS 组件不会位于受管服务的服务描述下,因此 RHACS 不包含在 SRE 服务中。
  3. 除非有需要此方法的特定安装,否则不要使用 roxctl 安装方法。
  4. RHACS Central 已被测试并授权使用,在 OpenShift Container Platform 4 中被完全支持。可以在不是 OpenShift Container Platform 4 的环境中部署和使用 Central,但支持仅限于 RHACS 产品软件,而不支持底层的基础架构供应商。作为问题诊断和隔离的一部分,需要可以在 OpenShift Container Platform 4 环境中重现问题。如果问题特定于一个不是 OpenShift Container Platform 4 的供应商和集群,红帽会提供合理的商业支持来隔离问题。您应在相关的供应商处创建一个问题单。具体步骤请查看红帽第三方支持政策

1.2. 不同架构的安装方法

Red Hat Advanced Cluster Security for Kubernetes (RHACS) 和 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service) 支持以下架构。

表 1.2. 支持的构架和推荐的安装方法
支持的构架对 Central 的支持对安全集群的支持支持的安装方法

AMD64

Operator (首选)、Helm chart 或 roxctl CLI (不推荐)

ppc64le (IBM Power)

是(仅限 OpenShift Container Platform 版本 4.12)

Operator 是唯一支持的安装方法。

s390x (IBM zSystems 和 IBM® LinuxONE)

是(仅限 OpenShift Container Platform 版本 4.10 和 4.12)

1.3. RHACS 支持的浏览器

符合红帽政策的 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 浏览器支持,包括以下浏览器:

  • Google Chrome
  • Mozilla Firefox
  • Apple Safari
  • Microsoft Edge

第 2 章 RHACS 云服务入门

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service) 为 不同平台上的 Kubernetes 集群提供安全服务。

本节提供了在 Red Hat OpenShift 上使用 RHACS Cloud Service 的说明,包括 OpenShift Container Platform、OpenShift Kubernetes Engine (OKE)、Red Hat OpenShift Dedicated (OSD)、Azure Red Hat OpenShift (ARO)和 Red Hat OpenShift Service on Amazon Web Services (ROSA)。有关其他 Kubernetes 平台上 RHACS 云服务不同的信息,请参阅相关的备注。

此安装示例演示了如何使用 Operator 在 OpenShift Container Platform 上设置 RHACS 云服务。它不包括使用 Helm chart 或 roxctl CLI 的安装。

先决条件

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

2.1. 访问 ACS 控制台

  1. 在 Red Hat Hybrid Cloud Console 中,从导航菜单中选择 Advanced Cluster SecurityACS Instances,然后选择您要连接到安全集群的实例。

    • Instance Details 部分中,记下 Central API Endpoint。您可以在创建安全集群时使用此地址。
  2. Open ACS Console。如果需要 Red Hat Single Sign-On (RH-SSO) 凭证,或者另一个身份提供程序的凭证(如果已经配置)。

2.2. 创建 RHACS 云服务项目

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

2.3. 生成 init 捆绑包

  1. 在 ACS 控制台中,进入到 Platform ConfigurationIntegrations
  2. 进入 Authentication Tokens 部分,再点 Cluster Init Bundle
  3. Generate bundle
  4. 为集群 init 捆绑包输入一个名称并点 Generate
  5. Download Kubernetes Secret File 下载生成的捆绑包。

    重要

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

2.4. 通过创建资源应用 init 捆绑包

  1. 使用一个终端窗口,登录到 OpenShift Container Platform 集群并使用 Red Hat OpenShift CLI,运行以下命令来创建资源:

    $ oc create -f <init_bundle>.yaml \ 1
      -n <stackrox> 2
    1
    指定包含 secret 的 init 捆绑包的文件名。
    2
    指定在 OpenShift Container Platform 集群中创建的项目的名称(例如 stackrox)。
注意

对于非 OpenShift Kubernetes 集群,请输入可比较的 kubectl 命令以创建资源。

2.5. 在每个集群中安装安全集群资源

这些步骤假设您使用 Operator 安装资源。

注意

要在非 OpenShift Kubernetes 集群上安装,您必须使用 Helm chart 或 roxctl CLI 安装安全集群资源。

2.5.1. 在集群上安装 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 字段选择特定命名空间。红帽建议在 rhacs-operator 命名空间中安装 Red Hat Advanced Cluster Security for Kubernetes Operator。
    • 更新批准选择自动或手工。红帽建议您选择 自动更新 并为 Operator 频道选择 latest 选项。
  6. Install

验证

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

2.5.2. 创建安全集群资源

  1. 在集群中,进入到 OperatorsInstalled Operators
  2. 单击 Project 菜单,再选择 stackrox 命名空间。
  3. Provided APIs 下,选择 Secured Cluster
  4. SecuredClusters 页面中,点 Create SecuredCluster
  5. 选择 Form view
  6. 通过接受或编辑默认名称进入新项目名称。默认值为 stackrox-secured-cluster-services
  7. 可选:为集群添加任何标签。
  8. 输入您的 SecuredCluster 自定义资源的唯一名称。
  9. 输入 Central API Endpoint,包括地址和端口号。您可以通过选择 Advanced Cluster SecurityACS Instances,然后点您创建的 ACS 实例,在 Red Hat Hybrid Cloud Console 控制台中再次查看此信息。
  10. Create

2.5.3. 验证 RHACS 云服务安装

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

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

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

2.6. 对 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 设置为分配给创建 ACSCS 实例的用户的组织 ID。这是用户所属的机构帐户的 ID。这可以被视为用户所具备的"租户",并且归其所有。只有具有相同组织帐户的用户才能使用 Red Hat SSO 身份验证提供程序访问 ACS 控制台。

注意

要更好地控制对 ACS 控制台的访问权限,请配置另一个身份提供程序,而不依赖于 Red Hat SSO 身份验证提供程序。在置备后,您可以使用 Operating → Managing user access 下的其中一个指南设置自己的身份提供程序。

注意

要将此身份验证提供程序配置为登录页面上的第一个身份验证选项,其名称应小于 Red Hat SSO

最小访问角色设置为 None。为此字段分配不同的值可向具有相同机构帐户的所有用户访问 ACSCS 实例。

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

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

您可以添加更多规则,将 ACS 控制台的访问权限授予同一组织帐户的其他人;例如,将电子邮件 用作密钥。

第 3 章 在 Red Hat OpenShift 上安装 RHACS

3.1. 在 Red Hat OpenShift 上安装 RHACS 的高级别概述

Red Hat Advanced Cluster Security for Kubernetes (RHACS)为您的自我管理的 Red Hat OpenShift Kubernetes 系统提供安全服务。

安装前:

以下列表提供了安装步骤的高级概述:

  1. 使用 Operator、Helm chart 或 roxctl CLI 在集群中安装 Central 服务
  2. 生成并应用 init 捆绑包
  3. 在每个安全集群中安装安全集群资源

3.2. Red Hat OpenShift 上 RHACS 的先决条件

在为 OpenShift Container Platform 安装 RHACS 或另一个与 OCP 兼容的 Kubernetes 平台前,请确保您满足先决条件。

3.2.1. 常规要求

RHACS 有一些系统要求,在安装前必须满足这些系统要求。

警告

您不能在以下环境中安装 Red Hat Advanced Cluster Security for Kubernetes:

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

要安装 Red Hat Advanced Cluster Security for Kubernetes,您必须有:

  • 具有受支持的操作系统的集群节点。如需更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策

    • 操作系统 :Amazon Linux、CentOS、Container-Optimized OS from Google、Red Hat Enterprise Linux CoreOS(RHCOS)、Debian、Red Hat Enterprise Linux(RHEL) 或 Ubuntu。
    • 处理器和内存 :2 个 CPU 内核和至少 3GiB RAM。

      注意

      对于部署 Central,请使用带有四个或更多内核的机器类型,并应用调度策略在这样的节点上启动 Central。

    • 架构: AMD64、ppc64le 或 s390x。

      注意

      您只能在 IBM Power、IBM zSystems 和 IBM® LinuxONE 集群上安装 RHACS 安全集群服务。目前不支持 Central。

  • 使用持久性卷声明(PVC)的持久性存储。

    重要

    您不能在 Red Hat Advanced Cluster Security for Kubernetes 中使用 Ceph FS 存储。红帽建议为 Red Hat Advanced Cluster Security for Kubernetes 使用 RBD 块模式 PVC。

    • 使用固态驱动器(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。

使用 Helm chart 安装:

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

3.2.2. 安装 Central 的先决条件

一个名为 Central 的单一容器化服务处理数据持久性、API 交互和用户界面(Portal)访问。

中心需要持久性存储:

  • 您可以使用持久性卷声明(PVC)提供存储。

    注意

    只有在所有主机(或一组主机)挂载共享文件系统(如 NFS 共享或存储设备)时,您可以使用 hostPath 卷进行存储。否则,您的数据只保存在一个节点中。红帽不推荐使用 hostPath 卷。

  • 使用固态磁盘(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。
  • 如果使用 web 代理或防火墙,您必须配置绕过规则,以允许 definitions.stackrox.iocollector-modules.stackrox.io 域的流量并启用 Red Hat Advanced Cluster Security for Kubernetes 来信任您的 web 代理或防火墙。否则,对漏洞定义和内核支持软件包更新将失败。

    Red Hat Advanced Cluster Security for Kubernetes 需要访问:

    • definitions.stackrox.io,用于下载更新的漏洞定义。漏洞定义更新允许 Red Hat Advanced Cluster Security for Kubernetes 在发现新漏洞或其他数据源时维护最新的漏洞数据。
    • collector-modules.stackrox.io,用于下载更新的内核支持软件包。更新了内核支持软件包,确保 Red Hat Advanced Cluster Security for Kubernetes 可以监控最新的操作系统,并收集与容器内运行的网络流量和进程相关的数据。如果没有这些更新,当在集群中添加新节点,或者更新节点的操作系统后,Red Hat Advanced Cluster Security for Kubernetes 可能无法监控容器。
注意

为安全起见,您应该在具有有限的管理访问权限的集群中部署 Central。

内存和存储要求

下表列出了安装和运行 Central 所需的最小内存和存储值。

CentralCPU内存存储

Request(请求)

1.5 个内核

4 GiB

100 GiB

限制

4 个核

8 GiB

100 GiB

大小指南

根据集群中的节点数量,使用以下计算资源和存储值。

节点部署CPU内存存储

最多 100

最多 1000

2 个内核

4 GiB

100 GiB

最多 500

最多 2000

4 个核

8 GiB

100 GiB

最多 500

最多 2000

8 个内核

12 - 16 GiB

100 - 200 GiB

3.2.3. 安装扫描器的先决条件

Red Hat Advanced Cluster Security for Kubernetes 包括一个称为 Scanner 的镜像漏洞策略。此服务扫描未被扫描程序集成到镜像 registry 中的镜像。

内存和存储要求
扫描程序CPU内存

Request(请求)

1.2 个内核

2700 MiB

限制

5 个内核

8000 MiB

3.2.4. 安装 Sensor 的先决条件

Sensor 监控 Kubernetes 和 OpenShift Container Platform 集群。这些服务目前部署到单个部署中,该服务处理与 Kubernetes API 的交互,并与 Collector 协调。

内存和存储要求
SensorCPU内存

Request(请求)

1 个内核

1 GiB

限制

2 个内核

4 GiB

3.2.5. 安装 Admission 控制器的先决条件

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

内存和存储要求

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

准入控制器CPU内存

Request(请求)

.05 个内核

100 MiB

限制

.5 个内核

500 MiB

3.2.6. 安装 Collector 的先决条件

收集器监控安全集群中每个节点的运行时活动。它连接到 Sensor 来报告此信息。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

内存和存储要求
CollectorCPU内存

Request(请求)

.05 个内核

320 MiB

限制

.75 个内核

1 GiB

注意

收集器使用 mutable 镜像标签( <version>-latest),因此您可以更轻松地获得对较新的 Linux 内核版本的支持。对于镜像更新,代码、预先存在的内核模块或 eBPF 程序没有改变。更新只添加对初始发布后发布的新内核版本的支持的单个镜像层。

3.3. 在 Red Hat OpenShift 中为 RHACS 安装 Central 服务

Central 是包含 RHACS 应用程序管理界面和服务的资源。它处理数据持久性、API 交互和 RHACS 门户访问。您可以使用同一中实例来保护多个 OpenShift Container Platform 或 Kubernetes 集群。

您可以使用以下方法之一在 OpenShift Container Platform 或 Kubernetes 集群上安装 Central:

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

3.3.1. 使用 Operator 安装 Central

3.3.1.1. 安装 Red Hat Advanced Cluster Security for Kubernetes Operator

使用 OpenShift Container Platform 提供的 OperatorHub 是安装 Red Hat Advanced Cluster Security for Kubernetes 的最简单方法。

前提条件

  • 您可以使用具有 Operator 安装权限的账户访问 OpenShift Container Platform 集群。
  • 您必须使用 OpenShift Container Platform 4.6 或更高版本。

流程

  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 更新至最新版本。

      重要

      如果选择手动更新,在更新安装了 Central 的集群中的 RHACS Operator 时,您必须更新所有安全集群中的 RHACS Operator。安装 Central 的安全集群和集群必须具有相同的版本,以确保最佳功能。

  6. Install

验证

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

下一步

  • 安装、配置和部署 Central 自定义资源。
3.3.1.2. 使用 Operator 方法安装 Central

Red Hat Advanced Cluster Security for Kubernetes 的主要组件名为 Central。您可以使用 Central 自定义资源在 OpenShift Container Platform 上安装 Central。您只需要部署 Central 一次,并使用同一 Central 安装监控多个独立集群。

重要

当您首次安装 Red Hat Advanced Cluster Security for Kubernetes 时,您必须首先安装 Central 自定义资源,因为 SecuredCluster 自定义资源安装取决于 Central 生成的证书。

前提条件

  • 您必须使用 OpenShift Container Platform 4.6 或更高版本。

流程

  1. 在 OpenShift Container Platform web 控制台中进入到 OperatorsInstalled Operators 页面。
  2. 从安装的 Operator 列表中选择 Red Hat Advanced Cluster Security for Kubernetes Operator。
  3. 如果您在推荐的命名空间中安装了 Operator,OpenShift Container Platform 会将项目列为 rhacs-operator。选择 Project: rhacs-operatorCreate project

    警告
    • 如果您在不同的命名空间中安装了 Operator,则 OpenShift Container Platform 会显示该命名空间的名称,而不是 rhacs-operator
    • 您必须在自己的项目中安装 Red Hat Advanced Cluster Security for Kubernetes Central 自定义资源,而不是在 rhacs-operatoropenshift-operator 项目中安装 Red Hat Advanced Cluster Security for Kubernetes Operator。
  4. 输入新项目名称(如 stackrox),然后点 Create。红帽建议使用 stackrox 作为项目名称。
  5. Provided APIs 部分下,选择 Central。点 Create Central
  6. 输入您的 Central 自定义资源的名称并添加您要应用的任何标签。否则,接受可用选项的默认值。
  7. Create
注意

如果使用集群范围的代理,Red Hat Advanced Cluster Security for Kubernetes 会使用该代理配置连接到外部服务。

后续步骤

  1. 验证中央安装。
  2. 可选:配置中央选项。
  3. 生成包含集群 secret 的 init 捆绑包,它允许在 CentralSecuredCluster 资源之间的通信。您需要下载这个捆绑包,使用它来在您要保护的集群中生成资源,并安全地存储它。
  4. 在您要监控的每个集群中安装安全集群服务。

其他资源

3.3.1.3. 使用 Operator 方法验证中央安装

安装中心后,登录到 RHACS 门户以验证中央安装是否成功。

流程

  1. 在 OpenShift Container Platform web 控制台中进入到 OperatorsInstalled Operators 页面。
  2. 从安装的 Operator 列表中选择 Red Hat Advanced Cluster Security for Kubernetes Operator。
  3. 选择 Central 选项卡。
  4. Centrals 列表中,选择 stackrox-central-services 以查看其详细信息。
  5. 要获取 admin 用户的密码,您可以:

    • Admin Password Secret Reference 下的链接。
    • 使用 Red Hat OpenShift CLI 进入 Admin Credentials Info 下列出的命令:

      $ oc -n stackrox get secret central-htpasswd -o go-template='{{index .data "password" | base64decode}}'
  6. 使用 Red Hat OpenShift CLI 命令查找到 RHACS 门户的链接:

    $ oc -n stackrox get route central -o jsonpath="{.status.ingress[0].host}"

    另外,您可以执行以下命令,使用 Red Hat Advanced Cluster Security for Kubernetes web 控制台查找到 RHACS 门户的链接:

    1. 进入 NetworkingRoutes
    2. 找到 central 路由,再点 Location 列下的 RHACS 门户链接。
  7. 使用用户名 admin 和密码您在上一步中检索的密码登录 RHACS 门户。在完全配置 RHACS 前(例如,您拥有 Central 资源,并至少安装并配置一个 SecuredCluster 资源),仪表板中没有可用的数据。SecuredCluster 资源可以在与 Central 资源相同的集群中安装和配置。带有 SecuredCluster 资源的集群与 Red Hat Advanced Cluster Management(RHACM)中的受管集群类似。

后续步骤

  1. 可选:配置中央设置。
  2. 生成包含集群 secret 的 init 捆绑包,它允许在 CentralSecuredCluster 资源之间的通信。您需要下载这个捆绑包,使用它来在您要保护的集群中生成资源,并安全地存储它。
  3. 在您要监控的每个集群中安装安全集群服务。

3.3.2. 使用 Helm chart 安装 Central

您可以使用 Helm chart 安装 Central,而无需自定义任何自定义,使用默认值,或使用带有额外自定义配置参数的 Helm chart。

3.3.2.1. 使用 Helm chart 安装 Central,而无需自定义

您可以在没有自定义的情况下在集群中安装 RHACS。您必须添加 Helm Chart 仓库并安装 central-services Helm Chart,以安装 Central 和 Scanner 的集中组件。

3.3.2.1.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    $ 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) 用于安装针对每个集群(Sensor 和 Admission 控制器)和针对每个节点(Collector) 的组件。

    注意

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

验证

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

    $ helm search repo -l rhacs/
3.3.2.1.2. 在不自定义的情况下安装 central-services Helm chart

使用以下说明安装 central-services Helm Chart 以部署集中组件(Central 和 Scanner)。

前提条件

流程

  • 运行以下命令安装 Central 服务并使用一个路由来公开 Central:

    $ helm install -n stackrox \
      --create-namespace stackrox-central-services rhacs/central-services \
      --set imagePullSecrets.username=<username> \
      --set imagePullSecrets.password=<password> \
      --set central.exposure.route.enabled=true
  • 或者,运行以下命令安装 Central 服务并使用一个负载均衡器来公开 Central:

    $ helm install -n stackrox \
      --create-namespace stackrox-central-services rhacs/central-services \
      --set imagePullSecrets.username=<username> \
      --set imagePullSecrets.password=<password> \
      --set central.exposure.loadBalancer.enabled=true
  • 或者,运行以下命令安装 Central 服务并使用一个端口转发来公开 Central:

    $ helm install -n stackrox \
      --create-namespace stackrox-central-services rhacs/central-services \
        --set imagePullSecrets.username=<username> \
      --set imagePullSecrets.password=<password>
重要
  • 如果要在需要使用代理连接到外部服务的集群中安装 Red Hat Advanced Cluster Security for Kubernetes,则必须使用 proxyConfig 参数指定代理配置。例如:

    env:
      proxyConfig: |
        url: http://proxy.name:port
        username: username
        password: password
        excludes:
        - some.domain
  • 如果您已在安装的命名空间中创建了一个或多个镜像 pull secret,而不是使用用户名和密码,您可以使用 --set imagePullSecrets.useExisting="<pull-secret-1;pull-secret-2>"
  • 不要使用镜像 pull secret:

    • 如果您要从 quay.io/stackrox-io 或不需要身份验证的专用网络中的 registry 拉取镜像。使用 --set imagePullSecrets.allowNone=true,而不是指定用户名和密码。
    • 如果您已经在安装的命名空间中的默认服务帐户中配置了镜像 pull secret。使用 --set imagePullSecrets.useFromDefaultServiceAccount=true,而不是指定用户名和密码。

安装命令的输出包括:

  • 自动生成的管理员密码。
  • 关于存储所有配置值的说明。
  • Helm 生成的任何警告。
3.3.2.2. 使用自定义使用 Helm chart 安装 Central

您可以使用 helm installhelm upgrade 命令的 Helm Chart 配置参数在 Red Hat OpenShift 集群上安装 RHACS。您可以使用 --set 选项或创建 YAML 配置文件来指定这些参数。

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

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

本节列出了 values-private.yaml 文件的可配置参数。这些参数没有默认值。

3.3.2.2.1.1. 镜像 pull secret

从 registry 中拉取镜像所需的凭证取决于以下因素:

  • 如果使用自定义 registry,您必须指定这些参数:

    • imagePullSecrets.username
    • imagePullSecrets.password
    • image.registry
  • 如果不使用用户名和密码登录到自定义 registry,您必须指定以下参数之一:

    • imagePullSecrets.allowNone
    • imagePullSecrets.useExisting
    • imagePullSecrets.useFromDefaultServiceAccount
参数Description

imagePullSecrets.username

用于登录到 registry 的帐户的用户名。

imagePullSecrets.password

用于登录到 registry 的帐户的密码。

imagePullSecrets.allowNone

如果您使用自定义 registry,且允许在没有凭证的情况下拉取镜像,请使用 true

imagePullSecrets.useExisting

以逗号分隔的 secret 列表作为值。例如,secret1, secret2, secretN。如果您已在目标命名空间中创建了预先存在的镜像 pull secret,则使用此选项。

imagePullSecrets.useFromDefaultServiceAccount

如果您已经在目标命名空间中配置了具有足够范围的镜像 pull secret 的默认服务帐户,请使用 true

3.3.2.2.1.2. 代理配置

如果要在需要使用代理连接到外部服务的集群中安装 Red Hat Advanced Cluster Security for Kubernetes,则必须使用 proxyConfig 参数指定代理配置。例如:

env:
  proxyConfig: |
    url: http://proxy.name:port
    username: username
    password: password
    excludes:
    - some.domain
参数Description

env.proxyConfig

您的代理配置。

3.3.2.2.1.3. Central

Central 的可配置参数。

对于新安装,您可以跳过以下参数:

  • central.jwtSigner.key
  • central.serviceTLS.cert
  • central.serviceTLS.key
  • central.adminPassword.value
  • central.adminPassword.htpasswd
  • 当您没有为这些参数指定值时,Helm Chart 会为它们自动生成值。
  • 如果要修改这些值,您可以使用 helm upgrade 命令并使用 --set 选项指定值。
重要

对于设置管理员密码,您只能使用 central.adminPassword.valuecentral.adminPassword.htpasswd,但不能同时使用两者。

参数Description

central.jwtSigner.key

Red Hat Advanced Cluster Security for Kubernetes 应使用的私钥签名 JSON Web 令牌(JWT)进行验证。

central.serviceTLS.cert

Central 服务应用于部署中心的内部证书。

central.serviceTLS.key

Central 服务应使用的内部证书的私钥。

central.defaultTLS.cert

Central 应该使用的用户面向用户的证书。Red Hat Advanced Cluster Security for Kubernetes 将这个证书用于 RHACS 门户。

  • 对于新安装,您必须提供一个证书,否则 Red Hat Advanced Cluster Security for Kubernetes 通过使用自签名证书安装 Central。
  • 如果要升级,Red Hat Advanced Cluster Security for Kubernetes 会使用现有证书及其密钥。

central.defaultTLS.key

Central 应使用面向用户的证书的私钥。

  • 对于新安装,您必须提供私钥,否则 Red Hat Advanced Cluster Security for Kubernetes 使用自签名证书安装中心。
  • 如果要升级,Red Hat Advanced Cluster Security for Kubernetes 会使用现有证书及其密钥。

central.adminPassword.value

用于登录到 Red Hat Advanced Cluster Security for Kubernetes 的管理员密码。

central.adminPassword.htpasswd

用于登录到 Red Hat Advanced Cluster Security for Kubernetes 的管理员密码。此密码以散列格式存储,使用 bcrypt。

注意

如果使用 central.adminPassword.htpasswd 参数,则必须使用 bcrypt 编码的密码哈希。您可以运行 htpasswd -nB admin 命令来生成密码哈希。例如,

htpasswd: |
  admin:<bcrypt-hash>
3.3.2.2.1.4. 扫描程序

扫描程序的可配置参数。

对于新的安装,您可以跳过以下参数,以及 Helm Chart 自动生成值。否则,如果您升级到新版本,请指定以下参数的值:

  • scanner.dbPassword.value
  • scanner.serviceTLS.cert
  • scanner.serviceTLS.key
  • scanner.dbServiceTLS.cert
  • scanner.dbServiceTLS.key
参数Description

scanner.dbPassword.value

用于通过 Scanner 数据库进行身份验证的密码。不要修改此参数,因为 Red Hat Advanced Cluster Security for Kubernetes 会自动创建和使用其值。

scanner.serviceTLS.cert

扫描程序服务用于部署扫描器的内部证书。

scanner.serviceTLS.key

Scanner 服务使用的内部证书的私钥。

scanner.dbServiceTLS.cert

Scanner-db 服务应用于部署 Scanner 数据库的内部证书。

scanner.dbServiceTLS.key

Scanner-db 服务应使用的内部证书的私钥。

3.3.2.2.2. 公共配置文件

本节列出了 values-public.yaml 文件的可配置参数。

3.3.2.2.2.1. 镜像 pull secret

镜像拉取 secret 是从 registry 中拉取镜像所需的凭证。

参数Description

imagePullSecrets.allowNone

如果您使用自定义 registry,且允许在没有凭证的情况下拉取镜像,请使用 true

imagePullSecrets.useExisting

以逗号分隔的 secret 列表作为值。例如,secret1, secret2.如果您已在目标命名空间中创建了预先存在的镜像 pull secret,则使用此选项。

imagePullSecrets.useFromDefaultServiceAccount

如果您已经在目标命名空间中配置了具有足够范围的镜像 pull secret 的默认服务帐户,请使用 true

3.3.2.2.2.2. 镜像

镜像声明了配置来设置主 registry,Helm Chart 用来为 central.imagescanner.imagescanner.dbImage 参数解析镜像。

参数Description

image.registry

镜像 registry 的地址。使用主机名,如 registry.redhat.io 或远程 registry 主机名,如 us.gcr.io/stackrox-mirror

3.3.2.2.2.3. 环境变量

Red Hat Advanced Cluster Security for Kubernetes 会自动检测到集群环境,并为 env.openshiftenv.istioenv.platform 设置值。仅设置这些值来覆盖自动集群环境检测。

参数Description

env.openshift

使用 true 在 OpenShift Container Platform 集群上安装并覆盖自动集群环境检测。

env.istio

使用 true 在启用了 Istio 的集群上安装并覆盖自动集群环境检测。

env.platform

安装 Red Hat Advanced Cluster Security for Kubernetes 的平台。将其值设为 defaultgke 以指定集群平台并覆盖自动集群环境检测。

env.offlineMode

使用 true 以离线模式使用 Red Hat Advanced Cluster Security for Kubernetes。

3.3.2.2.2.4. 其他可信证书颁发机构

Red Hat Advanced Cluster Security for Kubernetes 会自动引用要信任的系统根证书。当 Central 或 Scanner 必须联系到使用您机构中授权或全局可信合作伙伴机构发布的证书的服务时,您可以使用以下参数来指定对这些服务的信任:

参数Description

additionalCAs.<certificate_name>

指定要信任的根证书颁发机构的 PEM 编码证书。

3.3.2.2.2.5. Central

Central 的可配置参数。

  • 您必须将持久性存储选项指定为 hostPathpersistentVolumeClaim
  • 用于公开外部访问的中央部署。您必须指定一个参数,可以是 central.exposure.loadBalancercentral.exposure.nodePortcentral.exposure.route。如果没有为这些参数指定任何值,您必须手动公开 Central,或使用端口转发(port-forwarding)访问它。
参数Description

central.endpointsConfig

Central 的端点配置选项。

central.nodeSelector

如果节点选择器选择污点节点,请使用此参数指定 taint toleration key、value 和 effect。此参数主要用于基础架构节点。

central.tolerations

如果节点选择器选择污点节点,请使用此参数指定 taint toleration key、value 和 effect。此参数主要用于基础架构节点。

central.exposeMonitoring

指定 true,以在端口号 9090 上为 Central 公开 Prometheus 指标端点。

central.image.registry

用于覆盖 Central 镜像的全局 image.registry 参数的自定义 registry。

central.image.name

覆盖默认 Central 镜像名称(main)的自定义镜像名称。

central.image.tag

覆盖 Central 镜像默认标签的自定义镜像标签。如果在新安装过程中指定了自己的镜像标签,则您必须在运行 helm upgrade 命令升级到新版本时手动增加此标签。如果您 mirror 了自己的 registry 中的镜像,请不要修改原始镜像标签。

central.image.fullRef

Central 镜像的完整参考,包括 registry 地址、镜像名称和镜像标签。为此参数设置值会覆盖 central.image.registrycentral.image.namecentral.image.tag 参数。

central.resources.requests.memory

Central 的内存请求,以覆盖默认值。

central.resources.requests.cpu

Central 的 CPU 请求,以覆盖默认值。

central.resources.limits.memory

Central 的内存限值来覆盖默认值。

central.resources.limits.cpu

Central 的 CPU 限制,以覆盖默认值。

central.persistence.hostPath

Red Hat Advanced Cluster Security for Kubernetes 应该创建数据库卷的节点的路径。红帽不推荐使用这个选项。

central.persistence.persistentVolumeClaim.claimName

您要使用的持久性卷声明(PVC)的名称。

central.persistence.persistentVolumeClaim.createClaim

使用 true 创建一个新的持久性卷声明,或 false 来使用现有的声明。

central.persistence.persistentVolumeClaim.size

由指定声明管理的持久性卷的大小(以 GiB 为单位)。

central.exposure.loadBalancer.enabled

使用 true 来通过使用负载均衡器公开 Central。

central.exposure.loadBalancer.port

要公开 Central 的端口号。默认端口号为 443。

central.exposure.nodePort.enabled

使用 true 通过节点端口服务公开 Central。

central.exposure.nodePort.port

要公开 Central 的端口号。当您跳过此参数时,OpenShift Container Platform 会自动分配一个端口号。如果您使用节点端口公开 Red Hat Advanced Cluster Security for Kubernetes,红帽建议您不要指定端口号。

central.exposure.route.enabled

使用 true 通过路由公开 Central。此参数仅适用于 OpenShift Container Platform 集群。

3.3.2.2.2.6. 扫描程序

扫描程序的可配置参数。

参数Description

scanner.disable

使用 true 在没有扫描器的情况下安装 Red Hat Advanced Cluster Security for Kubernetes。当您与 helm upgrade 命令一起使用时,Helm 会移除现有的 Scanner 部署。

scanner.exposeMonitoring

指定 true,以在端口号 9090 上为 Scanner 公开 Prometheus 指标端点。

scanner.replicas

为 Scanner 部署创建的副本数。当您将其与 scanner.autoscaling 参数搭配使用时,这个值会设置初始副本数。

scanner.logLevel

为 Scanner 配置日志级别。红帽建议您不要更改日志级别的默认值 (INFO)。

scanner.nodeSelector

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

scanner.tolerations

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

scanner.autoscaling.disable

使用 true 为 Scanner 部署禁用自动扩展。禁用自动扩展时,minReplicasmaxReplicas 参数没有任何效果。

scanner.autoscaling.minReplicas

自动扩展的最小副本数。

scanner.autoscaling.maxReplicas

自动扩展的最大副本数。

scanner.resources.requests.memory

扫描器的内存请求,以覆盖默认值。

scanner.resources.requests.cpu

扫描器的 CPU 请求,以覆盖默认值。

scanner.resources.limits.memory

扫描器的内存限值,以覆盖默认值。

scanner.resources.limits.cpu

扫描器的 CPU 限制,以覆盖默认值。

scanner.dbResources.requests.memory

Scanner 数据库部署的内存请求,以覆盖默认值。

scanner.dbResources.requests.cpu

扫描数据库部署的 CPU 请求,以覆盖默认值。

scanner.dbResources.limits.memory

Scanner 数据库部署的内存限值,以覆盖默认值。

scanner.dbResources.limits.cpu

扫描数据库部署的 CPU 限制,以覆盖默认值。

scanner.image.registry

Scanner 镜像的自定义 registry。

scanner.image.name

覆盖默认扫描程序镜像名称(scanner)的自定义镜像名称。

scanner.dbImage.registry

Scanner DB 镜像的自定义 registry。

scanner.dbImage.name

覆盖默认 Scanner DB 镜像名称 (scanner-db) 的自定义镜像名称。

scanner.dbNodeSelector

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

scanner.dbTolerations

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

3.3.2.2.2.7. 自定义

使用这些参数为 Red Hat Advanced Cluster Security for Kubernetes 创建的所有对象指定附加属性。

参数Description

customize.labels

附加到所有对象的自定义标签。

customize.annotations

附加到所有对象的自定义注解。

customize.podLabels

附加到所有部署的自定义标签。

customize.podAnnotations

附加到所有部署的自定义注解。

customize.envVars

所有对象中所有容器的自定义环境变量。

customize.central.labels

附加到 Central 创建的所有对象的自定义标签。

customize.central.annotations

附加到中央创建的所有对象的自定义注解。

customize.central.podLabels

附加到所有中央部署的自定义标签。

customize.central.podAnnotations

附加到所有中央部署的自定义注解。

customize.central.envVars

所有中央容器的自定义环境变量。

customize.scanner.labels

附加到 Scanner 创建的所有对象的自定义标签。

customize.scanner.annotations

附加到 Scanner 创建的所有对象的自定义注解。

customize.scanner.podLabels

附加到所有 Scanner 部署的自定义标签。

customize.scanner.podAnnotations

附加到所有 Scanner 部署的自定义注解。

customize.scanner.envVars

所有 Scanner 容器的自定义环境变量。

customize.scanner-db.labels

附加到 Scanner DB 创建的所有对象的自定义标签。

customize.scanner-db.annotations

附加到 Scanner DB 创建的所有对象的自定义注解。

customize.scanner-db.podLabels

附加到所有 Scanner DB 部署的自定义标签。

customize.scanner-db.podAnnotations

附加到所有 Scanner DB 部署的自定义注解。

customize.scanner-db.envVars

所有 Scanner DB 容器的自定义环境变量。

您还可以使用:

  • customize.other.service/*.labelscustomize.other.service/*.annotations 参数,为所有对象指定标签和注解。
  • 或者,提供特定的服务名称,例如 customize.other.service/central-loadbalancer.labelscustomize.other.service/central-loadbalancer.annotations 作为参数,并设置它们的值。
3.3.2.2.2.8. 高级自定义
重要

本节中指定的参数仅用于信息。红帽不支持带有修改后的命名空间和发行版本名称的 Red Hat Advanced Cluster Security for Kubernetes 实例。

参数Description

allowNonstandardNamespace

使用 true 将 Red Hat Advanced Cluster Security for Kubernetes 部署到默认命名空间 stackrox 以外的命名空间中。

allowNonstandardReleaseName

使用 true 使用默认 stackrox-central-services 之外的发行版本名称部署 Red Hat Advanced Cluster Security for Kubernetes。

3.3.2.2.3. 安装 central-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 central-services Helm Chart 来部署集中式组件(Central 和 Scanner)。

流程

  • 运行以下命令:

    $ helm install -n stackrox --create-namespace \
      stackrox-central-services rhacs/central-services \
      -f <path_to_values_public.yaml> -f <path_to_values_private.yaml> 1
    1
    使用 -f 选项指定 YAML 配置文件的路径。
3.3.2.3. 在部署 central-services Helm Chart 后更改配置选项

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

流程

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

    $ helm upgrade -n stackrox \
      stackrox-central-services rhacs/central-services \
      -f <path_to_values_public.yaml> \
      -f <path_to_values_private.yaml>
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

3.3.3. 使用 roxctl CLI 安装 Central

警告

对于生产环境,红帽建议使用 Operator 或 Helm chart 来安装 RHACS。除非有需要使用此方法的特定安装需要,否则不要使用 roxctl 安装方法。

3.3.3.1. 安装 roxctl CLI

要安装 Red Hat Advanced Cluster Security for Kubernetes,您必须下载二进制文件来安装 roxctl CLI。您可以在 Linux、Windows 或 macOS 上安装 roxctl

3.3.3.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
3.3.3.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
3.3.3.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Windows/roxctl.exe

验证

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

    $ roxctl version
3.3.3.1.4. 使用交互式安装程序

使用交互式安装程序为您的环境生成所需的 secret、部署配置和部署脚本。

流程

  1. 运行交互式 install 命令:

    $ roxctl central generate interactive
    重要

    使用 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes 会创建 PodSecurityPolicy (PSP)对象,以便向后兼容。如果要在 Kubernetes 版本 1.25 及更新版本上,或在 OpenShift Container Platform version 4.12 和更新版本上安装 RHACS,则必须禁用 PSP 对象的创建。要做到这一点,为 roxctl central generateroxctl sensor generate 命令指定 --enable-pod-security-policies 选项为 false

  2. Enter 接受提示的默认值或根据需要输入自定义值。

    Enter path to the backup bundle from which to restore keys and certificates (optional):
    Enter PEM cert bundle file (optional): 1
    Enter administrator password (default: autogenerated):
    Enter orchestrator (k8s, openshift): openshift
    Enter the directory to output the deployment bundle to (default: "central-bundle"):
    Enter the OpenShift major version (3 or 4) to deploy on (default: "0"): 4
    Enter Istio version when deploying into an Istio-enabled cluster (leave empty when not running Istio) (optional):
    Enter the method of exposing Central (route, lb, np, none) (default: "none"): route 2
    Enter main image to use (default: "stackrox.io/main:3.0.61.1"):
    Enter whether to run StackRox in offline mode, which avoids reaching out to the Internet (default: "false"):
    Enter whether to enable telemetry (default: "true"):
    Enter the deployment tool to use (kubectl, helm, helm-values) (default: "kubectl"):
    Enter Scanner DB image to use (default: "stackrox.io/scanner-db:2.15.2"):
    Enter Scanner image to use (default: "stackrox.io/scanner:2.15.2"):
    Enter Central volume type (hostpath, pvc): pvc 3
    Enter external volume name (default: "stackrox-db"):
    Enter external volume size in Gi (default: "100"):
    Enter storage class name (optional if you have a default StorageClass configured):
    1
    如果要添加自定义 TLS 证书,请提供 PEM 编码证书的文件路径。当您指定自定义证书时,交互式安装程序还会提示您为您要使用的自定义证书提供 PEM 私钥。
    2
    要使用 RHACS 门户,您必须使用路由(负载均衡器或节点端口)公开中。
    3
    如果您计划在带有 hostPath 卷的 OpenShift Container Platform 上安装 Red Hat Advanced Cluster Security for Kubernetes,您必须修改 SELinux 策略。
    警告

    在 OpenShift Container Platform 中,对于 hostPath 卷,您必须修改 SELinux 策略以允许访问主机和容器共享的目录。这是因为 SELinux 默认阻止目录共享。要修改 SELinux 策略,请运行以下命令:

    $ sudo chcon -Rt svirt_sandbox_file_t <full_volume_path>

    但是,红帽不推荐修改 SELinux 策略,在 OpenShift Container Platform 上安装时使用 PVC。

在完成时,安装程序会创建一个名为 central-bundle 的文件夹,其中包含用于部署 Central 所需的 YAML 清单和脚本。另外,它显示了您需要运行的脚本的屏幕说明,以部署其他可信证书颁发机构、中部和扫描器,以及登录 RHACS 门户的身份验证说明(如果您回答提示时未提供密码)。

3.3.3.2. 运行中央安装脚本

运行交互式安装程序后,您可以运行 setup.sh 脚本来安装 Central。

流程

  1. 运行 setup.sh 脚本来配置镜像 registry 访问:

    $ ./central-bundle/central/scripts/setup.sh
  2. 创建所需资源:

    $ oc create -R -f central-bundle/central
  3. 检查部署进度:

    $ oc get pod -n stackrox -w
  4. 在 Central 运行后,找到 RHACS 门户 IP 地址并在浏览器中打开。根据您在回答提示时选择的风险,请使用以下方法之一获取 IP 地址。

    公开方法命令地址Example

    Route(路由)

    oc -n stackrox get route central

    在输出中 HOST/PORT 列下的地址

    https://central-stackrox.example.route

    节点端口

    oc get node -owide && oc -n stackrox get svc central-loadbalancer

    任何节点的 IP 或主机名,在服务显示的端口中

    https://198.51.100.0:31489

    Load Balancer

    oc -n stackrox get svc central-loadbalancer

    在端口 443 上为服务显示 EXTERNAL-IP 或主机名

    https://192.0.2.0

    central-bundle/central/scripts/port-forward.sh 8443

    https://localhost:8443

    https://localhost:8443

注意

如果您在互动安装过程中选择了自动生成的密码,您可以运行以下命令将其记录到 Central:

$ cat central-bundle/password

3.4. 可选 - 使用 Operator 为 RHACS 配置 Central 配置选项

本主题提供有关您可以使用 Operator 配置的可选配置选项的信息。

3.4.1. 使用 Operator 的中央配置选项

当您创建 Central 实例时,Operator 列出了 Central 自定义资源的以下配置选项。

3.4.1.1. Central 设置
参数Description

central.adminPasswordSecret

指定在 password 密码数据项中包含管理员密码的 secret。如果省略,Operator 会自动生成密码,并将其存储在 central-htpasswd secret 的 password 项中。

central.defaultTLSSecret

默认情况下,Central 仅提供内部 TLS 证书,这意味着您需要在入口或负载均衡器级别处理 TLS 终止。如果要在 Central 中终止 TLS 并提供自定义服务器证书,您可以指定包含证书和私钥的 secret。

central.adminPasswordGenerationDisabled

将此参数设置为 true 以禁用自动管理员密码生成。仅在执行替代验证方法首次设置后使用它。不要将它用于初始安装。否则,您必须重新安装自定义资源才能重新登录。

central.tolerations

如果节点选择器选择污点节点,请使用此参数指定 taint toleration key、value 和 effect。此参数主要用于基础架构节点。

central.exposure.loadBalancer.enabled

把它设置为 true,以通过负载均衡器公开 Central。

central.exposure.loadBalancer.port

使用此参数为您的负载均衡器指定自定义端口。

central.exposure.loadBalancer.ip

使用这个参数为您的负载均衡器指定保留的静态 IP 地址。

central.exposure.route.enabled

把它设置为 true,以通过 OpenShift 路由公开 Central。默认值为 false

central.exposure.route.host

指定用于 Central 路由的自定义主机名。保留为不设置,以接受 OpenShift Container Platform 提供的默认值。

central.exposure.nodeport.enabled

把它设置为 true,以通过节点端口公开 Central。默认值为 false

central.exposure.nodeport.port

使用此选项指定显式节点端口。

central.monitoring.exposeEndpoint

使用 Enabled 为 Central 启用监控。当您启用监控时,RHACS 在端口号 9090 上创建一个新的监控服务。默认值为 Disabled

central.nodeSelector

如果您希望此组件只在特定节点上运行,您可以使用此参数配置节点选择器。

central.persistence.hostPath.path

指定将持久数据存储在主机上的主机路径。红帽不推荐使用这个方法。如果需要使用主机路径,则必须将其与节点选择器一起使用。

central.persistence.persistentVolumeClaim.claimName

要管理的持久性数据的 PVC 名称。如果没有具有指定名称的 PVC,则会创建它。如果没有设置,则默认值为 stackrox-db。为防止数据丢失 PVC,使用中心删除操作不会自动删除。

central.persistence.persistentVolumeClaim.size

通过声明创建持久性卷的大小。默认情况下会自动生成。

central.persistence.persistentVolumeClaim.storageClassName

用于 PVC 的存储类的名称。如果您的集群没有配置默认存储类,则必须为此参数提供一个值。

central.resources.limits

使用此参数覆盖 Central 的默认资源限值。

central.resources.requests

使用此参数覆盖 Central 的默认资源请求。

central.imagePullSecrets

使用此参数指定 Central 镜像的镜像 pull secret。

3.4.1.2. 扫描程序设置
参数Description

scanner.analyzer.nodeSelector

如果您希望此扫描程序仅在特定节点上运行,您可以使用此参数配置节点选择器。

scanner.analyzer.tolerations

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

scanner.analyzer.resources.limits

使用此参数覆盖扫描程序的默认资源限值。

scanner.analyzer.resources.requests

使用此参数覆盖扫描程序的默认资源请求。

scanner.analyzer.scaling.autoScaling

启用后,分析器副本数量会根据指定的限值来动态管理。

scanner.analyzer.scaling.maxReplicas

指定使用分析器自动扩展配置的最大副本

scanner.analyzer.scaling.minReplicas

指定使用分析器自动扩展配置的最小副本

scanner.analyzer.scaling.replicas

禁用自动扩展时,副本数始终配置为与此值匹配。

scanner.db.nodeSelector

如果您希望此组件只在特定节点上运行,您可以使用此参数配置节点选择器。

scanner.db.tolerations

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

scanner.db.resources.limits

使用此参数覆盖扫描程序的默认资源限值。

scanner.db.resources.requests

使用此参数覆盖扫描程序的默认资源请求。

scanner.monitoring.exposeEndpoint

使用 Enabled 为 Scanner 启用监控。当您启用监控时,RHACS 在端口号 9090 上创建一个新的监控服务。默认值为 Disabled

scanner.scannerComponent

如果您不想部署 Scanner,可以使用此参数来禁用它。如果禁用扫描器,本节中的所有其他设置都无效。红帽不推荐为 Kubernetes 扫描器禁用 Red Hat Advanced Cluster Security。

3.4.1.3. 常规设置和各种设置
参数Description

tls.additionalCAs

要信任的安全集群的其他可信 CA 证书。这些证书通常用于使用私有证书颁发机构与服务集成。

misc.createSCCs

指定 true 为 Central 创建 SecurityContextConstraints (SCC)。将 设置为 true 可能会导致某些环境中出现问题。

customize.annotations

允许为 Central 部署指定自定义注解。

customize.envVars

用于配置环境变量的高级设置。

egress.connectivityPolicy

配置 RHACS 是否应该以在线或离线模式运行。在离线模式下,禁用对漏洞定义和内核模块的自动更新。

3.5. 为 Red Hat OpenShift 上的 RHACS 生成并应用 init 捆绑包

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

要为 RHACS 云服务配置 init 捆绑包,请参阅以下资源:

注意

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

3.5.1. 生成 init 捆绑包

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

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

注意

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

流程

  1. 根据您的暴露的方法查找 RHACS 门户地址:

    1. 对于路由:

      $ oc get route central -n stackrox
    2. 对于负载均衡器:

      $ oc get service central-loadbalancer -n stackrox
    3. 对于端口转发:

      1. 运行以下命令:

        $ oc port-forward svc/central 18443:443 -n stackrox
      2. 进入到 https://localhost:18443/
  2. 在 RHACS 门户网站中,进入 Platform ConfigurationIntegrations
  3. 进入 Authentication Tokens 部分,再点 Cluster Init Bundle
  4. Generate bundle
  5. 为集群 init 捆绑包输入一个名称并点 Generate

    1. 如果使用 Helm chart 安装,请点击 Download Helm Values File 下载生成的捆绑包。
    2. 如果使用 Operator 安装,请点击 Download Kubernetes Secret File 下载生成的捆绑包。
重要

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

后续步骤

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

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

注意

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

先决条件

您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量。

  • 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_API_TOKEN=<api_token>
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>

流程

  • 运行以下命令以生成包含 secret 的集群 init 捆绑包:

    对于 Helm 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output cluster_init_bundle.yaml

    对于 Operator 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output-secrets cluster_init_bundle.yaml
    重要

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

下一步

  • 使用 Red Hat OpenShift CLI 使用 init 捆绑包创建资源。

3.5.2. 使用 init 捆绑包创建资源

在安装安全集群前,您必须使用 init 捆绑包在集群中创建所需的资源,以允许安全集群上的服务与 Central 通信。

注意

如果使用 Helm chart 安装,请不要执行此步骤。

先决条件

  • 您必须生成了一个包含 secret 的 init 捆绑包。

流程

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

  • 在 OpenShift Container Platform Web 控制台中,在顶部菜单中点 + 打开 Import YAML 页面。您可以拖动 init 捆绑包文件或将其内容复制并粘贴到编辑器中,然后点 Create
  • 使用 Red Hat OpenShift CLI 运行以下命令来创建资源:

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

下一步

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

3.6. 在 Red Hat OpenShift 上为 RHACS 安装安全集群服务

本节论述了在安全集群中安装 Red Hat Advanced Cluster Security for Kubernetes 的安装过程。

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

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

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

3.6.1.1. 安装安全的集群服务

您可以使用 SecuredCluster 自定义资源在集群中安装安全的集群服务。您必须在要监控的环境中的每个集群中安装安全集群服务。

小心

安装安全的集群服务时,也会安装 Collector。要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

先决条件

  • 如果使用 OpenShift Container Platform,您必须安装版本 4.6 或更高版本。
  • 已安装 RHACS Operator。
  • 您已生成 init 捆绑包并将其应用到集群。

流程

  1. 在 OpenShift Container Platform web 控制台中进入到 OperatorsInstalled Operators 页面。
  2. 点 RHACS Operator。
  3. Operator 详情页面的中央导航菜单中点 Secured Cluster
  4. Create SecuredCluster
  5. Configure via 字段中选择以下选项之一:

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

    • 只有在您在同一集群中安装安全集群服务和 Central 时,才使用 central.stackrox.svc:443
  10. 接受默认值或配置自定义值(如果需要)。例如,如果您使用自定义证书或不受信任的 CA,您可能需要配置 TLS。
  11. Create

后续步骤

  1. 可选:配置其他安全的集群设置。
  2. 验证安装。

3.6.2. 使用 Helm chart 在安全集群中安装 RHACS

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

3.6.2.1. 使用 Helm chart 在安全集群中安装 RHACS
3.6.2.1.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    $ 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) 用于安装针对每个集群(Sensor 和 Admission 控制器)和针对每个节点(Collector) 的组件。

    注意

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

验证

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

    $ helm search repo -l rhacs/
3.6.2.1.2. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart

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

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须有用于公开 Central 服务的地址和端口号。

流程

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

    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \ 1
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 2
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    指定 Central 的地址和端口号。例如,ac s.domain.com:443
  • 在 OpenShift Container Platform 集群中运行以下命令:

    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \ 1
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 2
        --set scanner.disable=false
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    指定 Central 的地址和端口号。例如,ac s.domain.com:443
3.6.2.2. 使用自定义配置 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 文件。

3.6.2.2.1. 配置参数
参数Description

clusterName

集群的名称。

centralEndpoint

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

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.main.pullPolicy

main 镜像的镜像拉取策略。

image.collector.pullPolicy

Collector 镜像的镜像拉取策略。

image.main.tag

使用 main 镜像标签。

image.collector.tag

使用 collector 镜像标签。

collector.collectionMethod

EBPFKERNEL_MODULENO_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 请求用于 execportforward 事件。Red Hat Advanced Cluster Security for Kubernetes 不支持 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

在评估准入检查请求时,Red Hat Advanced Cluster Security for Kubernetes 应该等待的最大时间(以秒为单位)。使用它来设置启用镜像扫描时的请求超时。如果镜像扫描的运行时间超过指定时间,Red Hat Advanced Cluster Security for Kubernetes 接受了请求。

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。使用 slim Collector 镜像需要 Central 来提供匹配的 eBPF 探测或内核模块。如果您以离线模式运行 Red Hat Advanced Cluster Security for Kubernetes,您必须从 stackrox.io 下载内核支持软件包,并将其上传到 Central slim Collectors 才能正常工作。否则,您必须确保 Central 可以访问托管在 https://collector-modules.stackrox.io/ 的在线探测存储库。

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 会在安全集群中部署轻量级扫描程序和扫描器数据库,以允许扫描 OpenShift Container Registry 上的镜像。只有在 OpenShift 上才支持启用扫描器。默认值为 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 限制。使用此参数覆盖默认值。

3.6.2.2.1.1. 环境变量

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

customize:
  envVars:
    ENV_VAR1: "value1"
    ENV_VAR2: "value2"

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

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

3.6.2.2.2. 安装 secured-cluster-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 secure-cluster-services Helm chart 以部署 per-cluster 和 per-node 组件(Sensor、Admission controller 和 Collector)。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须有用于公开 Central 服务的地址和端口号。

流程

  • 运行以下命令:

    $ 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
    1
    使用 -f 选项指定 YAML 配置文件的路径。
注意

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

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

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

流程

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

    $ 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
    您必须指定 --reuse-values 参数,否则 Helm upgrade 命令重置所有之前配置的设置。
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

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

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

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

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

3.6.3.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
3.6.3.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
3.6.3.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Windows/roxctl.exe

验证

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

    $ roxctl version
3.6.3.2. 安装传感器(Sensor)

要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。以下步骤描述使用 RHACS 门户添加传感器。

先决条件

  • 您必须已安装了 Central 服务,或者可以访问 Red Hat Advanced Cluster Security Cloud Service (ACSCS)上的中央服务。

流程

  1. 在 RHACS 门户,进入到 Platform ConfigurationClusters
  2. 选择 + New Cluster
  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 脚本:

    $ unzip -d sensor sensor-<cluster_name>.zip
    $ ./sensor/sensor.sh

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

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

验证

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

    • 在 OpenShift Container Platform 中:

      $ oc get pod -n stackrox -w
    • 对于 Kubernetes:

      $ kubectl get pod -n stackrox -w
  2. Finish 关闭窗口。

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

3.7. 验证 Red Hat OpenShift 上的 RHACS 安装

提供验证 RHACS 是否已正确安装的步骤。

3.7.1. 验证安装

完成安装后,运行几个存在安全漏洞的应用程序并进入 RHACS 门户来评估安全评估结果和策略违反结果。

注意

以下部分中列出的示例应用程序包含关键漏洞,它们旨在验证 Red Hat Advanced Cluster Security for Kubernetes 的构建和部署时间评估功能。

验证安装:

  1. 根据您的暴露的方法查找 RHACS 门户地址:

    1. 对于路由:

      $ oc get route central -n stackrox
    2. 对于负载均衡器:

      $ oc get service central-loadbalancer -n stackrox
    3. 对于端口转发:

      1. 运行以下命令:

        $ oc port-forward svc/central 18443:443 -n stackrox
      2. 进入到 https://localhost:18443/
  2. 使用 Red Hat OpenShift CLI 创建新项目:

    $ oc new-project test
  3. 使用关键漏洞启动一些应用程序:

    $ oc run shell --labels=app=shellshock,team=test-team \
      --image=vulnerables/cve-2014-6271 -n test
    $ oc run samba --labels=app=rce \
      --image=vulnerables/cve-2017-7494 -n test

Red Hat Advanced Cluster Security for Kubernetes 会在向集群提交后自动扫描这些部署以了解安全风险以及策略违反情况。进入 RHACS 门户以查看违反情况。您可以使用默认用户名 admin 和生成的密码登录到 RHACS 门户。

第 4 章 在其他平台上安装 RHACS

4.1. 在其他平台上安装 RHACS 的高级别概述

Red Hat Advanced Cluster Security for Kubernetes (RHACS)在 Amazon Elastic Kubernetes Service (Amazon EKS)、Google Kubernetes Engine (Google GKE)和 Microsoft Azure Kubernetes Service (Microsoft AKS)上为自我管理的 RHACS 提供安全服务。

安装前:

以下列表提供了安装步骤的高级概述:

  1. 使用 Helm chart 或 roxctl CLI 在集群中安装 Central 服务
  2. 生成并应用 init 捆绑包
  3. 在每个安全集群中安装安全集群资源

4.2. 其他平台上的 RHACS 的先决条件

在 Amazon Elastic Kubernetes Service (Amazon EKS)、Google Kubernetes Engine (Google GKE)和 Microsoft Azure Kubernetes Service (Microsoft AKS)的其他平台上安装 RHACS 前,请确保您满足先决条件。

4.2.1. 常规要求

RHACS 有一些系统要求,在安装前必须满足这些系统要求。

警告

您不能在以下环境中安装 Red Hat Advanced Cluster Security for Kubernetes:

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

要安装 Red Hat Advanced Cluster Security for Kubernetes,您必须有:

  • OpenShift Container Platform 版本 4.5 或更高版本
  • 具有受支持的操作系统的集群节点。如需更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策

    • 操作系统 :Amazon Linux、CentOS、Container-Optimized OS from Google、Red Hat Enterprise Linux CoreOS(RHCOS)、Debian、Red Hat Enterprise Linux(RHEL) 或 Ubuntu。
    • 处理器和内存 :2 个 CPU 内核和至少 3GiB RAM。

      注意

      对于部署 Central,请使用带有四个或更多内核的机器类型,并应用调度策略在这样的节点上启动 Central。

    • 架构: AMD64、ppc64le 或 s390x。

      注意

      您只能在 IBM Power、IBM zSystems 和 IBM® LinuxONE 集群上安装 RHACS 安全集群服务。目前不支持 Central。

  • 使用持久性卷声明(PVC)的持久性存储。

    重要

    您不能在 Red Hat Advanced Cluster Security for Kubernetes 中使用 Ceph FS 存储。红帽建议为 Red Hat Advanced Cluster Security for Kubernetes 使用 RBD 块模式 PVC。

    • 使用固态驱动器(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。

使用 Helm chart 安装:

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

4.2.2. 安装 Central 的先决条件

一个名为 Central 的单一容器化服务处理数据持久性、API 交互和用户界面(Portal)访问。

中心需要持久性存储:

  • 您可以使用持久性卷声明(PVC)提供存储。

    注意

    只有在所有主机(或一组主机)挂载共享文件系统(如 NFS 共享或存储设备)时,您可以使用 hostPath 卷进行存储。否则,您的数据只保存在一个节点中。红帽不推荐使用 hostPath 卷。

  • 使用固态磁盘(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。
  • 如果使用 web 代理或防火墙,您必须配置绕过规则,以允许 definitions.stackrox.iocollector-modules.stackrox.io 域的流量并启用 Red Hat Advanced Cluster Security for Kubernetes 来信任您的 web 代理或防火墙。否则,对漏洞定义和内核支持软件包更新将失败。

    Red Hat Advanced Cluster Security for Kubernetes 需要访问:

    • definitions.stackrox.io,用于下载更新的漏洞定义。漏洞定义更新允许 Red Hat Advanced Cluster Security for Kubernetes 在发现新漏洞或其他数据源时维护最新的漏洞数据。
    • collector-modules.stackrox.io,用于下载更新的内核支持软件包。更新了内核支持软件包,确保 Red Hat Advanced Cluster Security for Kubernetes 可以监控最新的操作系统,并收集与容器内运行的网络流量和进程相关的数据。如果没有这些更新,当在集群中添加新节点,或者更新节点的操作系统后,Red Hat Advanced Cluster Security for Kubernetes 可能无法监控容器。
注意

为安全起见,您应该在具有有限的管理访问权限的集群中部署 Central。

内存和存储要求

下表列出了安装和运行 Central 所需的最小内存和存储值。

CentralCPU内存存储

Request(请求)

1.5 个内核

4 GiB

100 GiB

限制

4 个核

8 GiB

100 GiB

大小指南

根据集群中的节点数量,使用以下计算资源和存储值。

节点部署CPU内存存储

最多 100

最多 1000

2 个内核

4 GiB

100 GiB

最多 500

最多 2000

4 个核

8 GiB

100 GiB

最多 500

最多 2000

8 个内核

12 - 16 GiB

100 - 200 GiB

4.2.3. 安装扫描器的先决条件

Red Hat Advanced Cluster Security for Kubernetes 包括一个称为 Scanner 的镜像漏洞策略。此服务扫描未被扫描程序集成到镜像 registry 中的镜像。

内存和存储要求
扫描程序CPU内存

Request(请求)

1.2 个内核

2700 MiB

限制

5 个内核

8000 MiB

4.2.4. 安装 Sensor 的先决条件

Sensor 监控 Kubernetes 和 OpenShift Container Platform 集群。这些服务目前部署到单个部署中,该服务处理与 Kubernetes API 的交互,并与 Collector 协调。

内存和存储要求
SensorCPU内存

Request(请求)

1 个内核

1 GiB

限制

2 个内核

4 GiB

4.2.5. 安装 Admission 控制器的先决条件

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

内存和存储要求

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

准入控制器CPU内存

Request(请求)

.05 个内核

100 MiB

限制

.5 个内核

500 MiB

4.2.6. 安装 Collector 的先决条件

收集器监控安全集群中每个节点的运行时活动。它连接到 Sensor 来报告此信息。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

内存和存储要求
CollectorCPU内存

Request(请求)

.05 个内核

320 MiB

限制

.75 个内核

1 GiB

注意

收集器使用 mutable 镜像标签( <version>-latest),因此您可以更轻松地获得对较新的 Linux 内核版本的支持。对于镜像更新,代码、预先存在的内核模块或 eBPF 程序没有改变。更新只添加对初始发布后发布的新内核版本的支持的单个镜像层。

4.3. 在其他平台上为 RHACS 安装 Central 服务

Central 是包含 RHACS 应用程序管理界面和服务的资源。它处理数据持久性、API 交互和 RHACS 门户访问。您可以使用同一中实例来保护多个 OpenShift Container Platform 或 Kubernetes 集群。

您可以使用以下方法之一安装 Central:

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

4.3.1. 使用 Helm chart 安装 Central

您可以使用 Helm chart 安装 Central,而无需自定义任何自定义,使用默认值,或使用带有额外自定义配置参数的 Helm chart。

4.3.1.1. 使用 Helm chart 安装 Central,而无需自定义

您可以在 Red Hat OpenShift 集群上安装 RHACS。您必须添加 Helm Chart 仓库并安装 central-services Helm Chart,以安装 Central 和 Scanner 的集中组件。

4.3.1.1.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    $ 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) 用于安装针对每个集群(Sensor 和 Admission 控制器)和针对每个节点(Collector) 的组件。

    注意

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

验证

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

    $ helm search repo -l rhacs/
4.3.1.1.2. 在不自定义的情况下安装 central-services Helm chart

使用以下说明安装 central-services Helm Chart 以部署集中组件(Central 和 Scanner)。

前提条件

流程

  • 运行以下命令安装 Central 服务并使用一个路由来公开 Central:

    $ helm install -n stackrox \
      --create-namespace stackrox-central-services rhacs/central-services \
      --set imagePullSecrets.username=<username> \
      --set imagePullSecrets.password=<password> \
      --set central.exposure.route.enabled=true
  • 或者,运行以下命令安装 Central 服务并使用一个负载均衡器来公开 Central:

    $ helm install -n stackrox \
      --create-namespace stackrox-central-services rhacs/central-services \
      --set imagePullSecrets.username=<username> \
      --set imagePullSecrets.password=<password> \
      --set central.exposure.loadBalancer.enabled=true
  • 或者,运行以下命令安装 Central 服务并使用一个端口转发来公开 Central:

    $ helm install -n stackrox \
      --create-namespace stackrox-central-services rhacs/central-services \
        --set imagePullSecrets.username=<username> \
      --set imagePullSecrets.password=<password>
重要
  • 如果要在需要使用代理连接到外部服务的集群中安装 Red Hat Advanced Cluster Security for Kubernetes,则必须使用 proxyConfig 参数指定代理配置。例如:

    env:
      proxyConfig: |
        url: http://proxy.name:port
        username: username
        password: password
        excludes:
        - some.domain
  • 如果您已在安装的命名空间中创建了一个或多个镜像 pull secret,而不是使用用户名和密码,您可以使用 --set imagePullSecrets.useExisting="<pull-secret-1;pull-secret-2>"
  • 不要使用镜像 pull secret:

    • 如果您要从 quay.io/stackrox-io 或不需要身份验证的专用网络中的 registry 拉取镜像。使用 --set imagePullSecrets.allowNone=true,而不是指定用户名和密码。
    • 如果您已经在安装的命名空间中的默认服务帐户中配置了镜像 pull secret。使用 --set imagePullSecrets.useFromDefaultServiceAccount=true,而不是指定用户名和密码。

安装命令的输出包括:

  • 自动生成的管理员密码。
  • 关于存储所有配置值的说明。
  • Helm 生成的任何警告。
4.3.1.2. 使用自定义使用 Helm chart 安装 Central

您可以使用 helm installhelm upgrade 命令的 Helm Chart 配置参数在 Red Hat OpenShift 集群上安装 RHACS。您可以使用 --set 选项或创建 YAML 配置文件来指定这些参数。

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

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

本节列出了 values-private.yaml 文件的可配置参数。这些参数没有默认值。

4.3.1.2.1.1. 镜像 pull secret

从 registry 中拉取镜像所需的凭证取决于以下因素:

  • 如果使用自定义 registry,您必须指定这些参数:

    • imagePullSecrets.username
    • imagePullSecrets.password
    • image.registry
  • 如果不使用用户名和密码登录到自定义 registry,您必须指定以下参数之一:

    • imagePullSecrets.allowNone
    • imagePullSecrets.useExisting
    • imagePullSecrets.useFromDefaultServiceAccount
参数Description

imagePullSecrets.username

用于登录到 registry 的帐户的用户名。

imagePullSecrets.password

用于登录到 registry 的帐户的密码。

imagePullSecrets.allowNone

如果您使用自定义 registry,且允许在没有凭证的情况下拉取镜像,请使用 true

imagePullSecrets.useExisting

以逗号分隔的 secret 列表作为值。例如,secret1, secret2, secretN。如果您已在目标命名空间中创建了预先存在的镜像 pull secret,则使用此选项。

imagePullSecrets.useFromDefaultServiceAccount

如果您已经在目标命名空间中配置了具有足够范围的镜像 pull secret 的默认服务帐户,请使用 true

4.3.1.2.1.2. 代理配置

如果要在需要使用代理连接到外部服务的集群中安装 Red Hat Advanced Cluster Security for Kubernetes,则必须使用 proxyConfig 参数指定代理配置。例如:

env:
  proxyConfig: |
    url: http://proxy.name:port
    username: username
    password: password
    excludes:
    - some.domain
参数Description

env.proxyConfig

您的代理配置。

4.3.1.2.1.3. Central

Central 的可配置参数。

对于新安装,您可以跳过以下参数:

  • central.jwtSigner.key
  • central.serviceTLS.cert
  • central.serviceTLS.key
  • central.adminPassword.value
  • central.adminPassword.htpasswd
  • 当您没有为这些参数指定值时,Helm Chart 会为它们自动生成值。
  • 如果要修改这些值,您可以使用 helm upgrade 命令并使用 --set 选项指定值。
重要

对于设置管理员密码,您只能使用 central.adminPassword.valuecentral.adminPassword.htpasswd,但不能同时使用两者。

参数Description

central.jwtSigner.key

Red Hat Advanced Cluster Security for Kubernetes 应使用的私钥签名 JSON Web 令牌(JWT)进行验证。

central.serviceTLS.cert

Central 服务应用于部署中心的内部证书。

central.serviceTLS.key

Central 服务应使用的内部证书的私钥。

central.defaultTLS.cert

Central 应该使用的用户面向用户的证书。Red Hat Advanced Cluster Security for Kubernetes 将这个证书用于 RHACS 门户。

  • 对于新安装,您必须提供一个证书,否则 Red Hat Advanced Cluster Security for Kubernetes 通过使用自签名证书安装 Central。
  • 如果要升级,Red Hat Advanced Cluster Security for Kubernetes 会使用现有证书及其密钥。

central.defaultTLS.key

Central 应使用面向用户的证书的私钥。

  • 对于新安装,您必须提供私钥,否则 Red Hat Advanced Cluster Security for Kubernetes 使用自签名证书安装中心。
  • 如果要升级,Red Hat Advanced Cluster Security for Kubernetes 会使用现有证书及其密钥。

central.adminPassword.value

用于登录到 Red Hat Advanced Cluster Security for Kubernetes 的管理员密码。

central.adminPassword.htpasswd

用于登录到 Red Hat Advanced Cluster Security for Kubernetes 的管理员密码。此密码以散列格式存储,使用 bcrypt。

注意

如果使用 central.adminPassword.htpasswd 参数,则必须使用 bcrypt 编码的密码哈希。您可以运行 htpasswd -nB admin 命令来生成密码哈希。例如,

htpasswd: |
  admin:<bcrypt-hash>
4.3.1.2.1.4. 扫描程序

扫描程序的可配置参数。

对于新的安装,您可以跳过以下参数,以及 Helm Chart 自动生成值。否则,如果您升级到新版本,请指定以下参数的值:

  • scanner.dbPassword.value
  • scanner.serviceTLS.cert
  • scanner.serviceTLS.key
  • scanner.dbServiceTLS.cert
  • scanner.dbServiceTLS.key
参数Description

scanner.dbPassword.value

用于通过 Scanner 数据库进行身份验证的密码。不要修改此参数,因为 Red Hat Advanced Cluster Security for Kubernetes 会自动创建和使用其值。

scanner.serviceTLS.cert

扫描程序服务用于部署扫描器的内部证书。

scanner.serviceTLS.key

Scanner 服务使用的内部证书的私钥。

scanner.dbServiceTLS.cert

Scanner-db 服务应用于部署 Scanner 数据库的内部证书。

scanner.dbServiceTLS.key

Scanner-db 服务应使用的内部证书的私钥。

4.3.1.2.2. 公共配置文件

本节列出了 values-public.yaml 文件的可配置参数。

4.3.1.2.2.1. 镜像 pull secret

镜像拉取 secret 是从 registry 中拉取镜像所需的凭证。

参数Description

imagePullSecrets.allowNone

如果您使用自定义 registry,且允许在没有凭证的情况下拉取镜像,请使用 true

imagePullSecrets.useExisting

以逗号分隔的 secret 列表作为值。例如,secret1, secret2.如果您已在目标命名空间中创建了预先存在的镜像 pull secret,则使用此选项。

imagePullSecrets.useFromDefaultServiceAccount

如果您已经在目标命名空间中配置了具有足够范围的镜像 pull secret 的默认服务帐户,请使用 true

4.3.1.2.2.2. 镜像

镜像声明了配置来设置主 registry,Helm Chart 用来为 central.imagescanner.imagescanner.dbImage 参数解析镜像。

参数Description

image.registry

镜像 registry 的地址。使用主机名,如 registry.redhat.io 或远程 registry 主机名,如 us.gcr.io/stackrox-mirror

4.3.1.2.2.3. 环境变量

Red Hat Advanced Cluster Security for Kubernetes 会自动检测到集群环境,并为 env.openshiftenv.istioenv.platform 设置值。仅设置这些值来覆盖自动集群环境检测。

参数Description

env.openshift

使用 true 在 OpenShift Container Platform 集群上安装并覆盖自动集群环境检测。

env.istio

使用 true 在启用了 Istio 的集群上安装并覆盖自动集群环境检测。

env.platform

安装 Red Hat Advanced Cluster Security for Kubernetes 的平台。将其值设为 defaultgke 以指定集群平台并覆盖自动集群环境检测。

env.offlineMode

使用 true 以离线模式使用 Red Hat Advanced Cluster Security for Kubernetes。

4.3.1.2.2.4. 其他可信证书颁发机构

Red Hat Advanced Cluster Security for Kubernetes 会自动引用要信任的系统根证书。当 Central 或 Scanner 必须联系到使用您机构中授权或全局可信合作伙伴机构发布的证书的服务时,您可以使用以下参数来指定对这些服务的信任:

参数Description

additionalCAs.<certificate_name>

指定要信任的根证书颁发机构的 PEM 编码证书。

4.3.1.2.2.5. Central

Central 的可配置参数。

  • 您必须将持久性存储选项指定为 hostPathpersistentVolumeClaim
  • 用于公开外部访问的中央部署。您必须指定一个参数,可以是 central.exposure.loadBalancercentral.exposure.nodePortcentral.exposure.route。如果没有为这些参数指定任何值,您必须手动公开 Central,或使用端口转发(port-forwarding)访问它。
参数Description

central.endpointsConfig

Central 的端点配置选项。

central.nodeSelector

如果节点选择器选择污点节点,请使用此参数指定 taint toleration key、value 和 effect。此参数主要用于基础架构节点。

central.tolerations

如果节点选择器选择污点节点,请使用此参数指定 taint toleration key、value 和 effect。此参数主要用于基础架构节点。

central.exposeMonitoring

指定 true,以在端口号 9090 上为 Central 公开 Prometheus 指标端点。

central.image.registry

用于覆盖 Central 镜像的全局 image.registry 参数的自定义 registry。

central.image.name

覆盖默认 Central 镜像名称(main)的自定义镜像名称。

central.image.tag

覆盖 Central 镜像默认标签的自定义镜像标签。如果在新安装过程中指定了自己的镜像标签,则您必须在运行 helm upgrade 命令升级到新版本时手动增加此标签。如果您 mirror 了自己的 registry 中的镜像,请不要修改原始镜像标签。

central.image.fullRef

Central 镜像的完整参考,包括 registry 地址、镜像名称和镜像标签。为此参数设置值会覆盖 central.image.registrycentral.image.namecentral.image.tag 参数。

central.resources.requests.memory

Central 的内存请求,以覆盖默认值。

central.resources.requests.cpu

Central 的 CPU 请求,以覆盖默认值。

central.resources.limits.memory

Central 的内存限值来覆盖默认值。

central.resources.limits.cpu

Central 的 CPU 限制,以覆盖默认值。

central.persistence.hostPath

Red Hat Advanced Cluster Security for Kubernetes 应该创建数据库卷的节点的路径。红帽不推荐使用这个选项。

central.persistence.persistentVolumeClaim.claimName

您要使用的持久性卷声明(PVC)的名称。

central.persistence.persistentVolumeClaim.createClaim

使用 true 创建一个新的持久性卷声明,或 false 来使用现有的声明。

central.persistence.persistentVolumeClaim.size

由指定声明管理的持久性卷的大小(以 GiB 为单位)。

central.exposure.loadBalancer.enabled

使用 true 来通过使用负载均衡器公开 Central。

central.exposure.loadBalancer.port

要公开 Central 的端口号。默认端口号为 443。

central.exposure.nodePort.enabled

使用 true 通过节点端口服务公开 Central。

central.exposure.nodePort.port

要公开 Central 的端口号。当您跳过此参数时,OpenShift Container Platform 会自动分配一个端口号。如果您使用节点端口公开 Red Hat Advanced Cluster Security for Kubernetes,红帽建议您不要指定端口号。

central.exposure.route.enabled

使用 true 通过路由公开 Central。此参数仅适用于 OpenShift Container Platform 集群。

4.3.1.2.2.6. 扫描程序

扫描程序的可配置参数。

参数Description

scanner.disable

使用 true 在没有扫描器的情况下安装 Red Hat Advanced Cluster Security for Kubernetes。当您与 helm upgrade 命令一起使用时,Helm 会移除现有的 Scanner 部署。

scanner.exposeMonitoring

指定 true,以在端口号 9090 上为 Scanner 公开 Prometheus 指标端点。

scanner.replicas

为 Scanner 部署创建的副本数。当您将其与 scanner.autoscaling 参数搭配使用时,这个值会设置初始副本数。

scanner.logLevel

为 Scanner 配置日志级别。红帽建议您不要更改日志级别的默认值 (INFO)。

scanner.nodeSelector

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

scanner.tolerations

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

scanner.autoscaling.disable

使用 true 为 Scanner 部署禁用自动扩展。禁用自动扩展时,minReplicasmaxReplicas 参数没有任何效果。

scanner.autoscaling.minReplicas

自动扩展的最小副本数。

scanner.autoscaling.maxReplicas

自动扩展的最大副本数。

scanner.resources.requests.memory

扫描器的内存请求,以覆盖默认值。

scanner.resources.requests.cpu

扫描器的 CPU 请求,以覆盖默认值。

scanner.resources.limits.memory

扫描器的内存限值,以覆盖默认值。

scanner.resources.limits.cpu

扫描器的 CPU 限制,以覆盖默认值。

scanner.dbResources.requests.memory

Scanner 数据库部署的内存请求,以覆盖默认值。

scanner.dbResources.requests.cpu

扫描数据库部署的 CPU 请求,以覆盖默认值。

scanner.dbResources.limits.memory

Scanner 数据库部署的内存限值,以覆盖默认值。

scanner.dbResources.limits.cpu

扫描数据库部署的 CPU 限制,以覆盖默认值。

scanner.image.registry

Scanner 镜像的自定义 registry。

scanner.image.name

覆盖默认扫描程序镜像名称(scanner)的自定义镜像名称。

scanner.dbImage.registry

Scanner DB 镜像的自定义 registry。

scanner.dbImage.name

覆盖默认 Scanner DB 镜像名称 (scanner-db) 的自定义镜像名称。

scanner.dbNodeSelector

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

scanner.dbTolerations

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

4.3.1.2.2.7. 自定义

使用这些参数为 Red Hat Advanced Cluster Security for Kubernetes 创建的所有对象指定附加属性。

参数Description

customize.labels

附加到所有对象的自定义标签。

customize.annotations

附加到所有对象的自定义注解。

customize.podLabels

附加到所有部署的自定义标签。

customize.podAnnotations

附加到所有部署的自定义注解。

customize.envVars

所有对象中所有容器的自定义环境变量。

customize.central.labels

附加到 Central 创建的所有对象的自定义标签。

customize.central.annotations

附加到中央创建的所有对象的自定义注解。

customize.central.podLabels

附加到所有中央部署的自定义标签。

customize.central.podAnnotations

附加到所有中央部署的自定义注解。

customize.central.envVars

所有中央容器的自定义环境变量。

customize.scanner.labels

附加到 Scanner 创建的所有对象的自定义标签。

customize.scanner.annotations

附加到 Scanner 创建的所有对象的自定义注解。

customize.scanner.podLabels

附加到所有 Scanner 部署的自定义标签。

customize.scanner.podAnnotations

附加到所有 Scanner 部署的自定义注解。

customize.scanner.envVars

所有 Scanner 容器的自定义环境变量。

customize.scanner-db.labels

附加到 Scanner DB 创建的所有对象的自定义标签。

customize.scanner-db.annotations

附加到 Scanner DB 创建的所有对象的自定义注解。

customize.scanner-db.podLabels

附加到所有 Scanner DB 部署的自定义标签。

customize.scanner-db.podAnnotations

附加到所有 Scanner DB 部署的自定义注解。

customize.scanner-db.envVars

所有 Scanner DB 容器的自定义环境变量。

您还可以使用:

  • customize.other.service/*.labelscustomize.other.service/*.annotations 参数,为所有对象指定标签和注解。
  • 或者,提供特定的服务名称,例如 customize.other.service/central-loadbalancer.labelscustomize.other.service/central-loadbalancer.annotations 作为参数,并设置它们的值。
4.3.1.2.2.8. 高级自定义
重要

本节中指定的参数仅用于信息。红帽不支持带有修改后的命名空间和发行版本名称的 Red Hat Advanced Cluster Security for Kubernetes 实例。

参数Description

allowNonstandardNamespace

使用 true 将 Red Hat Advanced Cluster Security for Kubernetes 部署到默认命名空间 stackrox 以外的命名空间中。

allowNonstandardReleaseName

使用 true 使用默认 stackrox-central-services 之外的发行版本名称部署 Red Hat Advanced Cluster Security for Kubernetes。

4.3.1.2.3. 安装 central-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 central-services Helm Chart 来部署集中式组件(Central 和 Scanner)。

流程

  • 运行以下命令:

    $ helm install -n stackrox --create-namespace \
      stackrox-central-services rhacs/central-services \
      -f <path_to_values_public.yaml> -f <path_to_values_private.yaml> 1
    1
    使用 -f 选项指定 YAML 配置文件的路径。
4.3.1.3. 在部署 central-services Helm Chart 后更改配置选项

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

流程

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

    $ helm upgrade -n stackrox \
      stackrox-central-services rhacs/central-services \
      -f <path_to_values_public.yaml> \
      -f <path_to_values_private.yaml>
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

4.3.2. 使用 roxctl CLI 安装 Central

警告

对于生产环境,红帽建议使用 Operator 或 Helm chart 来安装 RHACS。除非有需要使用此方法的特定安装需要,否则不要使用 roxctl 安装方法。

4.3.2.1. 安装 roxctl CLI

要安装 Red Hat Advanced Cluster Security for Kubernetes,您必须下载二进制文件来安装 roxctl CLI。您可以在 Linux、Windows 或 macOS 上安装 roxctl

4.3.2.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
4.3.2.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
4.3.2.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Windows/roxctl.exe

验证

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

    $ roxctl version
4.3.2.1.4. 使用交互式安装程序

使用交互式安装程序为您的环境生成所需的 secret、部署配置和部署脚本。

流程

  1. 运行交互式 install 命令:

    $ roxctl central generate interactive
    重要

    使用 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes 会创建 PodSecurityPolicy (PSP)对象,以便向后兼容。如果要在 Kubernetes 版本 1.25 及更新版本上,或在 OpenShift Container Platform version 4.12 和更新版本上安装 RHACS,则必须禁用 PSP 对象的创建。要做到这一点,为 roxctl central generateroxctl sensor generate 命令指定 --enable-pod-security-policies 选项为 false

  2. Enter 接受提示的默认值或根据需要输入自定义值。

    Enter path to the backup bundle from which to restore keys and certificates (optional):
    Enter PEM cert bundle file (optional): 1
    Enter administrator password (default: autogenerated):
    Enter orchestrator (k8s, openshift): openshift
    Enter the directory to output the deployment bundle to (default: "central-bundle"):
    Enter the OpenShift major version (3 or 4) to deploy on (default: "0"): 4
    Enter Istio version when deploying into an Istio-enabled cluster (leave empty when not running Istio) (optional):
    Enter the method of exposing Central (route, lb, np, none) (default: "none"): route 2
    Enter main image to use (default: "stackrox.io/main:3.0.61.1"):
    Enter whether to run StackRox in offline mode, which avoids reaching out to the Internet (default: "false"):
    Enter whether to enable telemetry (default: "true"):
    Enter the deployment tool to use (kubectl, helm, helm-values) (default: "kubectl"):
    Enter Scanner DB image to use (default: "stackrox.io/scanner-db:2.15.2"):
    Enter Scanner image to use (default: "stackrox.io/scanner:2.15.2"):
    Enter Central volume type (hostpath, pvc): pvc 3
    Enter external volume name (default: "stackrox-db"):
    Enter external volume size in Gi (default: "100"):
    Enter storage class name (optional if you have a default StorageClass configured):
    1
    如果要添加自定义 TLS 证书,请提供 PEM 编码证书的文件路径。当您指定自定义证书时,交互式安装程序还会提示您为您要使用的自定义证书提供 PEM 私钥。
    2
    要使用 RHACS 门户,您必须使用路由(负载均衡器或节点端口)公开中。
    3
    如果您计划在带有 hostPath 卷的 OpenShift Container Platform 上安装 Red Hat Advanced Cluster Security for Kubernetes,您必须修改 SELinux 策略。
    警告

    在 OpenShift Container Platform 中,对于 hostPath 卷,您必须修改 SELinux 策略以允许访问主机和容器共享的目录。这是因为 SELinux 默认阻止目录共享。要修改 SELinux 策略,请运行以下命令:

    $ sudo chcon -Rt svirt_sandbox_file_t <full_volume_path>

    但是,红帽不推荐修改 SELinux 策略,在 OpenShift Container Platform 上安装时使用 PVC。

在完成时,安装程序会创建一个名为 central-bundle 的文件夹,其中包含用于部署 Central 所需的 YAML 清单和脚本。另外,它显示了您需要运行的脚本的屏幕说明,以部署其他可信证书颁发机构、中部和扫描器,以及登录 RHACS 门户的身份验证说明(如果您回答提示时未提供密码)。

4.3.2.2. 运行中央安装脚本

运行交互式安装程序后,您可以运行 setup.sh 脚本来安装 Central。

流程

  1. 运行 setup.sh 脚本来配置镜像 registry 访问:

    $ ./central-bundle/central/scripts/setup.sh
  2. 创建所需资源:

    $ oc create -R -f central-bundle/central
  3. 检查部署进度:

    $ oc get pod -n stackrox -w
  4. 在 Central 运行后,找到 RHACS 门户 IP 地址并在浏览器中打开。根据您在回答提示时选择的风险,请使用以下方法之一获取 IP 地址。

    公开方法命令地址Example

    Route(路由)

    oc -n stackrox get route central

    在输出中 HOST/PORT 列下的地址

    https://central-stackrox.example.route

    节点端口

    oc get node -owide && oc -n stackrox get svc central-loadbalancer

    任何节点的 IP 或主机名,在服务显示的端口中

    https://198.51.100.0:31489

    Load Balancer

    oc -n stackrox get svc central-loadbalancer

    在端口 443 上为服务显示 EXTERNAL-IP 或主机名

    https://192.0.2.0

    central-bundle/central/scripts/port-forward.sh 8443

    https://localhost:8443

    https://localhost:8443

注意

如果您在互动安装过程中选择了自动生成的密码,您可以运行以下命令将其记录到 Central:

$ cat central-bundle/password

4.4. 在其他平台上为 RHACS 生成并应用 init 捆绑包

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

注意

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

4.4.1. 生成 init 捆绑包

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

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

注意

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

流程

  1. 根据您的暴露的方法查找 RHACS 门户地址:

    1. 对于路由:

      $ oc get route central -n stackrox
    2. 对于负载均衡器:

      $ oc get service central-loadbalancer -n stackrox
    3. 对于端口转发:

      1. 运行以下命令:

        $ oc port-forward svc/central 18443:443 -n stackrox
      2. 进入到 https://localhost:18443/
  2. 在 RHACS 门户网站中,进入 Platform ConfigurationIntegrations
  3. 进入 Authentication Tokens 部分,再点 Cluster Init Bundle
  4. Generate bundle
  5. 为集群 init 捆绑包输入一个名称并点 Generate

    1. 如果使用 Helm chart 安装,请点击 Download Helm Values File 下载生成的捆绑包。
    2. 如果使用 Operator 安装,请点击 Download Kubernetes Secret File 下载生成的捆绑包。
重要

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

后续步骤

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

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

注意

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

先决条件

您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量。

  • 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_API_TOKEN=<api_token>
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>

流程

  • 运行以下命令以生成包含 secret 的集群 init 捆绑包:

    对于 Helm 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output cluster_init_bundle.yaml

    对于 Operator 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output-secrets cluster_init_bundle.yaml
    重要

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

下一步

  • 使用 Red Hat OpenShift CLI 使用 init 捆绑包创建资源。

4.4.2. 使用 init 捆绑包创建资源

在安装安全集群前,您必须使用 init 捆绑包在集群中创建所需的资源,以允许安全集群上的服务与 Central 通信。

注意

如果使用 Helm chart 安装,请不要执行此步骤。

先决条件

  • 您必须生成了一个包含 secret 的 init 捆绑包。

流程

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

  • 在 OpenShift Container Platform Web 控制台中,在顶部菜单中点 + 打开 Import YAML 页面。您可以拖动 init 捆绑包文件或将其内容复制并粘贴到编辑器中,然后点 Create
  • 使用 Red Hat OpenShift CLI 运行以下命令来创建资源:

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

    $ kubectl create namespace stackrox
    $ kubectl create -f <init_bundle>.yaml \ 1
      -n <stackrox> 2
    1
    指定包含 secret 的 init 捆绑包的文件名。
    2
    指定安装安全集群服务的项目的名称。

下一步

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

4.5. 在其他平台上为 RHACS 安装安全集群服务

您可以在安全集群中安装 Red Hat Advanced Cluster Security Cloud Service,以获取 Amazon Elastic Kubernetes Service (Amazon EKS)、Google Kubernetes Engine (Google GKE)和 Microsoft Azure Kubernetes Service (Microsoft AKS)等平台。

4.5.1. 使用 Helm chart 在安全集群中安装 RHACS

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

4.5.1.1. 使用 Helm chart 在安全集群中安装 RHACS
4.5.1.1.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    $ 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) 用于安装针对每个集群(Sensor 和 Admission 控制器)和针对每个节点(Collector) 的组件。

    注意

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

验证

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

    $ helm search repo -l rhacs/
4.5.1.1.2. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart

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

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须有用于公开 Central 服务的地址和端口号。

流程

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

    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \ 1
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 2
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    指定 Central 的地址和端口号。例如,ac s.domain.com:443
  • 在 OpenShift Container Platform 集群中运行以下命令:

    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \ 1
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 2
        --set scanner.disable=false
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    指定 Central 的地址和端口号。例如,ac s.domain.com:443
4.5.1.2. 使用自定义配置 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 文件。

4.5.1.2.1. 配置参数
参数Description

clusterName

集群的名称。

centralEndpoint

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

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.main.pullPolicy

main 镜像的镜像拉取策略。

image.collector.pullPolicy

Collector 镜像的镜像拉取策略。

image.main.tag

使用 main 镜像标签。

image.collector.tag

使用 collector 镜像标签。

collector.collectionMethod

EBPFKERNEL_MODULENO_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 请求用于 execportforward 事件。Red Hat Advanced Cluster Security for Kubernetes 不支持 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

在评估准入检查请求时,Red Hat Advanced Cluster Security for Kubernetes 应该等待的最大时间(以秒为单位)。使用它来设置启用镜像扫描时的请求超时。如果镜像扫描的运行时间超过指定时间,Red Hat Advanced Cluster Security for Kubernetes 接受了请求。

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。使用 slim Collector 镜像需要 Central 来提供匹配的 eBPF 探测或内核模块。如果您以离线模式运行 Red Hat Advanced Cluster Security for Kubernetes,您必须从 stackrox.io 下载内核支持软件包,并将其上传到 Central slim Collectors 才能正常工作。否则,您必须确保 Central 可以访问托管在 https://collector-modules.stackrox.io/ 的在线探测存储库。

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 会在安全集群中部署轻量级扫描程序和扫描器数据库,以允许扫描 OpenShift Container Registry 上的镜像。只有在 OpenShift 上才支持启用扫描器。默认值为 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 限制。使用此参数覆盖默认值。

4.5.1.2.1.1. 环境变量

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

customize:
  envVars:
    ENV_VAR1: "value1"
    ENV_VAR2: "value2"

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

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

4.5.1.2.2. 安装 secured-cluster-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 secure-cluster-services Helm chart 以部署 per-cluster 和 per-node 组件(Sensor、Admission controller 和 Collector)。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须有用于公开 Central 服务的地址和端口号。

流程

  • 运行以下命令:

    $ 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
    1
    使用 -f 选项指定 YAML 配置文件的路径。
注意

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

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

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

流程

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

    $ 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
    您必须指定 --reuse-values 参数,否则 Helm upgrade 命令重置所有之前配置的设置。
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

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

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

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

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

4.5.2.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
4.5.2.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
4.5.2.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Windows/roxctl.exe

验证

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

    $ roxctl version
4.5.2.2. 安装传感器(Sensor)

要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。以下步骤描述使用 RHACS 门户添加传感器。

先决条件

  • 您必须已安装了 Central 服务,或者可以访问 Red Hat Advanced Cluster Security Cloud Service (ACSCS)上的中央服务。

流程

  1. 在 RHACS 门户,进入到 Platform ConfigurationClusters
  2. 选择 + New Cluster
  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 脚本:

    $ unzip -d sensor sensor-<cluster_name>.zip
    $ ./sensor/sensor.sh

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

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

验证

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

    • 对于 Kubernetes:

      $ kubectl get pod -n stackrox -w
  2. Finish 关闭窗口。

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

4.6. 在其他平台上验证 RHACS 安装

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

重要

RHACS 云服务作为 Field Trial 发行版本提供。Field Trial 提供对已批准的 Red Hat Advanced Cluster Security Cloud Service 的访问。如需更多信息,请联系红帽销售

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

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

  • 确保至少有一个安全集群连接到 RHACS 云服务实例。如需更多信息,请参阅"在每个集群上安装安全集群资源"部分。
  • 检查 Sensor pod 日志,以确保与 RHACS 云服务实例的连接成功。
  • 在 OCP 集群中,导航到 Platform ConfigurationClusters,以验证组件是否健康并查看额外的操作信息。

第 5 章 在 Red Hat OpenShift 中设置 RHACS 云服务

5.1. 在 Red Hat OpenShift 中设置 RHACS 云服务

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)为您的 Kubernetes 集群提供安全服务,如 OpenShift Kubernetes Engine (OKE)、Red Hat OpenShift Dedicated (OSD)、Azure Red Hat OpenShift (ARO)和 Red Hat OpenShift Service on Amazon Web Services (ROSA)。

有关为其他平台配置 RHACS 云服务的详情,如 Amazon Elastic Kubernetes Service (EKS)、Google Kubernetes Engine (GKE)和 Microsoft Azure Kubernetes Service (AKS),请参阅 在其他平台上安装 RHACS 云服务概述

设置 RHACS 云服务:

  1. 在 Red Hat Hybrid Cloud Console 中,从导航菜单中选择 Advanced Cluster SecurityACS Instances,然后选择您要连接到您的安全集群的实例。

    • Instance Details 部分中,记下 Central API Endpoint。您可以在创建安全集群时使用此地址。
  2. Open ACS Console。如果需要您的 Red Hat Single Sign-On (RH-SSO)凭证,如果已经配置,则需要另一个身份提供程序的凭证。
  3. 在 ACS 控制台中,生成 init 捆绑包
  4. 使用终端窗口,登录到 OpenShift Container Platform 集群 并应用 init 捆绑包
  5. 使用 OpenShift Container Platform,在每个安全集群中安装安全的集群资源

5.2. Red Hat OpenShift 上 RHACS 云服务的先决条件

在安全集群中安装 Red Hat Advanced Cluster Security Cloud Service for Red Hat OpenShift 前,您必须完成先决条件。

5.2.1. 常规要求

RHACS 有一些系统要求,在安装前必须满足这些系统要求。

警告

您不能在以下环境中安装 Red Hat Advanced Cluster Security for Kubernetes:

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

要安装 Red Hat Advanced Cluster Security for Kubernetes,您必须有:

  • OpenShift Container Platform 版本 4.5 或更高版本
  • 具有受支持的操作系统的集群节点。如需更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策

    • 操作系统 :Amazon Linux、CentOS、Container-Optimized OS from Google、Red Hat Enterprise Linux CoreOS(RHCOS)、Debian、Red Hat Enterprise Linux(RHEL) 或 Ubuntu。
    • 处理器和内存 :2 个 CPU 内核和至少 3GiB RAM。

      注意

      对于部署 Central,请使用带有四个或更多内核的机器类型,并应用调度策略在这样的节点上启动 Central。

    • 架构: AMD64、ppc64le 或 s390x。

      注意

      您只能在 IBM Power、IBM zSystems 和 IBM® LinuxONE 集群上安装 RHACS 安全集群服务。目前不支持 Central。

  • 使用持久性卷声明(PVC)的持久性存储。

    重要

    您不能在 Red Hat Advanced Cluster Security for Kubernetes 中使用 Ceph FS 存储。红帽建议为 Red Hat Advanced Cluster Security for Kubernetes 使用 RBD 块模式 PVC。

    • 使用固态驱动器(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。

使用 Helm chart 安装:

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

5.2.2. 安装扫描器的先决条件

Red Hat Advanced Cluster Security for Kubernetes 包括一个称为 Scanner 的镜像漏洞策略。此服务扫描未被扫描程序集成到镜像 registry 中的镜像。

内存和存储要求
扫描程序CPU内存

Request(请求)

1.2 个内核

2700 MiB

限制

5 个内核

8000 MiB

5.2.3. 安装 Sensor 的先决条件

Sensor 监控 Kubernetes 和 OpenShift Container Platform 集群。这些服务目前部署到单个部署中,该服务处理与 Kubernetes API 的交互,并与 Collector 协调。

内存和存储要求
SensorCPU内存

Request(请求)

1 个内核

1 GiB

限制

2 个内核

4 GiB

5.2.4. 安装 Admission 控制器的先决条件

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

内存和存储要求

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

准入控制器CPU内存

Request(请求)

.05 个内核

100 MiB

限制

.5 个内核

500 MiB

5.2.5. 安装 Collector 的先决条件

收集器监控安全集群中每个节点的运行时活动。它连接到 Sensor 来报告此信息。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

内存和存储要求
CollectorCPU内存

Request(请求)

.05 个内核

320 MiB

限制

.75 个内核

1 GiB

注意

收集器使用 mutable 镜像标签( <version>-latest),因此您可以更轻松地获得对较新的 Linux 内核版本的支持。对于镜像更新,代码、预先存在的内核模块或 eBPF 程序没有改变。更新只添加对初始发布后发布的新内核版本的支持的单个镜像层。

5.3. 在 Red Hat OpenShift 上创建 RHACS 云实例

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

5.3.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 所在的云供应商的区域。选择 AWS
    • 可用区 :使用默认值。
  4. 单击 Create instance

后续步骤

  • 使用 ACS 控制台生成 init 捆绑包。

5.4. 为 Red Hat OpenShift 上的 RHACS 云服务生成并应用 init 捆绑包

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

注意

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

5.4.1. 生成 init 捆绑包

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

您可以使用 RHACS 门户(也称为 ACS 控制台)创建包含 secret 的 init 捆绑包。

注意

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

流程

  1. 在 RHACS 门户网站中,进入 Platform ConfigurationIntegrations
  2. 进入 Authentication Tokens 部分,再点 Cluster Init Bundle
  3. Generate bundle
  4. 为集群 init 捆绑包输入一个名称并点 Generate

    1. 如果使用 Helm chart 安装,请点击 Download Helm Values File 下载生成的捆绑包。
    2. 如果使用 Operator 安装,请点击 Download Kubernetes Secret File 下载生成的捆绑包。
重要

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

后续步骤

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

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

注意

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

先决条件

您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量。

  • 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_API_TOKEN=<api_token>
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>

流程

  • 运行以下命令以生成包含 secret 的集群 init 捆绑包:

    对于 Helm 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output cluster_init_bundle.yaml

    对于 Operator 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output-secrets cluster_init_bundle.yaml
    重要

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

下一步

  • 使用 Red Hat OpenShift CLI 使用 init 捆绑包创建资源。

5.4.2. 通过创建资源应用 init 捆绑包

5.4.2.1. 使用 init 捆绑包创建资源

在安装安全集群前,您必须使用 init 捆绑包在集群中创建所需的资源,以允许安全集群上的服务与 Central 通信。

注意

如果使用 Helm chart 安装,请不要执行此步骤。

先决条件

  • 您必须生成了一个包含 secret 的 init 捆绑包。

流程

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

  • 在 OpenShift Container Platform Web 控制台中,在顶部菜单中点 + 打开 Import YAML 页面。您可以拖动 init 捆绑包文件或将其内容复制并粘贴到编辑器中,然后点 Create
  • 使用 Red Hat OpenShift CLI 运行以下命令来创建资源:

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

    $ kubectl create namespace stackrox
    $ kubectl create -f <init_bundle>.yaml \ 1
      -n <stackrox> 2
    1
    指定包含 secret 的 init 捆绑包的文件名。
    2
    指定安装安全集群服务的项目的名称。

下一步

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

5.5. 在 Red Hat OpenShift 上为 RHACS 云服务安装安全集群资源

您可以使用 Operator 在安全集群中安装 RHACS 云服务。

确保您已执行以下步骤:

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

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

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

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

5.5.1.1. 安装安全的集群服务

您可以使用 SecuredCluster 自定义资源在集群中安装安全的集群服务。您必须在要监控的环境中的每个集群中安装安全集群服务。

小心

安装安全的集群服务时,也会安装 Collector。要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

先决条件

  • 如果使用 OpenShift Container Platform,您必须安装版本 4.6 或更高版本。
  • 已安装 RHACS Operator。
  • 您已生成 init 捆绑包并将其应用到集群。

流程

  1. 在 OpenShift Container Platform web 控制台中进入到 OperatorsInstalled Operators 页面。
  2. 点 RHACS Operator。
  3. Operator 详情页面的中央导航菜单中点 Secured Cluster
  4. Create SecuredCluster
  5. Configure via 字段中选择以下选项之一:

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

    • 对于 RHACS 云服务,请使用 中央 API 端点,包括地址和端口号。您可以从云控制台导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。
    • 只有在您在同一集群中安装安全集群服务和 Central 时,才使用 central.stackrox.svc:443
  10. 接受默认值或配置自定义值(如果需要)。例如,如果您使用自定义证书或不受信任的 CA,您可能需要配置 TLS。
  11. Create

后续步骤

  1. 可选:配置其他安全的集群设置。
  2. 验证安装。

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

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

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

5.5.2.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    $ 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) 用于安装针对每个集群(Sensor 和 Admission 控制器)和针对每个节点(Collector) 的组件。

    注意

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

验证

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

    $ helm search repo -l rhacs/
5.5.2.2. 使用 Helm chart 在安全集群中安装 RHACS 云服务
5.5.2.2.1. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart

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

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须具有 Central API 端点,包括地址和端口号。您可以从云控制台导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。

流程

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

    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \ 1
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 2
    --set imagePullSecrets.username=<your redhat.com username> \
    --set imagePullSecrets.password=<your redhat.com password>
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    输入 Central API 端点,包括地址和端口号。您可以通过选择 Advanced Cluster Security → ACS 实例,然后点您创建的 ACS 实例,在 Red Hat Hybrid Cloud Console 控制台中再次查看此信息。
5.5.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 文件。

5.5.2.3.1. 配置参数
参数Description

clusterName

集群的名称。

centralEndpoint

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

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.main.pullPolicy

main 镜像的镜像拉取策略。

image.collector.pullPolicy

Collector 镜像的镜像拉取策略。

image.main.tag

使用 main 镜像标签。

image.collector.tag

使用 collector 镜像标签。

collector.collectionMethod

EBPFKERNEL_MODULENO_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 请求用于 execportforward 事件。Red Hat Advanced Cluster Security for Kubernetes 不支持 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

在评估准入检查请求时,Red Hat Advanced Cluster Security for Kubernetes 应该等待的最大时间(以秒为单位)。使用它来设置启用镜像扫描时的请求超时。如果镜像扫描的运行时间超过指定时间,Red Hat Advanced Cluster Security for Kubernetes 接受了请求。

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。使用 slim Collector 镜像需要 Central 来提供匹配的 eBPF 探测或内核模块。如果您以离线模式运行 Red Hat Advanced Cluster Security for Kubernetes,您必须从 stackrox.io 下载内核支持软件包,并将其上传到 Central slim Collectors 才能正常工作。否则,您必须确保 Central 可以访问托管在 https://collector-modules.stackrox.io/ 的在线探测存储库。

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 会在安全集群中部署轻量级扫描程序和扫描器数据库,以允许扫描 OpenShift Container Registry 上的镜像。只有在 OpenShift 上才支持启用扫描器。默认值为 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 限制。使用此参数覆盖默认值。

5.5.2.3.1.1. 环境变量

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

customize:
  envVars:
    ENV_VAR1: "value1"
    ENV_VAR2: "value2"

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

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

5.5.2.3.2. 安装 secured-cluster-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 secure-cluster-services Helm chart 以部署 per-cluster 和 per-node 组件(Sensor、Admission controller 和 Collector)。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须具有 Central API 端点,包括地址和端口号。您可以从云控制台导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。

流程

  • 运行以下命令:

    $ 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
    1
    使用 -f 选项指定 YAML 配置文件的路径。
注意

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

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

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

流程

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

    $ 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
    您必须指定 --reuse-values 参数,否则 Helm upgrade 命令重置所有之前配置的设置。
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

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

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

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

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

5.5.3.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
5.5.3.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
5.5.3.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Windows/roxctl.exe

验证

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

    $ roxctl version
5.5.3.2. 安装传感器(Sensor)

要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。以下步骤描述使用 RHACS 门户添加传感器。

先决条件

  • 您必须已安装了 Central 服务,或者可以访问 Red Hat Advanced Cluster Security Cloud Service (ACSCS)上的中央服务。

流程

  1. 在 RHACS 门户,进入到 Platform ConfigurationClusters
  2. 选择 + New Cluster
  3. 为集群指定一个名称。
  4. 根据您要部署 Sensor 的位置,为字段提供适当的值。

    • 输入 Central API 端点,包括地址和端口号。您可以通过选择 Advanced Cluster SecurityACS Instances,然后点您创建的 ACS 实例,在 Red Hat Hybrid Cloud Console 中再次查看此信息。
  5. Next 以继续 Sensor 设置。
  6. Download YAML File and Keys 下载集群捆绑包(zip 归档)。

    重要

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

  7. 在可以访问受监控的集群的系统中,解压缩并从集群捆绑包中运行 sensor 脚本:

    $ unzip -d sensor sensor-<cluster_name>.zip
    $ ./sensor/sensor.sh

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

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

验证

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

    • 对于 Kubernetes:

      $ kubectl get pod -n stackrox -w
  2. Finish 关闭窗口。

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

5.6. 验证 Red Hat OpenShift 上的 RHACS 云服务安装

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

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

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

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

第 6 章 在其他平台上设置 RHACS 云服务

6.1. 在其他平台上设置 RHACS 云服务

Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)为您的 Kubernetes 集群提供安全服务。您可以在带有安全集群的 Kubernetes 系统上安装 RHACS Cloud Service,如 Amazon Elastic Kubernetes Service (EKS)、Google Kubernetes Engine (GKE)和 Microsoft Azure Kubernetes Service (AKS)。

在其他平台上设置 RHACS 云服务:

  1. 在 Red Hat Hybrid Cloud Console 中,从导航菜单中选择 Advanced Cluster SecurityACS Instances,然后选择您要连接到您的安全集群的实例。

    • Instance Details 部分中,记下 Central API Endpoint。您可以在创建安全集群时使用此地址。
  2. Open ACS Console。如果需要 Red Hat Single Sign-On (RH-SSO) 凭证,或者另一个身份提供程序的凭证(如果已经配置)。
  3. 在 ACS 控制台中,生成 init 捆绑包
  4. 使用终端窗口,登录到集群 并应用 init 捆绑包
  5. 在每个安全集群中安装安全集群资源

6.2. 其他平台上的 RHACS 云服务的先决条件

在安装 Red Hat Advanced Cluster Security Cloud Service for 支持的 Kubernetes 平台前,您必须完成先决条件。

6.2.1. 常规要求

RHACS 有一些系统要求,在安装前必须满足这些系统要求。

警告

您不能在以下环境中安装 Red Hat Advanced Cluster Security for Kubernetes:

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

要安装 Red Hat Advanced Cluster Security for Kubernetes,您必须有:

  • OpenShift Container Platform 版本 4.5 或更高版本
  • 具有受支持的操作系统的集群节点。如需更多信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策

    • 操作系统 :Amazon Linux、CentOS、Container-Optimized OS from Google、Red Hat Enterprise Linux CoreOS(RHCOS)、Debian、Red Hat Enterprise Linux(RHEL) 或 Ubuntu。
    • 处理器和内存 :2 个 CPU 内核和至少 3GiB RAM。

      注意

      对于部署 Central,请使用带有四个或更多内核的机器类型,并应用调度策略在这样的节点上启动 Central。

    • 架构: AMD64、ppc64le 或 s390x。

      注意

      您只能在 IBM Power、IBM zSystems 和 IBM® LinuxONE 集群上安装 RHACS 安全集群服务。目前不支持 Central。

  • 使用持久性卷声明(PVC)的持久性存储。

    重要

    您不能在 Red Hat Advanced Cluster Security for Kubernetes 中使用 Ceph FS 存储。红帽建议为 Red Hat Advanced Cluster Security for Kubernetes 使用 RBD 块模式 PVC。

    • 使用固态驱动器(SSD)以获得最佳性能。但是,如果您没有 SSD,也可以使用另一个存储类型。

使用 Helm chart 安装:

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

6.2.2. 安装扫描器的先决条件

Red Hat Advanced Cluster Security for Kubernetes 包括一个称为 Scanner 的镜像漏洞策略。此服务扫描未被扫描程序集成到镜像 registry 中的镜像。

内存和存储要求
扫描程序CPU内存

Request(请求)

1.2 个内核

2700 MiB

限制

5 个内核

8000 MiB

6.2.3. 安装 Sensor 的先决条件

Sensor 监控 Kubernetes 和 OpenShift Container Platform 集群。这些服务目前部署到单个部署中,该服务处理与 Kubernetes API 的交互,并与 Collector 协调。

内存和存储要求
SensorCPU内存

Request(请求)

1 个内核

1 GiB

限制

2 个内核

4 GiB

6.2.4. 安装 Admission 控制器的先决条件

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

内存和存储要求

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

准入控制器CPU内存

Request(请求)

.05 个内核

100 MiB

限制

.5 个内核

500 MiB

6.2.5. 安装 Collector 的先决条件

收集器监控安全集群中每个节点的运行时活动。它连接到 Sensor 来报告此信息。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

内存和存储要求
CollectorCPU内存

Request(请求)

.05 个内核

320 MiB

限制

.75 个内核

1 GiB

注意

收集器使用 mutable 镜像标签( <version>-latest),因此您可以更轻松地获得对较新的 Linux 内核版本的支持。对于镜像更新,代码、预先存在的内核模块或 eBPF 程序没有改变。更新只添加对初始发布后发布的新内核版本的支持的单个镜像层。

6.3. 在其他平台上创建 RHACS 云实例

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

6.3.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 所在的云供应商的区域。选择 AWS
    • 可用区 :使用默认值。
  4. 单击 Create instance

后续步骤

  • 使用 ACS 控制台生成 init 捆绑包。

6.4. 在其他平台上为 RHACS 云服务生成并应用 init 捆绑包

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

注意

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

6.4.1. 生成 init 捆绑包

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

您可以使用 RHACS 门户(也称为 ACS 控制台)创建包含 secret 的 init 捆绑包。

注意

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

流程

  1. 在 RHACS 门户网站中,进入 Platform ConfigurationIntegrations
  2. 进入 Authentication Tokens 部分,再点 Cluster Init Bundle
  3. Generate bundle
  4. 为集群 init 捆绑包输入一个名称并点 Generate

    1. 如果使用 Helm chart 安装,请点击 Download Helm Values File 下载生成的捆绑包。
    2. 如果使用 Operator 安装,请点击 Download Kubernetes Secret File 下载生成的捆绑包。
重要

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

后续步骤

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

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

注意

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

先决条件

您已配置了 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量。

  • 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_API_TOKEN=<api_token>
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>

流程

  • 运行以下命令以生成包含 secret 的集群 init 捆绑包:

    对于 Helm 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output cluster_init_bundle.yaml

    对于 Operator 安装:

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" \
      central init-bundles generate <cluster_init_bundle_name> \
      --output-secrets cluster_init_bundle.yaml
    重要

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

下一步

  • 使用 Red Hat OpenShift CLI 使用 init 捆绑包创建资源。
  • 使用 kubectl CLI 使用 init 捆绑包创建资源。

6.4.2. 通过创建资源应用 init 捆绑包

6.4.2.1. 使用 init 捆绑包创建资源

在安装安全集群前,您必须使用 init 捆绑包在集群中创建所需的资源,以允许安全集群上的服务与 Central 通信。

注意

如果使用 Helm chart 安装,请不要执行此步骤。

先决条件

  • 您必须生成了一个包含 secret 的 init 捆绑包。

流程

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

  • 在 OpenShift Container Platform Web 控制台中,在顶部菜单中点 + 打开 Import YAML 页面。您可以拖动 init 捆绑包文件或将其内容复制并粘贴到编辑器中,然后点 Create
  • 使用 Red Hat OpenShift CLI 运行以下命令来创建资源:

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

    $ kubectl create namespace stackrox
    $ kubectl create -f <init_bundle>.yaml \ 1
      -n <stackrox> 2
    1
    指定包含 secret 的 init 捆绑包的文件名。
    2
    指定安装安全集群服务的项目的名称。

下一步

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

6.5. 在其他平台上为 RHACS 云服务安装安全集群服务

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

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

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

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

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

6.5.1.1. 添加 Helm Chart 仓库

流程

  • 添加 RHACS chart 存储库。

    $ 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) 用于安装针对每个集群(Sensor 和 Admission 控制器)和针对每个节点(Collector) 的组件。

    注意

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

验证

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

    $ helm search repo -l rhacs/
6.5.1.2. 使用 Helm chart 在安全集群中安装 RHACS 云服务
6.5.1.2.1. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart

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

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须具有 Central API 端点,包括地址和端口号。您可以从云控制台导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。

流程

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

    $ helm install -n stackrox --create-namespace \
        stackrox-secured-cluster-services rhacs/secured-cluster-services \
        -f <path_to_cluster_init_bundle.yaml> \ 1
        --set clusterName=<name_of_the_secured_cluster> \
        --set centralEndpoint=<endpoint_of_central_service> 2
    --set imagePullSecrets.username=<your redhat.com username> \
    --set imagePullSecrets.password=<your redhat.com password>
    1
    使用 -f 选项指定 init 捆绑包的路径。
    2
    输入 Central API 端点,包括地址和端口号。您可以通过选择 Advanced Cluster Security → ACS 实例,然后点您创建的 ACS 实例,在 Red Hat Hybrid Cloud Console 控制台中再次查看此信息。
6.5.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 文件。

6.5.1.3.1. 配置参数
参数Description

clusterName

集群的名称。

centralEndpoint

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

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.main.pullPolicy

main 镜像的镜像拉取策略。

image.collector.pullPolicy

Collector 镜像的镜像拉取策略。

image.main.tag

使用 main 镜像标签。

image.collector.tag

使用 collector 镜像标签。

collector.collectionMethod

EBPFKERNEL_MODULENO_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 请求用于 execportforward 事件。Red Hat Advanced Cluster Security for Kubernetes 不支持 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

在评估准入检查请求时,Red Hat Advanced Cluster Security for Kubernetes 应该等待的最大时间(以秒为单位)。使用它来设置启用镜像扫描时的请求超时。如果镜像扫描的运行时间超过指定时间,Red Hat Advanced Cluster Security for Kubernetes 接受了请求。

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。使用 slim Collector 镜像需要 Central 来提供匹配的 eBPF 探测或内核模块。如果您以离线模式运行 Red Hat Advanced Cluster Security for Kubernetes,您必须从 stackrox.io 下载内核支持软件包,并将其上传到 Central slim Collectors 才能正常工作。否则,您必须确保 Central 可以访问托管在 https://collector-modules.stackrox.io/ 的在线探测存储库。

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 会在安全集群中部署轻量级扫描程序和扫描器数据库,以允许扫描 OpenShift Container Registry 上的镜像。只有在 OpenShift 上才支持启用扫描器。默认值为 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 限制。使用此参数覆盖默认值。

6.5.1.3.1.1. 环境变量

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

customize:
  envVars:
    ENV_VAR1: "value1"
    ENV_VAR2: "value2"

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

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

6.5.1.3.2. 安装 secured-cluster-services Helm chart

配置 values-public.yamlvalues-private.yaml 文件后,安装 secure-cluster-services Helm chart 以部署 per-cluster 和 per-node 组件(Sensor、Admission controller 和 Collector)。

小心

要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。

前提条件

  • 您必须为集群生成 RHACS init 捆绑包。
  • 您必须具有 Central API 端点,包括地址和端口号。您可以从云控制台导航菜单中选择 Advanced Cluster SecurityACS Instances 来查看此信息,然后点您创建的 ACS 实例。

流程

  • 运行以下命令:

    $ 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
    1
    使用 -f 选项指定 YAML 配置文件的路径。
注意

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

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

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

流程

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

    $ 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
    您必须指定 --reuse-values 参数,否则 Helm upgrade 命令重置所有之前配置的设置。
    注意

    您还可以使用 --set--set-file 参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。

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

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

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

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

6.5.2.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  3. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
6.5.2.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

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

    $ echo $PATH

验证

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

    $ roxctl version
6.5.2.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.74.9/bin/Windows/roxctl.exe

验证

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

    $ roxctl version
6.5.2.2. 安装传感器(Sensor)

要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。以下步骤描述使用 RHACS 门户添加传感器。

先决条件

  • 您必须已安装了 Central 服务,或者可以访问 Red Hat Advanced Cluster Security Cloud Service (ACSCS)上的中央服务。

流程

  1. 在 RHACS 门户,进入到 Platform ConfigurationClusters
  2. 选择 + New Cluster
  3. 为集群指定一个名称。
  4. 根据您要部署 Sensor 的位置,为字段提供适当的值。

    • 输入 Central API 端点,包括地址和端口号。您可以通过选择 Advanced Cluster SecurityACS Instances,然后点您创建的 ACS 实例,在 Red Hat Hybrid Cloud Console 中再次查看此信息。
  5. Next 以继续 Sensor 设置。
  6. Download YAML File and Keys 下载集群捆绑包(zip 归档)。

    重要

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

  7. 在可以访问受监控的集群的系统中,解压缩并从集群捆绑包中运行 sensor 脚本:

    $ unzip -d sensor sensor-<cluster_name>.zip
    $ ./sensor/sensor.sh

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

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

验证

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

    • 对于 Kubernetes:

      $ kubectl get pod -n stackrox -w
  2. Finish 关闭窗口。

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

6.6. 在其他平台上验证 RHACS 云服务安装

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

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

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

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

第 7 章 卸载 Red Hat Advanced Cluster Security for Kubernetes

安装 Red Hat Advanced Cluster Security for Kubernetes 时,它会创建:

  • 如果选择了 Operator 安装方法,一个名为 rhacs-operator 的命名空间,Operator 将在这个命名空间中安装
  • 名为 stackrox 的命名空间,或者您创建的 Central 和 SecuredCluster 自定义资源的另外一个命名空间
  • 所有组件的 PodSecurityPolicy 和 Kubernetes 基于角色的访问控制 (RBAC) 对象
  • 命名空间上的额外标签,用于生成的网络策略
  • 一个应用程序自定义资源定义 (CRD),如果它不存在

卸载 Red Hat Advanced Cluster Security for Kubernetes 涉及删除所有这些项目。

7.1. 删除命名空间

您可以使用 OpenShift Container Platform 或 Kubernetes 命令行界面删除 Red Hat Advanced Cluster Security for Kubernetes 创建的命名空间。

流程

  • 删除 stackrox 命名空间:

    • 在 OpenShift Container Platform 中:

      $ oc delete namespace stackrox
    • 对于 Kubernetes:

      $ kubectl delete namespace stackrox
注意

如果您在不同的命名空间中安装了 RHACS,请在 delete 命令中使用该命名空间的名称。

7.2. 删除全局资源

您可以使用 OpenShift Container Platform 或 Kubernetes 命令行界面删除 Red Hat Advanced Cluster Security for Kubernetes 创建的全局资源。

流程

  • 删除全局资源:

    • 在 OpenShift Container Platform 中:

      $ oc get clusterrole,clusterrolebinding,role,rolebinding,psp -o name | grep stackrox | xargs oc delete --wait
      $ oc delete scc -l "app.kubernetes.io/name=stackrox"
      $ oc delete ValidatingWebhookConfiguration stackrox
    • 对于 Kubernetes:

      $ kubectl get clusterrole,clusterrolebinding,role,rolebinding,psp -o name | grep stackrox | xargs kubectl delete --wait
      $ kubectl delete ValidatingWebhookConfiguration stackrox

7.3. 删除标签和注解

您可以使用 OpenShift Container Platform 或 Kubernetes 命令行界面删除 Red Hat Advanced Cluster Security for Kubernetes 所创建的标签和注解。

流程

  • 删除标签和注解:

    • 在 OpenShift Container Platform 中:

      $ for namespace in $(oc get ns | tail -n +2 | awk '{print $1}'); do     oc label namespace $namespace namespace.metadata.stackrox.io/id-;     oc label namespace $namespace namespace.metadata.stackrox.io/name-;     oc annotate namespace $namespace modified-by.stackrox.io/namespace-label-patcher-;   done
    • 对于 Kubernetes:

      $ for namespace in $(kubectl get ns | tail -n +2 | awk '{print $1}'); do     kubectl label namespace $namespace namespace.metadata.stackrox.io/id-;     kubectl label namespace $namespace namespace.metadata.stackrox.io/name-;     kubectl annotate namespace $namespace modified-by.stackrox.io/namespace-label-patcher-;   done

法律通告

Copyright © 2024 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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

© 2024 Red Hat, Inc.