4.4. 在 Red Hat OpenShift 上为 RHACS 安装安全集群服务
本节论述了在安全集群中安装 Red Hat Advanced Cluster Security for Kubernetes 的安装过程。
您可以使用以下方法之一在安全集群中安装 RHACS:
- 使用 Operator 安装
- 使用 Helm chart 安装
-
使用
roxctl
CLI 安装(除非有需要使用它的特定安装需要)
4.4.1. 使用 Operator 在安全集群中安装 RHACS
4.4.1.1. 安装安全的集群服务
您可以使用 SecuredCluster
自定义资源在集群中安装安全的集群服务。您必须在要监控的环境中的每个集群中安装安全集群服务。
安装安全的集群服务时,也会安装 Collector。要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。
先决条件
- 如果使用 OpenShift Container Platform,您必须安装版本 4.11 或更高版本。
- 已安装 RHACS Operator。
- 您已生成 init 捆绑包并将其应用到集群。
流程
-
在 OpenShift Container Platform web 控制台中进入到 Operators
Installed Operators 页面。 - 点 RHACS Operator。
- 从 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:443
。central.stackrox.svc:443
的默认值只有您在同一集群中安装了安全集群服务和 Central 时才可以正常工作。在配置多个集群时,不要使用默认值。反之,在为每个集群配置 Central Endpoint 值时使用主机名。-
只有在您在同一集群中安装安全集群服务和 Central 时,才使用
central.stackrox.svc:443
。
-
只有在您在同一集群中安装安全集群服务和 Central 时,才使用
- 接受默认值或配置自定义值(如果需要)。例如,如果您使用自定义证书或不受信任的 CA,您可能需要配置 TLS。
- 点 Create。
后续步骤
- 可选:配置其他安全的集群设置。
- 验证安装。
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)。
要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。
前提条件
- 您必须已为集群生成 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 地址。 |
|
|
| 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 请求。 |
|
此设置控制准入控制服务的行为。您必须把 |
|
如果将这个选项设置为 |
|
将它设置为 |
| 在评估准入检查请求时,Red Hat Advanced Cluster Security for Kubernetes 应该等待的最大时间(以秒为单位)。使用它来设置启用镜像扫描时的请求超时。如果镜像扫描的运行时间超过指定时间,Red Hat Advanced Cluster Security for Kubernetes 接受了请求。 |
| 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 限制。使用此参数覆盖默认值。 |
|
如果将此选项设置为 |
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, Admission controller, Collector, 和 Scanner-slim)。
要在具有统一可扩展固件接口(UEFI)以及启用了安全引导机制的系统中安装 Collector,您必须使用 eBPF 探测,因为内核模块没有被签名,且 UEFI 固件无法加载未签名的软件包。收集器在启动时用来识别安全引导状态,并切换到 eBPF 探测(如果需要)。
前提条件
- 您必须已为集群生成 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 后,您可以对任何配置选项进行更改。
流程
-
使用新值更新
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
- 您必须指定
--reuse-values
参数,否则 Helm upgrade 命令重置所有之前配置的设置。
注意您还可以使用
--set
或--set-file
参数指定配置值。但是,这些选项不会被保存,需要您在每次进行更改时手动指定所有选项。
4.4.3. 使用 roxctl CLI 在安全集群中安装 RHACS
要使用 CLI 在安全集群中安装 RHACS,请执行以下步骤:
-
安装
roxctl
CLI - 安装 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 可用于 amd64、
ppc64le
和 s390x
架构。
流程
确定目标操作系统的
roxctl
架构:$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
下载
roxctl
CLI:$ curl -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.3.8/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
架构。
流程
下载
roxctl
CLI:$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Darwin/roxctl
从二进制文件中删除所有扩展属性:
$ 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 二进制文件。
amd64
架构提供了适用于 Windows 的 roxctl
CLI。
流程
下载
roxctl
CLI:$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Windows/roxctl.exe
验证
验证您已安装的
roxctl
版本:$ roxctl version
4.4.3.2. 安装传感器(Sensor)
要监控集群,您必须部署 Sensor。您必须将 Sensor 部署到要监控的每个集群中。以下步骤描述使用 RHACS 门户添加传感器。
先决条件
- 您必须已安装了 Central 服务,也可以在 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service) 上选择 ACS 实例来访问 Central 服务。
流程
-
在安全集群中,在 RHACS 门户中进入 Platform Configuration
Clusters。 - 选择 + New Cluster。
- 为集群指定一个名称。
根据您要部署 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 后,它会联系中心并提供集群信息。
验证
返回 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 门户仪表板开始显示部署、镜像和策略违反情况。