4.5. 使用 Operator 为 RHACS 配置安全 Cluster 服务选项


当使用 Operator 安装安全的 Cluster 服务时,您可以配置可选设置。

4.5.1. 安全集群服务配置选项

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

4.5.1.1. 所需的配置设置

参数Description

centralEndpoint

用于连接的 Central 实例的端点,包括端口号。如果使用一个支持非 gRPC 的负载均衡器,请使用带有 ws:// 的端点地址的 WebSocket 协议。如果没有为此参数指定值,Sensor 会尝试连接到在同一命名空间中运行的 Central 实例。

clusterName

此集群的唯一名称,显示在 RHACS 门户中。使用此参数设置名称后,您无法再次更改它。要更改名称,您必须删除并重新创建对象。

4.5.1.2. 准入控制器设置

参数Description

admissionControl.listenOnCreates

指定 true 以启用创建对象的防止策略强制。默认值为 true

admissionControl.listenOnEvents

指定 true 来为 Kubernetes 事件启用监控和强制实施,如 port-forwardexec 事件。它用于通过 Kubernetes API 控制资源访问。默认值为 true

admissionControl.listenOnUpdates

指定 true 来为对象更新启用防止策略强制。除非将 Listen On Creates 设为 true, 否则它不会生效。默认值为 true

admissionControl.nodeSelector

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

admissionControl.tolerations

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

admissionControl.hostAliases

使用此参数将主机和 IP 地址注入 pod 的主机文件中。

admissionControl.resources.limits

使用此参数覆盖准入控制器的默认资源限值。

admissionControl.resources.requests

使用此参数覆盖准入控制器的默认资源请求。

admissionControl.bypass

使用以下值之一配置绕过准入控制器强制:

  • BreakGlassAnnotation 允许通过 admission.stackrox.io/break-glass 注解绕过准入控制器。
  • Disabled 禁用安全集群绕过准入控制器强制实施的功能。

默认值为 BreakGlassAnnotation

admissionControl.contactImageScanners

使用以下值之一指定准入控制器是否必须连接到镜像扫描程序:

  • 如果缺少镜像的扫描结果,ScanIfMissing
  • DoNotScanInline 用来在处理准入请求时跳过扫描镜像。

默认值为 DoNotScanInline

admissionControl.timeoutSeconds

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

4.5.1.3. 扫描程序配置

使用 Scanner 配置设置修改集成的 OpenShift 镜像 registry 的本地集群扫描程序。

参数Description

scanner.analyzer.nodeSelector

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

scanner.analyzer.tolerations

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

scanner.analyzer.hostAliases

使用此参数将主机和 IP 地址注入 pod 的主机文件中。

scanner.analyzer.resources.requests.memory

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

scanner.analyzer.resources.requests.cpu

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

scanner.analyzer.resources.limits.memory

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

scanner.analyzer.resources.limits.cpu

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

scanner.analyzer.scaling.autoscaling

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

scanner.analyzer.scaling.minReplicas

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

scanner.analyzer.scaling.maxReplicas

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

scanner.analyzer.scaling.replicas

默认副本数。默认值为 3

scanner.analyzer.tolerations

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

scanner.db.nodeSelector

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

scanner.db.hostAliases

使用此参数将主机和 IP 地址注入 pod 的主机文件中。

scanner.db.resources.requests.memory

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

scanner.db.resources.requests.cpu

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

scanner.db.resources.limits.memory

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

scanner.db.resources.limits.cpu

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

scanner.db.tolerations

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

scanner.scannerComponent

如果将此选项设置为 Disabled,Red Hat Advanced Cluster Security for Kubernetes 不会部署 Scanner 部署。不要在 OpenShift Container Platform 集群上禁用 Scanner。默认值为 AutoSense

scannerV4.db.nodeSelector

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

scannerV4.db.tolerations

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

scannerV4.db.resources.limits

使用此参数覆盖 Scanner V4 DB 的默认资源限值。

scannerV4.db.resources.requests

使用此参数覆盖 Scanner V4 DB 的默认资源请求。

scannerV4.db.persistence.persistentVolumeClaim.claimName

为 Scanner V4 管理持久性数据的 PVC 名称。如果没有具有指定名称的 PVC,则会创建它。如果没有设置,则默认值为 scanner-v4-db。要防止数据丢失,当删除 Central 时,PVC 不会被自动删除。

scannerV4.indexer.nodeSelector

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

scannerV4.indexer.tolerations

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

scannerV4.indexer.resources.limits

使用此参数覆盖 Scanner V4 Indexer 的默认资源限值。

scannerV4.indexer.resources.requests

使用此参数覆盖 Scanner V4 Indexer 的默认资源请求。

scannerV4.indexer.scaling.autoScaling

启用后,Scanner V4 Indexer 副本的数量会根据指定的限值来动态管理。

scannerV4.indexer.scaling.maxReplicas

指定 Scanner V4 Indexer 自动扩展配置中使用的最大副本。

scannerV4.indexer.scaling.minReplicas

指定 Scanner V4 Indexer 自动扩展配置中使用的最小副本。

scannerV4.indexer.scaling.replicas

当 Scanner V4 Indexer 禁用自动扩展时,副本数始终配置为与这个值匹配。

scannerV4.monitoring.exposeEndpoint

为 Scanner V4 配置监控端点。监控端点允许其他服务从与 Prometheus 兼容的格式提供的 Scanner V4 收集指标。使用 Enabled 来公开监控端点。当您启用监控时,RHACS 创建一个新的服务,监控,带有端口 9090,以及一个允许入站到端口的网络策略。默认情况下不启用。

scannerV4.scannerComponent

启用 Scanner V4。有效值为:

* 默认: Scanner V4 没有被启用且没有部署。

* AutoSense: 如果 Central 存在于同一命名空间中,则不会部署 Scanner V4,并使用 Central 安装的现有 Scanner V4。如果此命名空间中没有 Central,则会部署 Scanner V4。

* disabled: 不部署 Scanner V4。

4.5.1.4. 镜像配置

在使用自定义 registry 时使用镜像配置设置。

参数Description

imagePullSecrets.name

拉取镜像时考虑的其他镜像 pull secret。

4.5.1.5. 针对每个节点的设置

针对每个节点的设置为在集群中的节点上运行的组件定义了一组配置设置,用于保护集群的安全。这些组件是 Collector 和 Compliance。

参数Description

perNode.collector.collection

系统级数据收集的方法。默认值为 CORE_BPF。红帽建议将 CORE_BPF 用于数据收集。如果您选择 NoCollection,Collector 不会报告任何有关网络活动的信息,以及进程执行。可用选项包括 NoCollectionCORE_BPFEBPF 选项仅适用于版本 4.4 及更早版本。

perNode.collector.imageFlavor

用于 Collector 的镜像类型。您可以将它指定为 RegularSlim。这个值已弃用。常规Slim 镜像是相同的。

perNode.collector.resources.limits

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

perNode.collector.resources.requests

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

perNode.compliance.resources.requests

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

perNode.compliance.resources.limits

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

perNode.taintToleration

为确保集群活动的全面监控,Red Hat Advanced Cluster Security for Kubernetes 会在集群中的每个节点上运行服务,包括污点节点。如果您不希望此行为,将此参数设置为 AvoidTaints。默认值为 TolerateTaints

4.5.1.6. Sensor 配置

此配置定义了 Sensor 组件的设置,该组件的设置在集群的一个节点上运行。

参数Description

sensor.nodeSelector

如果您希望 Sensor 仅在特定节点上运行,您可以配置节点选择器。

sensor.tolerations

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

sensor.hostAliases

使用此参数将主机和 IP 地址注入 pod 的主机文件中。

sensor.resources.limits

使用这个参数覆盖 Sensor 的默认资源限值。

sensor.resources.requests

使用这个参数覆盖 Sensor 的默认资源请求。

4.5.1.7. 常规设置和各种设置

参数描述

customize.annotations

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

customize.envVars

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

egress.connectivityPolicy

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

misc.createSCCs

把它设置为 true,以便为 Central 创建 SCC。它可能会在某些环境中出现问题。

network.policies

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

警告

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

overlays

请参阅"使用带有 overlays 的 Operator 自定义安装"。

tls.additionalCAs

安全集群的其他可信 CA 证书。这些证书在使用私有证书颁发机构与服务集成时使用。

4.5.2. 使用带有 overlay 的 Operator 自定义安装

了解如何使用带有 overlay 的 Operator 方法定制 RHACS 安装。

4.5.2.1. overlays

CentralSecuredCluster 自定义资源不公开某些低级别配置选项时,您可以使用 .spec.overlays 字段进行调整。使用此字段修改由这些自定义资源生成的 Kubernetes 资源。

.spec.overlays 字段包含一系列补丁,按列出的顺序应用。这些补丁由 Operator 在部署到集群前由 Kubernetes 资源进行处理。

警告

CentralSecuredCluster 中的 .spec.overlays 字段允许用户以任意方式修改低级别 Kubernetes 资源。只有在通过 SecuredClusterCentral 自定义资源不可用时,才使用此功能。

.spec.overlays 功能的支持主要受限制,因为它授予对 Kubernetes 资源进行内部化和高度特定修改的能力,这可能会显著地从一个实施到另一个实现。这种定制的定制增加了超越标准使用方案的复杂性,从而难以提供广泛的支持。每个修改都是唯一的,在产品的不同版本和配置中都无法预测地与 Kubernetes 系统交互。这种可变性意味着故障排除和保证这些自定义的稳定性需要一定程度的专业知识和理解,特定于每个个人设置。因此,虽然此功能可以支持定制 Kubernetes 资源来满足精确的需求,但必须假定为确保配置的兼容性和稳定性,特别是在升级或更改底层产品的过程中。

以下示例显示了覆盖的结构:

overlays:
- apiVersion: v1     1
  kind: ConfigMap    2
  name: my-configmap 3
  patches:
    - path: .data    4
      value: |       5
        key1: data2
        key2: data2
1
targeted Kubernetes 资源 ApiVersion,如 apps/v1v1networking.k8s.io/v1
2
资源类型(如 Deployment、ConfigMap、NetworkPolicy)
3
资源名称,如 my-configmap
4
对字段的 jsonpath 表达式,如 spec.template.spec.containers[name:central].env[-1]
5
新字段值的 YAML 字符串
4.5.2.1.1. 添加覆盖

对于自定义,您可以在 CentralSecuredCluster 自定义资源中添加覆盖。使用 OpenShift CLI (oc)或 OpenShift Container Platform Web 控制台进行修改。

如果覆盖没有按预期工作,请检查 RHACS Operator 日志是否有语法错误或问题记录。

4.5.2.2. 覆盖示例

4.5.2.2.1. 为 Central ServiceAccount 指定 EKS pod 角色 ARN

中央 ServiceAccount 添加 Amazon Elastic Kubernetes Service (EKS) pod 角色 Amazon Resource Name (ARN)注解,如下例所示:

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
  # ...
  overlays:
  - apiVersion: v1
    kind: ServiceAccount
    name: central
    patches:
      - path: metadata.annotations.eks\.amazonaws\.com/role-arn
        value: "\"arn:aws:iam:1234:role\""
4.5.2.2.2. 将环境变量注入到中央部署中

将环境变量注入 中央 部署中,如下例所示:

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
  # ...
  overlays:
  - apiVersion: apps/v1
    kind: Deployment
    name: central
    patches:
    - path: spec.template.spec.containers[name:central].env[-1]
      value: |
        name: MY_ENV_VAR
        value: value
4.5.2.2.3. 使用入口规则扩展网络策略

为端口 999 流量在 allow-ext-to-central 网络策略中添加入站规则,如下例所示:

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
    # ...
    overlays:
    - apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      name: allow-ext-to-central
      patches:
        - path: spec.ingress[-1]
          value: |
            ports:
            - port: 999
              protocol: TCP
4.5.2.2.4. 修改 ConfigMap 数据

修改 central-endpoints ConfigMap 数据,如下例所示:

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
    # ...
    overlays:
    - apiVersion: v1
      kind: ConfigMap
      name: central-endpoints
      patches:
      - path: data
        value: |
          endpoints.yaml: |
            disableDefault: false
4.5.2.2.5. 将容器添加到 中央 部署中

中央 部署中添加新容器,如下例所示:

apiVersion: platform.stackrox.io
kind: Central
metadata:
  name: central
spec:
    # ...
    overlays:
    - apiVersion: apps/v1
      kind: Deployment
      name: central
      patches:
        - path: spec.template.spec.containers[-1]
      value: |
        name: nginx
        image: nginx
        ports:
          - containerPort: 8000
            name: http
            protocol: TCP
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.