4.4. 在 Red Hat OpenShift 上为 RHACS 安装安全集群服务
您可以使用以下方法之一在安全集群中安装 RHACS:
- 使用 Operator 安装
- 使用 Helm chart 安装
-
使用
roxctl
CLI 安装(除非您有特定的安装需要使用它)
4.4.1. 使用 Operator 在安全集群中安装 RHACS
4.4.1.1. 安装安全的集群服务
您可以使用 Operator 在集群中安装 Secured Cluster 服务,它会创建 SecuredCluster
自定义资源。您必须在要监控的环境中的每个集群中安装 Secured Cluster 服务。
安装 Red Hat Advanced Cluster Security for Kubernetes 时:
-
如果您是首次安装 RHACS,您必须首先安装
Central
自定义资源,因为SecuredCluster
自定义资源安装依赖于 Central 生成的证书。 -
不要在名称以
kube
、openshift
或redhat
开头的项目中安装SecuredCluster
,或在istio-system
项目中安装 SecuredCluster。 -
如果要在同时托管 Central 的集群中安装 RHACS
SecuredCluster
自定义资源,请确保将其安装到与 Central 相同的命名空间中安装。 -
如果要在没有主机 Central 的集群中安装 Red Hat Advanced Cluster Security for Kubernetes
SecuredCluster
自定义资源,红帽建议您在自己的项目中安装 Red Hat Advanced Cluster Security for KubernetesSecuredCluster
自定义资源,而不是在您安装了 Red Hat Advanced Cluster Security for Kubernetes Operator 的项目中。
先决条件
- 如果使用 OpenShift Container Platform,您必须安装 4.12 或更高版本。
- 您已在要保护的集群中安装了 RHACS Operator,称为安全集群。
- 您已生成 init 捆绑包并将其应用到集群。
流程
-
在安全集群的 OpenShift Container Platform Web 控制台中,进入 Operators
Installed Operators 页面。 - 点 RHACS Operator。
如果您在推荐的命名空间中安装了 Operator,OpenShift Container Platform 会将项目列为
rhacs-operator
。选择 Project: rhacs-operatorCreate project。 注意-
如果在不同的命名空间中安装了 Operator,OpenShift Container Platform 将列出该命名空间的名称,而不是
rhacs-operator
。
-
如果在不同的命名空间中安装了 Operator,OpenShift Container Platform 将列出该命名空间的名称,而不是
-
输入新项目名称(如
stackrox
),然后点 Create。红帽建议您使用stackrox
作为项目名称。 - 从 Operator 详情页面的中央导航菜单中点 Secured Cluster。
- 点 Create SecuredCluster。
在 Configure via 字段中选择以下选项之一:
- 表单视图 :如果要使用屏幕字段配置安全集群且不需要更改任何其他字段,则使用这个选项。
- YAML 视图 :使用此视图使用 YAML 文件设置安全集群。YAML 文件显示在窗口中,您可以在其中编辑字段。如果您选择这个选项,请在完成编辑完该文件时,点 Create。
- 如果使用 Form view,请通过接受或编辑默认名称来输入新项目名称。默认值为 stackrox-secured-cluster-services。
- 可选:为集群添加任何标签。
-
输入您的
SecuredCluster
自定义资源的唯一名称。 对于 Central 端点,请输入您的 Central 实例的地址。例如,如果 Central 位于
https://central.example.com
,则将中央端点指定为central.example.com
。-
只有在安装了 Central 的同一集群中安装安全集群服务时,才使用
central.stackrox.svc:443
的默认值。 - 在配置多个集群时,不要使用默认值。反之,在为每个集群配置 Central Endpoint 值时使用主机名。
-
只有在安装了 Central 的同一集群中安装安全集群服务时,才使用
- 对于剩余的字段,接受默认值或配置自定义值(如果需要)。例如,如果您使用自定义证书或不可信 CA,您可能需要配置 TLS。如需更多信息,请参阅"使用 Operator 为 RHACS 配置安全集群服务选项"。
- 点 Create。
在短暂暂停后,Secured Clusters 页面会显示
stackrox-secured-cluster-services
的状态。您可能会看到以下条件:- Conditions: Deployed, Initialized: 已安装安全集群服务,安全集群与 Central 通信。
- 条件 : Initialized, Irreconcilable :安全集群没有与 Central 通信。确保将在 RHACS Web 门户中创建的 init 捆绑包应用到安全集群。
后续步骤
- 配置额外的安全集群设置(可选)。
- 验证安装。
4.4.2. 使用 Helm chart 在安全集群中安装 RHACS
您可以使用没有自定义的 Helm chart、使用默认值或配置参数自定义的 Helm chart 在安全集群中安装 RHACS。
4.4.2.1. 使用 Helm chart 在安全集群中安装 RHACS
4.4.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
),用于安装 per-cluster 和 per-node 组件(Sensor、Admission Controller、Collector 和 Scanner-slim)。注意将 per-cluster 组件部署到要监控的每个集群中,并在要监控的所有节点中部署 per-node 组件。
验证
运行以下命令来验证添加的 chart 存储库:
$ helm search repo -l rhacs/
4.4.2.1.2. 在不使用自定义配置的情况下安装 secured-cluster-services Helm chart
使用以下说明安装 secure-cluster-services
Helm chart,以部署 per-cluster 和 per-node 组件(Sensor、Admission controller、Collector 和 Scanner-slim)。
先决条件
- 您必须已为集群生成 RHACS init 捆绑包。
-
您必须有权访问 Red Hat Container Registry 和 pull secret 进行身份验证。有关从
registry.redhat.io
下载镜像的详情,请参考 Red Hat Container Registry Authentication。 - 您必须具有公开 Central 服务的地址。
流程
在 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 -f <path_to_pull_secret.yaml> \2 --set clusterName=<name_of_the_secured_cluster> \ --set centralEndpoint=<endpoint_of_central_service> 3 --set scanner.disable=false 4
4.4.2.2. 使用自定义配置 secured-cluster-services Helm chart
本节论述了可用于 helm install
和 helm 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.4.2.2.1. 配置参数
参数 | Description |
---|---|
| 集群的名称。 |
|
Central 端点的地址。如果使用一个支持非 gRPC 的负载均衡器,请使用带有 |
| Sensor 端点的地址,包括端口号。 |
| Sensor 容器的镜像拉取策略。 |
| Sensor 使用的内部服务到服务 TLS 证书。 |
| Sensor 使用的内部服务到服务 TLS 证书密钥。 |
| Sensor 容器的内存请求。使用此参数覆盖默认值。 |
| Sensor 容器的 CPU 请求。使用此参数覆盖默认值。 |
| Sensor 容器的内存限值。使用此参数覆盖默认值。 |
| Sensor 容器的 CPU 限制。使用此参数覆盖默认值。 |
|
将节点选择器标签指定为 |
| 如果节点选择器选择污点节点,请使用此参数指定污点容限键、值和 Sensor 的效果。此参数主要用于基础架构节点。 |
|
|
| Collector 镜像的名称。 |
| 用于主镜像的 registry 地址。 |
| 用于 Collector 镜像的 registry 地址。 |
| 用于 Scanner 镜像的 registry 地址。 |
| 用于 Scanner DB 镜像的 registry 地址。 |
| 用于 Scanner V4 镜像的 registry 地址。 |
| 用于 Scanner V4 DB 镜像的 registry 地址。 |
|
|
| Collector 镜像的镜像拉取策略。 |
|
使用 |
|
使用 |
|
|
| Collector 容器的镜像拉取策略。 |
| Compliance 容器的镜像拉取策略。 |
|
如果指定了 |
| Collector 容器的内存请求。使用此参数覆盖默认值。 |
| Collector 容器的 CPU 请求。使用此参数覆盖默认值。 |
| Collector 容器的内存限值。使用此参数覆盖默认值。 |
| Collector 容器的 CPU 限制。使用此参数覆盖默认值。 |
| Compliance 容器的内存请求。使用此参数覆盖默认值。 |
| Compliance 容器的 CPU 请求。使用此参数覆盖默认值。 |
| Compliance 容器的内存限值。使用此参数覆盖默认值。 |
| Compliance 容器的 CPU 限制。使用此参数覆盖默认值。 |
| Collector 使用的内部服务到服务的 TLS 证书。 |
| Collector 使用的内部服务到服务的 TLS 证书密钥。 |
|
此设置控制 Kubernetes 是否配置为联系 Red Hat Advanced Cluster Security for Kubernetes,并带有 |
|
当您将此参数设置为 |
|
此设置控制集群是否被配置为联系 Red Hat Advanced Cluster Security for Kubernetes,带有 |
| 此设置控制 Red Hat Advanced Cluster Security for Kubernetes 是否评估策略 ; 如果禁用了策略,则会自动接受所有 AdmissionReview 请求。 |
|
此设置控制准入控制服务的行为。您必须把 |
|
如果将这个选项设置为 |
|
将它设置为 |
|
在将其标记为失败前,使用此参数指定 RHACS 必须等待准入审核的最大秒数。如果准入 Webhook 在超时时间结束前没有收到请求的信息,它会失败,但处于打开状态时,它仍然允许操作成功。例如,准入控制器允许创建部署,即使扫描超时,RHACS 无法确定部署是否违反了策略。从版本 4.5 开始,红帽将 RHACS 准入控制器 webhook 的默认超时设置从 20 秒减少到 10 秒,从而导致 |
| Admission Control 容器的内存请求。使用此参数覆盖默认值。 |
| Admission Control 容器的 CPU 请求。使用此参数覆盖默认值。 |
| Admission Control 容器的内存限值。使用此参数覆盖默认值。 |
| Admission Control 容器的 CPU 限制。使用此参数覆盖默认值。 |
|
将节点选择器标签指定为 |
| 如果节点选择器选择污点节点,请使用此参数指定污点容限键、值以及 Admission Control 的效果。此参数主要用于基础架构节点。 |
| Admission Control 使用的内部服务到服务的 TLS 证书。 |
| Admission Control 使用的内部服务对服务的 TLS 证书密钥。 |
|
使用此参数覆盖默认的 |
|
如果指定了 |
|
指定 |
|
指定 |
|
已弃用。如果要使用 slim Collector 镜像部署 Collector,请指定 |
| Sensor 的资源规格。 |
| Admission 控制器的资源规格。 |
| Collector 的资源规格。 |
| Collector 的 Compliance 容器的资源规格。 |
|
如果将此选项设置为 |
|
如果将此选项设置为 |
|
如果将此选项设置为 |
| 如果节点选择器选择污点节点,请使用此参数为 Scanner DB 指定污点容限键、值和效果。 |
| Collector 的 Compliance 容器的资源规格。 |
| 通过设置此参数,您可以修改扫描程序日志级别。使用这个选项仅用于故障排除目的。 |
|
如果将此选项设置为 |
| 自动扩展的最小副本数。默认值为 2。 |
| 自动扩展的最大副本数。默认值为 5。 |
|
将节点选择器标签指定为 |
| 如果节点选择器选择污点节点,请使用此参数为 Scanner 指定污点容限键、值和效果。 |
|
将节点选择器标签指定为 |
| 如果节点选择器选择污点节点,请使用此参数为 Scanner DB 指定污点容限键、值和效果。 |
| Scanner 容器的内存请求。使用此参数覆盖默认值。 |
| Scanner 容器的 CPU 请求。使用此参数覆盖默认值。 |
| Scanner 容器的内存限值。使用此参数覆盖默认值。 |
| Scanner 容器的 CPU 限制。使用此参数覆盖默认值。 |
| Scanner DB 容器的内存请求。使用此参数覆盖默认值。 |
| Scanner DB 容器的 CPU 请求。使用此参数覆盖默认值。 |
| Scanner DB 容器的内存限值。使用此参数覆盖默认值。 |
| Scanner DB 容器的 CPU 限制。使用此参数覆盖默认值。 |
|
如果将此选项设置为 |
|
为了在网络级别提供安全性,RHACS 在安装了安全集群资源的命名空间中创建默认 警告 禁用创建默认网络策略可能会破坏 RHACS 组件之间的通信。如果禁用创建默认策略,则必须创建自己的网络策略来允许此通信。 |
4.4.2.2.1.1. 环境变量
您可以采用以下格式指定 Sensor 和 Admission Controller 的环境变量:
customize: envVars: ENV_VAR1: "value1" ENV_VAR2: "value2"
通过 customize
设置,您可以为此 Helm Chart 创建的所有对象指定自定义 Kubernetes 元数据(标签和注解)以及工作负载的其他 pod 标签、Pod 注解和容器环境变量。
配置是分层的,在更通用范围(例如,所有对象)中定义的元数据被覆盖为更通用范围的元数据(例如,仅适用于 Sensor 部署)。
4.4.2.2.2. 使用自定义安装 secured-cluster-services Helm chart
配置 values-public.yaml
和 values-private.yaml
文件后,安装 secure-cluster-services
Helm chart 以部署针对每个集群和每个节点组件:
- Sensor
- 准入控制器
- Collector
- scanner:当安装了 StackRox Scanner 时,对于安全集群是可选的
- scanner DB:当安装了 StackRox Scanner 时,对于安全集群是可选的
- 扫描程序 V4 Indexer 和 Scanner V4 DB:在安装 Scanner V4 时对于安全集群是可选的
先决条件
- 您必须已为集群生成 RHACS init 捆绑包。
-
您必须有权访问 Red Hat Container Registry 和 pull secret 进行身份验证。有关从
registry.redhat.io
下载镜像的详情,请参考 Red Hat Container Registry Authentication。 - 您必须有用于公开 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 --set imagePullSecrets.username=<username> \2 --set imagePullSecrets.password=<password> 3
要使用持续集成(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.4.2.3. 在部署 secure-cluster-services Helm chart 后更改配置选项
在部署 secure-cluster-services
Helm Chart 后,您可以对任何配置选项进行更改。
当使用 helm upgrade
命令进行更改时,会应用以下准则和要求:
-
您还可以使用
--set
或--set-file
参数指定配置值。但是,这些选项不会被保存,每当您进行更改时,您必须手动指定所有选项。 有些更改(如启用 Scanner V4 )需要为组件发布新证书。因此,在进行这些更改时,您必须提供 CA。
-
如果 CA 在初始安装过程中由 Helm Chart 生成,则必须从集群中检索这些值,并将其提供给
helm upgrade
命令。central-services
Helm Chart 的安装后备注包括用于检索自动生成的值的命令。 -
如果 CA 在 Helm Chart 之外生成,并在安装
central-services
Chart 的过程中提供,那么您必须在使用helm upgrade
命令时再次执行该操作,例如,使用带有helm upgrade
命令的--reuse-values
标志。
-
如果 CA 在初始安装过程中由 Helm Chart 生成,则必须从集群中检索这些值,并将其提供给
流程
-
使用新值更新
values-public.yaml
和values-private.yaml
配置文件。 运行
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
- 如果您修改了没有包括在
values_public.yaml
和values_private.yaml
文件中的值,请包含--reuse-values
参数。
4.4.3. 使用 roxctl CLI 在安全集群中安装 RHACS
此方法也称为清单安装方法。
先决条件
-
如果您计划使用
roxctl
CLI 命令来生成传感器安装脚本使用的文件,则已安装了roxctl
CLI。 - 您已生成了传感器安装脚本将使用的文件。
流程
- 在 OpenShift Container Platform 安全集群中,通过运行传感器安装脚本来部署 Sensor 组件。
4.4.3.1. 安装 roxctl CLI
您必须首先下载二进制文件。您可以在 Linux、Windows 或 macOS 上安装 roxctl
。
4.4.3.1.1. 在 Linux 中安装 roxctl CLI
您可以按照以下流程在 Linux 上安装 roxctl
CLI 二进制文件。
用于 Linux 的 roxctl
CLI 可用于 amd
64、rm64、
ppc64le
和 s390x
架构。
流程
确定目标操作系统的
roxctl
架构:$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
下载
roxctl
CLI:$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.6.0/bin/Linux/roxctl${arch}"
使
roxctl
二进制文件可执行:$ chmod +x roxctl
将
roxctl
二进制文件放到PATH
中的目录中:要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
验证您已安装的
roxctl
版本:$ roxctl version
4.4.3.1.2. 在 macOS 上安装 roxctl CLI
您可以按照以下流程在 macOS 中安装 roxctl
CLI 二进制文件。
macOS 的 roxctl
CLI 可用于 amd64
和 arm64
架构。
流程
确定目标操作系统的
roxctl
架构:$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
下载
roxctl
CLI:$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.6.0/bin/Darwin/roxctl${arch}"
从二进制文件中删除所有扩展属性:
$ xattr -c roxctl
使
roxctl
二进制文件可执行:$ chmod +x roxctl
将
roxctl
二进制文件放到PATH
中的目录中:要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
验证您已安装的
roxctl
版本:$ roxctl version
4.4.3.1.3. 在 Windows 上安装 roxctl CLI
您可以按照以下流程在 Windows 上安装 roxctl
CLI 二进制文件。
用于 Windows 的 roxctl
CLI 可用于 amd64
架构。
流程
下载
roxctl
CLI:$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.6.0/bin/Windows/roxctl.exe
验证
验证您已安装的
roxctl
版本:$ roxctl version
4.4.3.2. 安装传感器(Sensor)
要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。此安装方法也称为清单安装方法。
要使用清单安装方法执行安装,请只按照以下步骤之一 操作:
- 使用 RHACS Web 门户下载集群捆绑包,然后提取并运行传感器脚本。
-
使用
roxctl
CLI 为 OpenShift Container Platform 集群生成所需的 sensor 配置,并将其与 Central 实例关联。
先决条件
- 您必须已安装了 Central 服务,或者您可以通过选择 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service)上的 ACS 实例 来访问 Central 服务。
4.4.3.2.1. 使用 Web 门户的清单安装方法
流程
-
在 RHACS 门户中的安全集群中,进入 Platform Configuration
Clusters。 -
选择 Secure a cluster
Legacy installation method。 - 为集群指定一个名称。
根据您要部署 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
。
-
使用
- 点 Next 以继续 Sensor 设置。
点 Download YAML File and Keys 下载集群捆绑包(zip 归档)。
重要集群捆绑包 zip 存档包括每个集群的唯一配置和密钥。不要在另一个集群中重复使用相同的文件。
从可访问被监控的集群的系统中,从集群捆绑包中提取并运行
sensor
脚本:$ unzip -d sensor sensor-<cluster_name>.zip
$ ./sensor/sensor.sh
如果您收到部署 Sensor 所需的权限的警告,请按照屏幕说明操作,或联系集群管理员寻求帮助。
部署 Sensor 后,它会联系中心并提供集群信息。
4.4.3.2.2. 使用 roxctl CLI 安装清单
流程
运行以下命令,为 OpenShift Container Platform 集群生成所需的传感器配置,并将其与您的 Central 实例关联:
$ roxctl sensor generate openshift --openshift-version <ocp_version> --name <cluster_name> --central "$ROX_ENDPOINT" 1
- 1
- 对于
--openshift-version
选项,请指定集群的主 OpenShift Container Platform 版本号。例如,为 OpenShift Container Platform 版本3.x
指定3
,为 OpenShift Container Platform 版本4.x
指定4
。
从可访问被监控的集群的系统中,从集群捆绑包中提取并运行
sensor
脚本:$ unzip -d sensor sensor-<cluster_name>.zip
$ ./sensor/sensor.sh
如果您收到部署 Sensor 所需的权限的警告,请按照屏幕说明操作,或联系集群管理员寻求帮助。
部署 Sensor 后,它会联系中心并提供集群信息。
验证
返回 RHACS 门户并检查部署是否成功。如果成功,当在 Platform Configuration
Clusters 中查看集群列表时,集群状态会显示一个绿色勾号和 Healthy 状态。如果您没有看到绿色勾选标记,请使用以下命令检查问题: 在 OpenShift Container Platform 中输入以下命令:
$ oc get pod -n stackrox -w
在 Kubernetes 上,输入以下命令:
$ kubectl get pod -n stackrox -w
- 点 Finish 关闭窗口。
安装后,Sensor 开始向 RHACS 报告安全信息,RHACS 门户仪表板开始显示部署、镜像和策略违反情况。