配置


Red Hat Advanced Cluster Security for Kubernetes 3.70

为 Kubernetes 配置 Red Hat Advanced Cluster Security

摘要

本文档论述了如何执行常见配置任务,包括配置证书、自动升级和代理设置。它还包括启用监控和日志记录的信息。

第 1 章 添加自定义证书

了解如何将自定义 TLS 证书与 Red Hat Advanced Cluster Security for Kubernetes 搭配使用。设置证书后,用户和 API 客户端在连接到 Central 时无需绕过证书安全警告。

1.1. 添加自定义安全证书

您可以在安装过程中或现有 Red Hat Advanced Cluster Security for Kubernetes 部署应用安全证书。

1.1.1. 添加自定义证书的先决条件

先决条件

  • 您必须已经有 PEM 编码的私钥和证书文件。
  • 证书文件应当以可读的块开头和结尾。例如:

    -----BEGIN CERTIFICATE-----
    MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
    ...
    l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
    -----END CERTIFICATE-----
    Copy to Clipboard Toggle word wrap
  • 证书文件可以包含单一(leaf)证书,也可以是证书链。

    警告
    • 如果证书不直接由可信 root 签名,则必须提供完整的证书链,包括任何中间证书。
    • 链中的所有证书都必须按顺序排列,因此 leaf certificate 是第一个证书,root 证书是链中的最后一个。
  • 如果您使用不全局信任的自定义证书,还必须将 Sensor 配置为信任您的自定义证书。

1.1.2. 在新安装过程中添加自定义证书

流程

  • 如果要使用 Helm 安装 Red Hat Advanced Cluster Security for Kubernetes:

    1. values-private.yaml 文件中添加自定义证书及其密钥:

      central:
        # Configure a default TLS certificate (public cert + private key) for central
        defaultTLS:
          cert: |
            -----BEGIN CERTIFICATE-----
            EXAMPLE!MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
            ...
            -----END CERTIFICATE-----
          key: |
            -----BEGIN EC PRIVATE KEY-----
            EXAMPLE!MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
            ...
            -----END EC PRIVATE KEY-----
      Copy to Clipboard Toggle word wrap
    2. 在安装过程中提供配置文件:

      $ helm install -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f values-private.yaml
      Copy to Clipboard Toggle word wrap
  • 如果您要使用 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes,请在运行安装程序时提供证书和密钥文件:

    • 对于非互动安装程序,使用 --default-tls-cert--default-tls-key 选项:

      $ roxctl central generate --default-tls-cert "cert.pem" --default-tls-key "key.pem"
      Copy to Clipboard Toggle word wrap
    • 对于交互式安装程序,在输入提示答案时提供证书和密钥文件:

      ...
      Enter PEM cert bundle file (optional): <cert.pem>
      Enter PEM private key file (optional): <key.pem>
      Enter administrator password (default: autogenerated):
      Enter orchestrator (k8s, openshift): openshift
      ...
      Copy to Clipboard Toggle word wrap

1.1.3. 为现有实例添加自定义证书

流程

  • 如果使用 Helm 安装 Red Hat Advanced Cluster Security for Kubernetes:

    1. values-private.yaml 文件中添加自定义证书及其密钥:

      central:
        # Configure a default TLS certificate (public cert + private key) for central
        defaultTLS:
          cert: |
            -----BEGIN CERTIFICATE-----
            EXAMPLE!MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
            ...
            -----END CERTIFICATE-----
          key: |
            -----BEGIN EC PRIVATE KEY-----
            EXAMPLE!MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
            ...
            -----END EC PRIVATE KEY-----
      Copy to Clipboard Toggle word wrap
    2. 使用 helm upgrade 命令并提供更新的配置文件:

      $ helm upgrade -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f values-private.yaml
      Copy to Clipboard Toggle word wrap
  • 如果使用 roxctl CLI 安装了 Red Hat Advanced Cluster Security for Kubernetes:

    • 从 PEM 编码的密钥和证书文件创建并应用 TLS secret:

      $ oc -n stackrox create secret tls central-default-tls-cert \
        --cert <server_cert.pem> \
        --key <server_key.pem> \
        --dry-run -o yaml | oc apply -f -
      Copy to Clipboard Toggle word wrap

      运行此命令后,Central 会自动应用新的密钥和证书,而无需重启 pod。传播更改最多可能需要一分钟。

1.1.4. 为现有实例更新自定义证书

如果您将自定义证书用于 Central,您可以执行以下步骤来更新证书。

流程

  1. 删除现有的自定义证书的 secret:

    $ oc delete secret central-default-tls-cert
    Copy to Clipboard Toggle word wrap
  2. 创建新 secret:

    $ oc -n stackrox create secret tls central-default-tls-cert \
      --cert <server_cert.pem> \
      --key <server_key.pem> \
      --dry-run -o yaml | oc apply -f -
    Copy to Clipboard Toggle word wrap
  3. 重启 Central 容器。
1.1.4.1. 重启 Central 容器

您可以通过终止 Central 容器或删除 Central pod 重启 Central 容器。

流程

  • 运行以下命令以终止 Central 容器:

    注意

    您必须等待至少 1 分钟,直到 OpenShift Container Platform 传播您的更改并重启 Central 容器。

    $ oc -n stackrox exec deploy/central -c central -- kill 1
    Copy to Clipboard Toggle word wrap
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central
    Copy to Clipboard Toggle word wrap

1.2. 配置 Sensor 以信任自定义证书

如果您使用不全局信任的自定义证书,您必须将 Sensor 配置为信任您的自定义证书。否则,您可能会收到错误。特定类型的错误可能因您的设置以及您使用的证书而有所不同。通常,它是一个 x509 验证 相关错误。

注意

如果您使用全局可信证书,则不需要将 Sensor 配置为信任您的自定义证书。

1.2.1. 下载传感器捆绑包

Sensor 捆绑包包括安装 Sensor 所需的配置文件和脚本。您可以从 RHACS 门户下载 Sensor 捆绑包。

流程

  1. 进入 RHACS 门户。
  2. 进入 Platform ConfigurationClusters
  3. New Cluster 并指定集群的名称。
  4. 如果您要在同一集群中部署 Sensor,请接受所有字段的默认值。否则,如果您部署到另一个集群,将地址 central.stackrox.svc:443 替换为负载均衡器、节点端口或其他地址(包括端口号),可以从您要安装的其他集群访问。

    注意

    如果您使用一个支持非gRPC 的负载均衡器,如 HAProxy、AWS Application Load Balancer(ALB)或 AWS Elastic Load Balancing(ELB)使用 WebSocket Secure(wss)协议。使用 ws

    1. 使用 wss:// 和前缀
    2. 在地址后添加端口号,例如 ws://stackrox-central.example.com:443
  5. Next 继续。
  6. Download YAML File and Keys

先决条件

  • 您已下载 Sensor 捆绑包。

流程

  • 如果您使用 sensor.sh 脚本:

    1. 解压 Sensor 捆绑包:

      $ unzip -d sensor sensor-<cluster_name>.zip
      Copy to Clipboard Toggle word wrap
    2. 运行 sensor.sh 脚本:

      $ ./sensor/sensor.sh
      Copy to Clipboard Toggle word wrap

      当您运行传感器(./sensor/sensor/sensor.sh)脚本时,证书会被自动应用。在运行 sensor.sh 脚本前,您还可以将额外的自定义证书放在 sensor/additional-cas/ 目录中。

  • 如果您不使用 sensor.sh 脚本:

    1. 解压 Sensor 捆绑包:

      $ unzip -d sensor sensor-<cluster_name>.zip
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令来创建 secret:

      $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ 
      1
      Copy to Clipboard Toggle word wrap
      1
      使用 -d 选项指定包含自定义证书的目录。
      注意

      如果得到 "secret already exists" 错误消息,请使用 -u 选项重新运行脚本:

      $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
      Copy to Clipboard Toggle word wrap
    3. 使用 YAML 文件继续 Sensor 部署。

1.2.3. 配置现有 Sensor 信任自定义证书

先决条件

  • 您已下载 Sensor 捆绑包。

流程

  1. 解压 Sensor 捆绑包:

    $ unzip -d sensor sensor-<cluster_name>.zip
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建 secret:

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ 
    1
    Copy to Clipboard Toggle word wrap
    1
    使用 -d 选项指定包含自定义证书的目录。
    注意

    如果得到 "secret already exists" 错误消息,请使用 -u 选项重新运行脚本:

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
    Copy to Clipboard Toggle word wrap
  3. 使用 YAML 文件继续 Sensor 部署。

如果将证书添加到现有的传感器中,您必须重启 Sensor 容器。

1.2.3.1. 重启 Sensor 容器

您可以通过终止容器或删除 Sensor pod 来重启 Sensor 容器。

流程

  • 运行以下命令以终止 Sensor 容器:

    注意

    您必须等待 1 分钟,直到 OpenShift Container Platform 或 Kubernetes 传播您的更改并重启 Sensor 容器。

    • 在 OpenShift Container Platform 中:

      $ oc -n stackrox deploy/sensor -c sensor -- kill 1
      Copy to Clipboard Toggle word wrap
    • 对于 Kubernetes:

      $ kubectl -n stackrox deploy/sensor -c sensor -- kill 1
      Copy to Clipboard Toggle word wrap
  • 或者,运行以下命令来删除 Sensor pod:

    • 在 OpenShift Container Platform 中:

      $ oc -n stackrox delete pod -lapp=sensor
      Copy to Clipboard Toggle word wrap
    • 对于 Kubernetes:

      $ kubectl -n stackrox delete pod -lapp=sensor
      Copy to Clipboard Toggle word wrap

第 2 章 添加可信证书颁发机构

了解如何将自定义可信证书颁发机构添加到 Red Hat Advanced Cluster Security for Kubernetes 中。

如果您在网络或自签名证书中使用企业证书颁发机构(CA),您必须将 CA 的 root 证书作为可信根 CA 添加到 Red Hat Advanced Cluster Security for Kubernetes。

添加可信根 CA 允许:

  • 与其他工具集成时,用于信任远程服务器的中央和扫描器。
  • 信任用于中部的自定义证书。

您可以在安装过程中或现有部署中添加其他 CA。

注意

您必须首先在部署了 Central 的集群中配置可信 CA,然后将更改传播到 Scanner 和 Sensor。

2.1. 配置其他 CA

添加自定义 CA:

流程

  1. 下载 ca-setup.sh 脚本。

    注意
    • 如果要进行新安装,您可以在 central- bundle/central/ scripts / ca-setup.sh 脚本中找到 scripts 目录中的 ca-setup.sh 脚本。
    • 您必须在登录 OpenShift Container Platform 集群的同一终端中运行 ca-setup.sh 脚本。
  2. 使 ca-setup.sh 脚本可执行:

    $ chmod +x ca-setup.sh
    Copy to Clipboard Toggle word wrap
  3. 添加:

    1. 单个证书,使用 -f (文件)选项:

      $ ./ca-setup.sh -f <certificate>
      Copy to Clipboard Toggle word wrap
      注意
      • 您必须使用 PEM 编码的证书文件(使用任何扩展)。
      • 您还可以使用 -u (更新)选项以及 -f 选项来更新之前添加的任何证书。
    2. 一次性多个证书,移动一个目录中的所有证书,然后使用 -d (目录)选项:

      $ ./ca-setup.sh -d <directory_name>
      Copy to Clipboard Toggle word wrap
      注意
      • 您必须使用带有 .crt 扩展名的 PEM 编码证书文件。
      • 每个文件必须仅包含单个证书。
      • 您还可以使用 -u (更新)选项以及 -d 选项来更新之前添加的任何证书。

2.2. 传播更改

配置可信 CA 后,您必须使 Red Hat Advanced Cluster Security for Kubernetes 服务信任它们。

  • 如果您在安装后配置了可信 CA,则必须重启 Central。
  • 另外,如果您还添加了与镜像 registry 集成的证书,您必须重启 Central 和 Scanner。

2.2.1. 重启 Central 容器

您可以通过终止 Central 容器或删除 Central pod 重启 Central 容器。

流程

  • 运行以下命令以终止 Central 容器:

    注意

    您必须等待至少 1 分钟,直到 OpenShift Container Platform 传播您的更改并重启 Central 容器。

    $ oc -n stackrox exec deploy/central -c central -- kill 1
    Copy to Clipboard Toggle word wrap
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central
    Copy to Clipboard Toggle word wrap

2.2.2. 重启 Scanner 容器

您可以通过删除 pod 来重启 Scanner 容器。

流程

  • 运行以下命令以删除 Scanner pod:

    • 在 OpenShift Container Platform 中:

      $ oc delete pod -n stackrox -l app=scanner
      Copy to Clipboard Toggle word wrap
    • 对于 Kubernetes:

      $ kubectl delete pod -n stackrox -l app=scanner
      Copy to Clipboard Toggle word wrap
重要

添加可信 CA 和配置中心后,该 CA 包含在您创建的任何新的 Sensor 部署捆绑包中。

  • 如果在连接到中央时现有 Sensor 报告问题,您必须生成一个 Sensor 部署 YAML 文件并更新现有集群。
  • 如果您要使用 sensor.sh 脚本部署新的 Sensor,请在运行 sensor.sh 脚本前运行以下命令:

    $ ./ca-setup-sensor.sh -d ./additional-cas/
    Copy to Clipboard Toggle word wrap
  • 如果要使用 Helm 部署新的 Sensor,则不需要运行任何其他脚本。

第 3 章 缓解内部证书

Red Hat Advanced Cluster Security for Kubernetes 的每个组件使用 X.509 证书来向其他组件验证自己。这些证书具有过期日期,必须在其过期前重新发布它们。您可以在 RHACS 门户的 Platform ConfigurationClusters 视图中查看证书过期日期。

3.1. 缓解 Central 的内部证书

中央使用内置服务器证书以在与其他 Red Hat Advanced Cluster Security for Kubernetes 服务通信时进行身份验证。此证书与您的中央安装是唯一的。RHACS 门户在中央证书即将过期时显示信息横幅。

注意

信息横幅仅显示证书到期日期前 15 天。

先决条件

  • 要重新发出证书,必须具有 ServiceIdentity 资源 的写入权限

流程

  1. 点击横幅链接下载 YAML 配置文件,该文件包含一个新的 OpenShift Container Platform secret,包括证书和密钥值。
  2. 将新的 YAML 配置文件应用到已安装 Central 的集群。

    $ oc apply -f <secret_file.yaml>
    Copy to Clipboard Toggle word wrap
  3. 重启 Central 以应用更改。

3.1.1. 重启 Central 容器

您可以通过终止 Central 容器或删除 Central pod 重启 Central 容器。

流程

  • 运行以下命令以终止 Central 容器:

    注意

    您必须等待至少 1 分钟,直到 OpenShift Container Platform 传播您的更改并重启 Central 容器。

    $ oc -n stackrox exec deploy/central -c central -- kill 1
    Copy to Clipboard Toggle word wrap
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central
    Copy to Clipboard Toggle word wrap

3.2. 为扫描器返回内部证书

扫描程序具有一个内置证书,用于与中央通信。

RHACS 门户在 Scanner 证书即将过期时显示信息横幅。

注意

信息横幅仅显示证书到期日期前 15 天。

先决条件

  • 要重新发出证书,必须具有 ServiceIdentity 资源 的写入权限

流程

  1. 点击横幅链接下载 YAML 配置文件,该文件包含一个新的 OpenShift Container Platform secret,包括证书和密钥值。
  2. 将新的 YAML 配置文件应用到安装 Scanner 的集群。

    $ oc apply -f <secret_file.yaml>
    Copy to Clipboard Toggle word wrap
  3. 重启扫描器以应用更改。

3.2.1. 重启 Scanner 和 Scanner DB 容器

您可以通过删除 pod 来重启 Scanner 和 Scanner DB 容器。

流程

  • 要删除 Scanner 和 Scanner DB pod,请运行以下命令:

    • 在 OpenShift Container Platform 中:

      $ oc delete pod -n stackrox -l app=scanner; oc -n stackrox delete pod -l app=scanner-db
      Copy to Clipboard Toggle word wrap
    • 对于 Kubernetes:

      $ kubectl delete pod -n stackrox -l app=scanner; kubectl -n stackrox delete pod -l app=scanner-db
      Copy to Clipboard Toggle word wrap

sensor、Collector 和 Admission Controller 使用证书相互通信,并与 Central 进行通信。

要替换证书,请使用以下方法之一:

  • 在安全集群中创建、下载和安装 init 捆绑包。
  • 使用自动升级功能。自动执行升级仅适用于使用 roxctl CLI 的静态清单部署。

安全的集群包含 Collector、Sensor 和 Admission Control 组件。这些组件在与其他 Red Hat Advanced Cluster Security for Kubernetes 组件通信时,使用内置的服务器证书进行验证。

RHACS 门户在中央证书即将过期时显示信息横幅。

注意

信息横幅仅显示证书到期日期前 15 天。

先决条件

  • 要重新发出证书,必须具有 ServiceIdentity 资源 的写入权限
重要

安全地存储此捆绑包,因为它包含 secret。您可以在多个安全集群中使用相同的捆绑包。

流程

  • 使用 RHACS 门户生成 init 捆绑包:

    1. 选择 Platform ConfigurationClusters
    2. 单击 Manage Tokens
    3. 导航到 Authentication Tokens 部分,再单击 Cluster Init Bundle
    4. 点击 Generate bundle
    5. 为集群 init 捆绑包输入一个名称并点 Generate
    6. 要下载生成的捆绑包,请点击 Download Kubernetes secrets file
  • 要使用 roxctl CLI 生成 init 捆绑包,请运行以下命令:

    $ roxctl -e <endpoint> -p <admin_password> central init-bundle generate <bundle_name> --output-secrets init-bundle.yaml
    Copy to Clipboard Toggle word wrap

后续步骤

  • 要在每个安全集群中创建必要的资源,请运行以下命令:

    $ oc -n stackrox apply -f <init-bundle.yaml>
    Copy to Clipboard Toggle word wrap

3.3.2. 使用自动升级为安全集群提供内部证书

您可以使用自动升级为 Sensor、Collector 和 Admission Controller 重新发布内部证书。

注意

自动升级仅适用于使用 roxctl CLI 基于静态清单的部署。请参阅安装一章中的"安装中心"一节中的" 安装中心 "。

先决条件

  • 您必须为所有集群启用自动升级。
  • 要重新发出证书,必须具有 ServiceIdentity 资源 的写入权限

流程

  1. 在 RHACS 门户,导航到 Platform ConfigurationClusters
  2. Clusters 视图中,选择一个 Cluster 以查看其详情。
  3. 在集群详情面板中,使用自动升级选择到应用凭证 的链接。
注意

应用自动升级时,Red Hat Advanced Cluster Security for Kubernetes 在所选集群中创建新凭证。但是,您仍然会看到一个通知。当每个 Red Hat Advanced Cluster Security for Kubernetes 服务在服务重启后使用新凭证时,通知会生效。

第 4 章 添加安全通知

使用 Red Hat Advanced Cluster Security for Kubernetes,您可以添加安全通知用户登录时看到它们。您还可以在 RHACS 门户顶部或末尾设置机构范围内消息或不声明者。

此消息可以提醒企业政策,并通知员工相应策略。或者,您可能想出于法律原因显示这些消息,例如,警告用户对其操作的审计。

4.1. 添加自定义登录信息

在登录警告或未格式的用户显示其操作结果前会显示警告信息。

先决条件

  • 您必须具有 具有读取权限Config 角色,才能查看登录消息配置选项。
  • 您必须具有具有修改、启用或禁用登录信息的带 写权限Config 角色。

流程

  1. 在 RHACS 门户网站中,导航至 Platform ConfigurationSystem Configuration
  2. System Configuration 视图标头中点击 Edit
  3. Login Configuration 部分输入您的登录信息。
  4. 要启用登录信息,在 Login Configuration 部分打开切换。
  5. 点击 Save

第 5 章 启用离线模式

您可以通过启用离线模式,将 Red Hat Advanced Cluster Security for Kubernetes 用于没有连接到互联网的集群。在离线模式下,Red Hat Advanced Cluster Security for Kubernetes 组件无法连接到互联网上的地址或主机。

注意

Red Hat Advanced Cluster Security for Kubernetes 不会确定用户提供的主机名、IP 地址或其他资源是否在互联网上。例如,如果您尝试与互联网上托管的 Docker registry 集成,Red Hat Advanced Cluster Security for Kubernetes 不会阻断这个请求。

以离线模式部署和操作 Red Hat Advanced Cluster Security for Kubernetes:

  1. 下载 RHACS 镜像并在您的集群中安装它们。如果使用 OpenShift Container Platform,您可以使用 Operator Lifecycle Manager(OLM) 和 OperatorHub 将镜像下载到连接到互联网的工作站。然后,工作站会将镜像推送到已连接的安全集群的镜像 registry 中。对于其他平台,您可以使用 Skopeo 或 Docker 等程序从远程 registry 中拉取镜像并将其推送到您自己的私有注册表,如 直接下载镜像 中所述。
  2. 在安装过程中启用离线模式。
  3. (可选)通过上传新的定义文件,Routinely 更新 Scanner 的漏洞列表。
  4. (可选)当需要时,通过上传新的内核支持软件包在更多内核版本中添加对运行时集合的支持。
重要

您只能在安装过程中启用离线模式,而不在升级过程中启用。

5.1. 下载镜像以供离线使用

5.1.1. 直接下载镜像

您可以手动拉取、重新标记并将 Red Hat Advanced Cluster Security for Kubernetes 镜像推送到 registry。镜像捆绑包当前版本的镜像有:

  • registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.70.2
  • registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:3.70.2
  • registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:3.70.2
  • registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:3.70.2
  • registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:3.70.2
5.1.1.1. 重新标记镜像

您可以使用 Docker 命令行界面下载和重新标记镜像。

重要

在重新标记镜像时,您必须维护镜像的名称和标签。例如,使用:

$ docker tag registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.70.2 <your_registry>/rhacs-main-rhel8:3.70.2
Copy to Clipboard Toggle word wrap

和不要像以下示例一样重新标记:

$ docker tag registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.70.2 <your_registry>/other-name:latest
Copy to Clipboard Toggle word wrap

流程

  1. 登录到 registry:

    $ docker login registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. 拉取镜像:

    $ docker pull <image>
    Copy to Clipboard Toggle word wrap
  3. 重新标记镜像:

    $ docker tag <image> <new_image>
    Copy to Clipboard Toggle word wrap
  4. 将更新的镜像推送到 registry:

    $ docker push <new_image>
    Copy to Clipboard Toggle word wrap

5.2. 在安装过程中启用离线模式

您可在安装 Red Hat Advanced Cluster Security for Kubernetes 的过程中启用离线模式。

5.2.1. 使用 Helm 配置启用离线模式

当您在安装过程中使用 Helm chart 安装 Red Hat Advanced Cluster Security for Kubernetes 时,您可以启用离线模式。

流程

  1. 安装 central-services Helm chart 时,在 values-public.yaml 配置文件中将 env.offlineMode 环境变量的值设置为 true
  2. 安装 secure-cluster-services Helm Chart 时,在 values-public.yaml 配置文件中将 config.offlineMode 参数的值设置为 true

5.2.2. 使用 roxctl CLI 启用离线模式

当您使用 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes 时,您可以启用离线模式。

流程

  1. 如果您使用默认互联网连接的 registry 以外的 registry(registry.redhat.io),在回答 镜像以使用 提示时提供推送 Red Hat Advanced Cluster Security for Kubernetes 镜像的位置:

    Enter main image to use (if unset, the default will be used): <your_registry>/rhacs-main-rhel8:3.70.2
    Copy to Clipboard Toggle word wrap
    注意

    默认镜像取决于您的提示 Enter 默认容器镜像设置的回答:如果您输入 rhacs,则默认镜像为 registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.70.2

    Enter Scanner DB image to use (if unset, the default will be used): <your_registry>/rhacs-scanner-db-rhel8:3.70.2
    Copy to Clipboard Toggle word wrap
    Enter Scanner image to use (if unset, the default will be used): <your_registry>/rhacs-scanner-rhel8:3.70.2
    Copy to Clipboard Toggle word wrap
  2. 要启用离线模式,在回答 Enter 时输入 true,以在离线模式下运行 StackRox:

    Enter whether to run StackRox in offline mode, which avoids reaching out to the internet (default: "false"): true
    Copy to Clipboard Toggle word wrap
  3. 之后,当您在 RHACS 门户的 Platform ConfigurationClusters 视图中将 Sensor 添加到远程集群中时,您必须在 Collector Image Repository 字段中指定 Collector 镜像名称。

5.3. 在离线模式下更新 Scanner 定义

扫描程序包含本地漏洞定义数据库。当 Red Hat Advanced Cluster Security for Kubernetes 以常规模式运行(连接到互联网)时,Scanner 从互联网获取一个新的漏洞定义,并更新其数据库。

但是,当您以离线模式使用 Red Hat Advanced Cluster Security for Kubernetes 时,您必须手动更新扫描器定义,方法是将其上传到 Central。

当 Red Hat Advanced Cluster Security for Kubernetes 以离线模式运行时,Scanner 会检查来自 Central 的新定义。如果有新定义,则 Scanner 从 Central 下载新定义,将其标记为默认值,然后使用更新的定义来扫描镜像。

在离线模式中更新定义:

  1. 下载定义。
  2. 将定义上传到 Central。

5.3.1. 下载扫描器定义

如果您以离线模式运行 Red Hat Advanced Cluster Security for Kubernetes,您可以下载 Scanner 使用的漏洞定义数据库,然后将其上传到 Central。

先决条件

  • 要下载扫描器定义,您需要有连入互联网的系统。

5.3.2. 将定义上传到中央

要将 Scanner 定义上传到 Central,您可以使用 API 令牌或管理员密码。红帽建议在生产环境中使用身份验证令牌,因为每个令牌被分配了特定的访问控制权限。

5.3.2.1. 使用 API 令牌将定义上传到中

您可以使用 API 令牌上传 Scanner 用于中的漏洞定义数据库。

先决条件

  • 您必须具有具有管理员角色的 API 令牌。
  • 已安装 roxctl 命令行界面(CLI)。

流程

  1. 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_API_TOKEN=<api_token>
    Copy to Clipboard Toggle word wrap
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来上传定义文件:

    $ roxctl scanner upload-db \
      -e "$ROX_CENTRAL_ADDRESS" \
      --scanner-db-file=<compressed_scanner_definitions.zip>
    Copy to Clipboard Toggle word wrap
5.3.2.2. 使用管理员密码将定义上传到中

您可以使用 Red Hat Advanced Cluster Security for Kubernetes 管理员密码将 Scanner 使用的漏洞定义数据库上传到 Central。

先决条件

  • 您必须具有管理员密码。
  • 已安装 roxctl 命令行界面(CLI)。

流程

  1. 设置 ROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来上传定义文件:

    $ roxctl scanner upload-db \
      -p <your_administrator_password> \
      -e "$ROX_CENTRAL_ADDRESS" \
      --scanner-db-file=<compressed_scanner_definitions.zip>
    Copy to Clipboard Toggle word wrap

5.4. 更新内核支持离线模式的软件包

收集器会监控安全集群中每个节点的运行时活动。要监控活动,Collector 需要探测。这些探测是特定于主机上安装的 Linux 内核版本的内核模块或 eBPF 程序。Collector 镜像包含一组内置探测。

当 Red Hat Advanced Cluster Security for Kubernetes 以常规模式运行(连接到互联网)时,如果所需的探测没有构建,则 Collector 会自动下载新的探测。

在离线模式下,您可以手动下载所有最新和支持的 Linux 内核版本包含探测的软件包,并将其上传到 Central。然后收集器从中央下载这些探测。

收集器会按照以下顺序检查新的探测。它检查:

  1. 现有 Collector 镜像。
  2. 内核支持软件包(如果您已上传一个到中)。
  3. 互联网上可用的红帽操作服务器。Collector 使用中央的网络连接来检查并下载探测。

如果 Collector 在检查后没有获得新的探测,它会报告 CrashLoopBackoff 事件。

如果您的网络配置限制了出站流量,您可以手动下载包含所有最新支持的 Linux 内核版本的探测的软件包,并将它们上传到 Central。然后收集器从中央下载这些探测,从而避免任何出站互联网访问。

5.4.1. 下载内核支持软件包

如果您以离线模式运行 Red Hat Advanced Cluster Security for Kubernetes,您可以下载包含所有最新和支持的 Linux 内核版本的探测的软件包,然后将其上传到 Central。

流程

5.4.2. 将内核支持软件包上传到 Central

您可以将包含所有最新支持的 Linux 内核版本及支持的 Linux 内核版本的内核支持软件包上传到 Central。

先决条件

  • 您必须具有具有管理员角色的 API 令牌。
  • 已安装 roxctl 命令行界面(CLI)。

流程

  1. 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

    $ export ROX_API_TOKEN=<api_token>
    Copy to Clipboard Toggle word wrap
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来上传内核支持软件包:

    $ roxctl collector support-packages upload <package_file> \
      -e "$ROX_CENTRAL_ADDRESS"
    Copy to Clipboard Toggle word wrap
注意
  • 当您上传包含之前上传到中心的内容的新支持软件包时,只会上传新文件。
  • 当您上传一个新支持软件包,其中包含名称相同的名称但与 Central 上存在的内容不同的文件时,roxctl 会显示一个警告信息,且不会覆盖文件。

    • 您可以将 --overwrite 选项与 upload 命令一起使用来覆盖文件。
  • 当您上传包含所需探测的支持软件包时,中央不会向互联网发出任何出站请求(到互联网)以下载这个探测。中心使用 support 软件包中的探测。

第 6 章 启用警报数据保留

了解如何为 Red Hat Advanced Cluster Security for Kubernetes 警报配置保留周期。

使用 Red Hat Advanced Cluster Security for Kubernetes,您可以配置时间以保持历史警报存储。Red Hat Advanced Cluster Security for Kubernetes 随后会在指定时间后删除旧的警报。

通过自动删除不再需要的警报,您可以节约存储成本。

您可以配置保留周期的警报包括:

  • 运行时警报,以及未解析(active)并解决。
  • 不应用到当前部署的过时的部署时间警报。
注意
  • 数据保留设置会被默认启用。您可在安装后更改这些设置。
  • 当您升级 Red Hat Advanced Cluster Security for Kubernetes 时,除非之前启用了数据保留设置,否则不会应用数据保留设置。
  • 您可以使用 RHACS 门户或 API 配置警报保留设置。
  • 删除的进程每小时运行一次。目前,您无法更改此设置。

6.1. 配置警报数据保留

您可以使用 RHACS 门户配置警报保留设置。

先决条件

  • 您必须具有 具有读写权限 Config 角色来配置数据保留。

流程

  1. 在 RHACS 门户网站中,导航至 Platform ConfigurationSystem Configuration
  2. System Configuration 视图标头中点击 Edit
  3. Data Retention Configuration 项中更新每种数据类型的天数:

    • 所有运行时冲突
    • 已解析 Deploy-Phase Violations
    • 用于删除部署的运行时冲突
    • 镜像没有长部署

      注意

      要永久保存数据类型,请将保留周期设置为 0 天。

  4. 点击 Save
注意

要使用 Red Hat Advanced Cluster Security for Kubernetes API 配置警报数据保留,请参阅 API 参考文档中的 ConfigService 组中的 PutConfig API 和相关的 API。

第 7 章 通过 HTTP 公开 RHACS 门户

启用未加密的 HTTP 服务器,以通过入口控制器、第 7 层负载均衡器、Istio 或其他解决方案公开 RHACS 门户。

如果您使用 ingress 控制器、Istio 或 7 层负载均衡器来首选未加密的 HTTP 后端,您可以配置 Red Hat Advanced Cluster Security for Kubernetes 通过 HTTP 公开 RHACS 门户。这样,RHACS 门户可以通过纯文本后端获得。

重要

要通过 HTTP 公开 RHACS 门户,您必须使用 ingress 控制器、第 7 层负载均衡器或 Istio 来使用 HTTPS 加密外部流量。不安全,使用普通 HTTP 将 RHACS 门户直接公开给外部客户端。

您可以在安装过程中或现有部署通过 HTTP 公开 RHACS 门户。

7.1. 先决条件

  • 要指定 HTTP 端点,必须使用 < endpoints_spec>。它是单个端点规格的逗号分隔列表,格式为 < type>@<addr>:<port>,其中:

    • typegrpchttp。在大多数用例中,把 http 用作类型。对于高级用例,您可以使用 grpc 或者省略其值。如果省略 类型为 的值,您可以在代理中配置两个端点,一个用于 gRPC,另一个用于 HTTP。这两个端点都指向 Central 上的相同公开 HTTP 端口。但是,大多数代理不支持在同一外部端口上同时提供 gRPC 和 HTTP 流量。
    • addr 是要公开的 Central 的 IP 地址。如果您需要一个 HTTP 端点(只能通过端口转发来访问),您可以省略它,或者使用 localhost127.0.0.1
    • 端口 是要公开的 Central 的端口。
    • 以下是几个有效的 < endpoints_spec> 值:

      • 8080
      • http@8080
      • :8081
      • grpc@:8081
      • localhost:8080
      • http@localhost:8080
      • http@8080,grpc@8081
      • 8080, gRPC@:8081, http@0.0.0.0:8082

7.2. 在安装过程中通过 HTTP 公开 RHACS 门户

如果要使用 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes,请使用 --plaintext-endpoints 选项和 roxctl central generate interactive 命令在安装过程中启用 HTTP 服务器。

流程

  • 运行以下命令在互动安装过程中指定 HTTP 端点:

    $ roxctl central generate interactive \
      --plaintext-endpoints=<endpoints_spec> 
    1
    Copy to Clipboard Toggle word wrap
    1
    以 < type>@<addr>:<port&gt; 形式的端点规格。详情请查看先决条件部分。

7.3. 通过 HTTP 公开 RHACS 门户以查找现有部署

您可以在现有 Red Hat Advanced Cluster Security for Kubernetes 部署中启用 HTTP 服务器。

流程

  1. 创建补丁并定义 ROX_PLAINTEXT_ENDPOINTS 环境变量:

    $ CENTRAL_PLAINTEXT_PATCH='
    spec:
      template:
        spec:
          containers:
          - name: central
            env:
            - name: ROX_PLAINTEXT_ENDPOINTS
              value: <endpoints_spec> 
    1
    
    '
    Copy to Clipboard Toggle word wrap
    1
    以 < type>@<addr>:<port&gt; 形式的端点规格。详情请查看先决条件部分。
  2. ROX_PLAINTEXT_ENDPOINTS 环境变量添加到中央部署中:

    $ oc -n stackrox patch deploy/central -p "$CENTRAL_PLAINTEXT_PATCH"
    Copy to Clipboard Toggle word wrap

第 8 章 为安全集群配置自动升级

您可以自动为每个安全集群进行升级过程,并从 RHACS 门户查看升级状态。

自动升级通过自动化升级每个安全集群的手动任务,更易于保持最新状态。

使用自动升级时,在所有受保护的集群中升级 Central、Sensor、Collector 和 Compliance 服务后,会自动升级到最新版本。

Red Hat Advanced Cluster Security for Kubernetes 还允许从 RHACS 门户对所有安全集群的集中管理。新的 Clusters 视图会显示有关所有安全集群、每个集群的 Sensor 版本以及升级状态信息的信息。您还可以使用此视图有选择地升级安全集群或更改其配置。

注意
  • 默认启用自动升级功能。
  • 如果使用私有镜像 registry,您必须首先将 Sensor 和 Collector 镜像推送到私有 registry。
  • Sensor 必须使用默认的 RBAC 权限运行。
  • 自动升级不会保留您在集群中运行任何 Red Hat Advanced Cluster Security for Kubernetes 服务的补丁。但是,它会保留您添加到任何 Red Hat Advanced Cluster Security for Kubernetes 对象的所有标签和注解。
  • 默认情况下,Red Hat Advanced Cluster Security for Kubernetes 在每个安全集群中创建一个名为 sensor-upgrader 的服务帐户。此帐户具有高特权,但仅在升级过程中使用。如果您删除了这个帐户,Sensor 没有足够权限,且必须手动完成以后的升级。

8.1. 启用自动升级

您可以为所有安全集群启用自动升级,将所有安全集群中的 Collector 和 Compliance 服务自动升级到最新的版本。

流程

  1. 在 RHACS 门户,导航到 Platform ConfigurationClusters
  2. 打开 自动升级安全的集群 切换。

    注意

    对于新安装,自动升级安全的集群 切换会被默认启用。

8.2. 禁用自动升级

如果要手动管理安全集群升级,可以禁用自动升级。

流程

  1. 在 RHACS 门户,导航到 Platform ConfigurationClusters
  2. 关闭 自动升级安全的集群 切换。

    注意

    对于新安装,自动升级安全的集群 切换会被默认启用。

8.3. 自动升级状态

Clusters 视图列出了所有集群及其升级状态。

Expand
升级状态描述

使用 Central 版本最新

安全的集群正在运行与 Central 相同的版本。

可用升级

在 Sensor 和 Collector 中提供了新版本。

升级失败。重试升级。

以前的自动升级失败。

需要手动升级

Sensor 和 Collector 版本早于 2.5.29.0 版本。您必须手动升级安全集群。

pre-flight 检查完成

升级正在进行。在执行自动升级前,升级安装程序运行 pre-flight 检查。在 pre-flight 检查过程中,安装程序会验证是否满足某些条件,然后只启动升级过程。

8.4. 自动升级失败

有时,Red Hat Advanced Cluster Security for Kubernetes 自动升级可能无法安装。当升级失败时,安全集群的状态消息将变为 Upgrade failed。重试 upgrade。要查看有关失败的更多信息并了解升级失败的原因,您可以在 Clusters 视图中检查安全集群行。

故障的一些常见原因如下:

  • 由于缺少或不可调度的镜像,sensor-upgrader 部署可能无法运行。
  • pre-flight 检查可能会失败,无论由于 RBAC 权限不足,或者集群状态无法识别。如果您编辑了 Red Hat Advanced Cluster Security for Kubernetes 服务配置或 auto-upgrade.stackrox.io/component 标签,则可能会出现这种情况。
  • 执行升级时可能会有错误。如果发生这种情况,升级安装程序会自动尝试回滚升级。

    注意

    有时,回滚也会失败。对于这种情况,请查看集群日志以识别问题或联系支持。

在识别并修复升级失败的根本原因后,您可以使用 Retry Upgrade 选项升级安全集群。

8.5. 从 RHACS 门户手动升级安全集群

如果您不想启用自动升级,可以使用 Clusters 视图来管理安全集群升级。

手动触发安全集群的升级:

流程

  1. 在 RHACS 门户,导航到 Platform ConfigurationClusters
  2. 选择您要升级的集群 升级状态列中的 Upgrade available 选项。
  3. 要一次升级多个集群,请为您要更新的集群选择 Cluster 列中的复选框。
  4. 单击 Upgrade

第 9 章 为外部网络访问配置代理

如果您的网络配置通过代理限制出站流量,您可以在 Red Hat Advanced Cluster Security for Kubernetes 中配置代理设置,以通过代理路由流量。

当您在 Red Hat Advanced Cluster Security for Kubernetes 中使用代理时:

  • 来自 Central 和 Scanner 的所有传出 HTTP、HTTPS 和其他 TCP 流量都会通过代理。
  • Central 和 Scanner 之间的流量不会通过代理。
  • 代理配置不会影响到其他 Red Hat Advanced Cluster Security for Kubernetes 组件。
  • 当您不使用离线模式时,在安全集群中运行的 Collector 需要在运行时下载额外的内核模块或 eBPF 探测:

    • 收集器会尝试通过联系 Sensor 进行下载。
    • 然后,Sensor 将此请求转发到 Central。
    • 中心使用代理查找模块或探测 https://collector-modules.stackrox.io

9.1. 在现有部署中配置代理

要在现有部署中配置代理,您必须将 proxy-config secret 导出为 YAML 文件,在该文件中更新代理配置并将其上传为 secret。

流程

  1. 将现有的 secret 保存为 YAML 文件:

    $ oc -n stackrox get secret proxy-config \
      -o go-template='{{index .data "config.yaml" | \
      base64decode}}{{"\n"}}' > /tmp/proxy-config.yaml
    Copy to Clipboard Toggle word wrap
  2. 编辑 YAML 配置文件中要修改的字段,如在安装过程中配置代理中指定的字段。
  3. 保存更改后,运行以下命令替换 secret:

    $ oc -n stackrox create secret generic proxy-config \
      --from-file=config.yaml=/tmp/proxy-config.yaml -o yaml --dry-run | \
      oc label -f - --local -o yaml app.kubernetes.io/name=stackrox | \
      oc apply -f -
    Copy to Clipboard Toggle word wrap
    重要
    • 您必须至少等待 1 分钟,直到 OpenShift Container Platform 将更改传播到中央和扫描器。
    • 如果在更改代理配置后看到传出连接有任何问题,您必须重启 Central 和 Scanner pod。

9.2. 在安装过程中配置代理

当您使用 roxctl 命令行界面(CLI)或 Helm 安装 Red Hat Advanced Cluster Security for Kubernetes 时,您可以在安装过程中指定代理配置。

当您使用 roxctl central generate 命令运行安装程序时,安装程序会为您的环境生成 secret 和部署配置文件。您可以通过编辑生成的配置 secret(YAML)文件来配置代理。目前,您无法使用 roxctl CLI 配置代理。配置存储在 Kubernetes secret 中,它由 Central 和 Scanner 共享。

流程

  1. 从部署捆绑包目录打开配置文件 central/proxy-config-secret.yaml

    注意

    如果使用 Helm,则配置文件位于 central/templates/proxy-config-secret.yaml 中。

  2. 在配置文件中编辑您要修改的字段:

    apiVersion: v1
    kind: Secret
    metadata:
      namespace: stackrox
      name: proxy-config
    type: Opaque
    stringData:
      config.yaml: |- 
    1
    
        # # NOTE: Both central and scanner should be restarted if this secret is changed.
        # # While it is possible that some components will pick up the new proxy configuration
        # # without a restart, it cannot be guaranteed that this will apply to every possible
        # # integration etc.
        # url: http://proxy.name:port 
    2
    
        # username: username 
    3
    
        # password: password 
    4
    
        # # If the following value is set to true, the proxy wil NOT be excluded for the default hosts:
        # # - *.stackrox, *.stackrox.svc
        # # - localhost, localhost.localdomain, 127.0.0.0/8, ::1
        # # - *.local
        # omitDefaultExcludes: false
        # excludes:  # hostnames (may include * components) for which you do not 
    5
    
        # # want to use a proxy, like in-cluster repositories.
        # - some.domain
        # # The following configuration sections allow specifying a different proxy to be used for HTTP(S) connections.
        # # If they are omitted, the above configuration is used for HTTP(S) connections as well as TCP connections.
        # # If only the `http` section is given, it will be used for HTTPS connections as well.
        # # Note: in most cases, a single, global proxy configuration is sufficient.
        # http:
        #   url: http://http-proxy.name:port 
    6
    
        #   username: username 
    7
    
        #   password: password 
    8
    
        # https:
        #   url: http://https-proxy.name:port 
    9
    
        #   username: username 
    10
    
        #   password: password 
    11
    Copy to Clipboard Toggle word wrap
    3 4 7 8 10 11
    添加 用户名和密码 是可选的,在 http 和 https 部分的开头和 https 部分。
    2 6 9
    url 选项支持以下 URL 方案:
    • HTTP:// 用于 HTTP 代理。
    • HTTPS:// 用于启用了 TLS 的 HTTP 代理。
    • socks5:// for a SOCKS5 代理。
    5
    excludes 列表可以包含 DNS 名称(带有或没有 * 通配符)、IP 地址或 CIDR 表示法中的 IP 块(例如 10.0.0.0/8)。无论协议是什么,此列表中的值将应用于所有传出连接。
    1
    stringData 部分中的 |- 行表示配置数据的开头。
    注意
    • 第一次打开文件时,所有值都会被注释掉(使用位于行开头的 # 号)。以双 hash 符号开头的行 # # 包含配置键的解释。
    • 确保在编辑字段时,维护与 config.yaml 相关的两个空格的缩进级别:|- 行。
  3. 编辑配置文件后,您可以正常进行安装。更新的配置指示 Red Hat Advanced Cluster Security for Kubernetes 使用在提供的地址和端口号上运行的代理。

第 10 章 生成诊断捆绑包

您可以生成诊断捆绑包并发送这些数据,以便支持团队深入了解 Red Hat Advanced Cluster Security for Kubernetes 组件的状态和健康状况。

红帽可能会要求您在调查 Red Hat Advanced Cluster Security for Kubernetes 的问题时发送诊断捆绑包。您可以生成诊断捆绑包,并在发送前检查其数据。

注意

诊断捆绑包是未加密的,具体取决于环境中的集群数量,捆绑包大小介于 100 KB 和 1 MB 之间。始终使用加密通道将该数据传输回红帽。

10.1. 诊断捆绑包数据

当您生成诊断捆绑包时,会包括以下数据:

  • 中央堆配置文件.
  • 系统日志:所有 Red Hat Advanced Cluster Security for Kubernetes 组件的日志(针对最后 20 分钟),以及最近崩溃的组件的日志(崩溃前最多 20 分钟)。系统日志取决于您的环境的大小。对于大型部署,数据只包含关键错误的组件的日志文件,如高重启计数。
  • Red Hat Advanced Cluster Security for Kubernetes 组件的 YAML 定义:这些数据不包括 Kubernetes secret。
  • OpenShift Container Platform 或 Kubernetes 事件:关于与 stackrox 命名空间中对象相关的事件的详细信息。
  • 在线 Telemetry 数据,其中包括:

    • 存储信息:有关数据库大小以及附加卷中可用空间量的详细信息。
    • Red Hat Advanced Cluster Security for Kubernetes 组件健康信息:有关 Red Hat Advanced Cluster Security for Kubernetes 组件版本的详情、其内存用量以及任何报告的错误。
    • coarse-grained usage statistics:有关 API 端点调用数的详细信息,并报告了错误状态。它不包括在 API 请求中发送的实际数据。
    • 节点信息:有关每个安全集群中的节点的详细信息。它包括内核和操作系统版本、资源压力和污点。
    • 环境信息:有关每个安全集群的详细信息,包括 Kubernetes 或 OpenShift Container Platform 版本、Istio 版本(如果适用)、云供应商类型和其他类似的信息。

10.2. 使用 RHACS 门户生成诊断捆绑包

您可以使用 RHACS 门户上的系统健康仪表板生成诊断捆绑包。

先决条件

  • 要生成诊断捆绑包,需要对 DebugLogs 资源 具有读 权限。

流程

  1. 在 RHACS 门户,选择 Platform ConfigurationSystem Health
  2. System Health view 标头上,单击 Generate Diagnostic Bundle
  3. 对于 Filter by cluster 下拉菜单,选择您要为其生成诊断数据的集群。
  4. 对于 Filter by start time,请指定您要包含诊断数据的日期和时间(以 UTC 格式)。
  5. 单击 Download Diagnostic Bundle

10.3. 使用 roxctl CLI 生成诊断捆绑包

您可以使用 roxctl CLI 生成诊断捆绑包。

先决条件

  • 要生成诊断捆绑包,需要对 DebugLogs 资源 具有读 权限。

流程

  • 运行以下命令以生成诊断捆绑包:

    $ roxctl central debug download-diagnostics
    Copy to Clipboard Toggle word wrap

第 11 章 配置端点

了解如何使用 YAML 配置文件为 Red Hat Advanced Cluster Security for Kubernetes(RHACS)配置端点。

您可以使用 YAML 配置文件来配置公开的端点。您可以使用此配置文件为 Red Hat Advanced Cluster Security for Kubernetes 定义一个或多个端点,并为每个端点自定义 TLS 设置,或者为特定端点禁用 TLS 设置。您还可以定义是否需要客户端身份验证,以及接受哪些客户端证书。

11.1. 自定义 YAML 配置

Red Hat Advanced Cluster Security for Kubernetes 使用 YAML 配置作为 ConfigMap,使配置更易于更改和管理。

使用自定义 YAML 配置文件时,您可以为每个端点配置以下内容:

  • 要使用的协议,如 HTTPgRPC 或两者。
  • 启用或禁用 TLS。
  • 指定服务器证书。
  • 用于信任客户端身份验证的客户端证书颁发机构(CA)。
  • 指定是否需要客户端证书验证(mTLS)。

您可以使用配置文件在安装过程中或 Red Hat Advanced Cluster Security for Kubernetes 的现有实例中指定端点。但是,如果您公开默认端口 8443 以外的任何其他端口,您必须创建一个网络策略来允许这些额外端口上的流量。

以下是 Red Hat Advanced Cluster Security for Kubernetes 的 endpoint .yaml 配置文件示例:

# Sample endpoints.yaml configuration for Central.
#
# # CAREFUL: If the following line is uncommented, do not expose the default endpoint on port 8443 by default.
# #          This will break normal operation.
# disableDefault: true # if true, do not serve on :8443 
1

endpoints: 
2

  # Serve plaintext HTTP only on port 8080
  - listen: ":8080" 
3

    # Backend protocols, possible values are 'http' and 'grpc'. If unset or empty, assume both.
    protocols: 
4

      - http
    tls: 
5

      # Disable TLS. If this is not specified, assume TLS is enabled.
      disable: true 
6

  # Serve HTTP and  gRPC for sensors only on port 8444
  - listen: ":8444" 
7

    tls: 
8

      # Which TLS certificates to serve, possible values are 'service' (For  service certificates that Red Hat Advanced Cluster Security for Kubernetes generates)
      # and 'default' (user-configured default TLS certificate). If unset or empty, assume both.
      serverCerts: 
9

        - default
        - service
      # Client authentication settings.
      clientAuth: 
10

        # Enforce TLS client authentication. If unset, do not enforce, only request certificates
        # opportunistically.
        required: true 
11

        # Which TLS client CAs to serve, possible values are 'service' (CA for service
        # certificates that Red Hat Advanced Cluster Security for Kubernetes generates) and 'user' (CAs for PKI auth providers). If unset or empty, assume both.
        certAuthorities: 
12

        # if not set, assume ["user", "service"]
          - service
Copy to Clipboard Toggle word wrap
1
使用 true 在默认端口号 8443 上禁用暴露。默认值为 false ;将其更改为 true 可能会破坏现有的功能。
2
用于公开 Central 的额外端点列表。
3 7
要侦听的地址和端口号。如果使用 端点,您必须指定这个值。您可以使用格式 端口:portaddress:port 来指定值。例如,
  • 8080:8080 - 侦听所有接口的端口 8080。
  • 0.0.0.0:8080 - 监听所有 IPv4(而非 IPv6 接口)的端口 8080。
  • 127.0.0.1:8080 - 仅侦听本地环回设备上的端口 8080。
4
用于指定端点的协议。可接受值为 httpgrpc。如果您没有指定值,Central 会同时侦听指定端口上的 HTTP 和 gRPC 流量。如果要为 RHACS 门户公开端点,请使用 http。但是,您无法将端点用于服务到服务通信或 roxctl CLI,因为这些客户端需要 gRPC 和 HTTP。红帽建议不要指定这个键的值,以便为端点启用 HTTP 和 gRPC 协议。如果只想将端点限制为 Red Hat Advanced Cluster Security for Kubernetes 服务,请使用 clientAuth 选项。
5 8
使用它指定端点的 TLS 设置。如果没有指定值,Red Hat Advanced Cluster Security for Kubernetes 将启用带有以下所有嵌套键的默认设置的 TLS。
6
使用 true 在指定的端点上禁用 TLS。默认值为 false。当将其设置为 true 时,您无法为 serverCertsclientAuth 指定值。
9
指定配置服务器 TLS 证书的源列表。serverCerts 列表是顺序独立,这意味着当没有匹配的 SNI(Server Name Indication)时,列表中的第一项决定中央使用的证书。您可以使用它指定多个证书,而 Central 会根据 SNI 自动选择正确的证书。可接受值为:
  • 默认 : 如果存在,请使用已经配置的自定义 TLS 证书。
  • 服务 :使用 Red Hat Advanced Cluster Security for Kubernetes 生成的内部服务证书。
10
使用它配置启用了 TLS 的客户端证书验证的行为。
11
使用 true 只允许具有有效客户端证书的客户端。默认值为 false。您可以结合使用 true服务的 certAuthorities 设置来只允许 Red Hat Advanced Cluster Security for Kubernetes 服务连接到此端点。
12
用于验证客户端证书的 CA 列表。默认值为 ["service", "user"]certAuthorities 列表是顺序独立,这意味着此列表中的项目的位置无关紧要。另外,将其设置为空列表 [] 会禁用端点的客户端证书身份验证,这与保留这个值没有不同。可接受值为:
  • 服务 :用于 Red Hat Advanced Cluster Security for Kubernetes 生成的服务证书的 CA。
  • 用户 :由 PKI 身份验证提供程序配置的 CA.

11.2. 在新安装过程中配置端点

当使用 roxctl CLI 安装 Red Hat Advanced Cluster Security for Kubernetes 时,它会创建一个名为 central-bundle 的文件夹,其中包含要部署的 YAML 清单和脚本。

流程

  1. 生成 central-bundle 后,打开 ./central-bundle/central/02-endpoints-config.yaml 文件。
  2. 在这个文件中,将自定义 YAML 配置添加到密钥 endpoints.yamldata: 部分。确保您为 YAML 配置维护 4 个空间缩进。
  3. 照常继续安装说明。Red Hat Advanced Cluster Security for Kubernetes 使用指定的配置。
注意

如果您公开了默认端口 8443 以外的任何其他端口,您必须创建一个网络策略来允许这些额外端口上的流量。

11.3. 为现有实例配置端点

您可以为 Red Hat Advanced Cluster Security for Kubernetes 的现有实例配置端点。

流程

  1. 下载现有的配置映射:

    $ oc -n stackrox get cm/central-endpoints -o go-template='{{index .data "endpoints.yaml"}}'  > <directory_path>/central_endpoints.yaml
    Copy to Clipboard Toggle word wrap
  2. 在下载的 central_endpoints.yaml 文件中,指定您的自定义 YAML 配置。
  3. 上传并应用修改后的 central_endpoints.yaml 配置文件:

    $ oc -n stackrox create cm central-endpoints --from-file=endpoints.yaml=<directory-path>/central-endpoints.yaml -o yaml --dry-run | \
    oc label -f - --local -o yaml app.kubernetes.io/name=stackrox | \
    oc apply -f -
    Copy to Clipboard Toggle word wrap
  4. 重新启动 Central。
注意

如果您公开了默认端口 8443 以外的任何其他端口,您必须创建一个网络策略来允许这些额外端口上的流量。

11.3.1. 重启 Central 容器

您可以通过终止 Central 容器或删除 Central pod 重启 Central 容器。

流程

  • 运行以下命令以终止 Central 容器:

    注意

    您必须等待至少 1 分钟,直到 OpenShift Container Platform 传播您的更改并重启 Central 容器。

    $ oc -n stackrox exec deploy/central -c central -- kill 1
    Copy to Clipboard Toggle word wrap
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central
    Copy to Clipboard Toggle word wrap

11.4. 启用流量流通过自定义端口

如果您要向同一集群或入口控制器中运行的另一个服务公开端口,则必须只允许从集群中的服务或入口控制器代理的流量。否则,如果您使用负载均衡器服务公开端口,您可能需要允许来自所有源的流量,包括外部来源。使用本节中所列的步骤来允许来自所有源的流量。

流程

  1. 克隆 allow-ext-to-central Kubernetes 网络策略:

    $ oc -n stackrox get networkpolicy.networking.k8s.io/allow-ext-to-central -o yaml > <directory_path>/allow-ext-to-central-custom-port.yaml
    Copy to Clipboard Toggle word wrap
  2. 使用它作为创建网络策略的参考,在该策略中指定您要公开的端口号。确保在 YAML 文件的 metadata 部分更改网络策略的名称,使其不会干扰内置的 allow-ext-to-central 策略。

第 12 章 使用 Prometheus 监控

Prometheus 是一个开源监控和警报平台。您可以使用它监控 Red Hat Advanced Cluster Security for Kubernetes 的 Central 和 Sensor 组件的健康状态和可用性。

12.1. 启用监控

在监控 Red Hat Advanced Cluster Security for Kubernetes 前,您必须启用监控。

流程

  1. 修补服务以公开端口号 9090

    1. 对 Sensor 服务进行补丁:

      $ oc -n stackrox patch svc/sensor -p '{"spec":{"ports":[{"name":"monitoring","port":9090,"protocol":"TCP","targetPort":9090}]}}' 
      1
      Copy to Clipboard Toggle word wrap
      1
      如果使用 Kubernetes,请输入 kubectl 而不是 oc
    2. 对中央服务进行补丁:

      $ oc -n stackrox patch svc/central -p '{"spec":{"ports":[{"name":"monitoring","port":9090,"protocol":"TCP","targetPort":9090}]}}'
      Copy to Clipboard Toggle word wrap
  2. 修改网络策略以允许入口。

    $ oc apply -f - <<EOF 
    1
    
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      labels:
        app.kubernetes.io/name: stackrox
      name: allow-monitoring
      namespace: stackrox
    spec:
      ingress:
      - ports:
        - port: 9090
          protocol: TCP
      podSelector:
        matchExpressions:
        - {key: app, operator: In, values: [central, sensor, collector]}
      policyTypes:
      - Ingress
    EOF
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

12.1.1. 自定义默认端口

要自定义 Red Hat Advanced Cluster Security for Kubernetes Central 和 Sensor 中 Prometheus 指标所使用的端口,您可以使用 ROX_METRICS_PORT 环境变量。

流程

  • 设置 ROX_METRICS_PORT 环境变量:

    $ oc -n stackrox set env deploy/central ROX_METRICS_PORT=<value> 
    1
    Copy to Clipboard Toggle word wrap
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
注意

您可以为 ROX_METRICS_PORT 环境变量指定 < value >:

  • 禁用 监控功能。
  • :<port_number > 把它绑定到通配符地址。
  • <address>:<port_number > 以使用特定地址和端口号。您还可以使用方括号指定 IPv6 地址,例如 [2001:db8::1234]:9090

第 13 章 配置审计日志记录

Red Hat Advanced Cluster Security for Kubernetes 提供了审计日志记录功能,可用于检查 Red Hat Advanced Cluster Security for Kubernetes 中所做的所有更改。审计日志捕获所有 PUTPOST 事件,这些事件对 Red Hat Advanced Cluster Security for Kubernetes 进行了修改。使用此信息对问题进行故障排除,或者保留重要事件的记录,如角色和权限的更改。通过审计日志记录,您可以完整了解 Red Hat Advanced Cluster Security for Kubernetes 中发生的所有正常事件和异常事件。

注意

默认情况下不启用审计日志记录。您必须手动启用审计日志记录。

警告

目前,审计日志消息没有消息传送保证。

13.1. 启用审计日志记录

当您启用审计日志日志记录时,每次有修改时,Red Hat Advanced Cluster Security for Kubernetes 都会向配置的系统发送 HTTP POST 信息(采用 JSON 格式)。

先决条件

  • 配置 Splunk 或其他 Webhook 接收器,以处理 Red Hat Advanced Cluster Security for Kubernetes 日志消息。
  • 您必须在角色的 Notifiers 资源中启用了 写入权限

流程

  1. 在 RHACS 门户网站中,导航至 Platform ConfigurationIntegrations
  2. 向下滚动到 Notifier Integrations 部分,然后选择 Generic WebhookSplunk
  3. 填写所需信息并打开 Enable Audit Logging 切换。

13.2. 审计日志消息示例

日志消息的格式如下:

{
  "headers": {
    "Accept-Encoding": [
      "gzip"
    ],
    "Content-Length": [
      "586"
    ],
    "Content-Type": [
      "application/json"
    ],
    "User-Agent": [
      "Go-http-client/1.1"
    ]
  },
  "data": {
    "audit": {
      "interaction": "CREATE",
      "method": "UI",
      "request": {
        "endpoint": "/v1/notifiers",
        "method": "POST",
        "payload": {
          "@type": "storage.Notifier",
          "enabled": true,
          "generic": {
            "auditLoggingEnabled": true,
            "endpoint": "http://samplewebhookserver.com:8080"
          },
          "id": "b53232ee-b13e-47e0-b077-1e383c84aa07",
          "name": "Webhook",
          "type": "generic",
          "uiEndpoint": "https://localhost:8000"
        }
      },
      "status": "REQUEST_SUCCEEDED",
      "time": "2019-05-28T16:07:05.500171300Z",
      "user": {
        "friendlyName": "John Doe",
        "role": {
          "globalAccess": "READ_WRITE_ACCESS",
          "name": "Admin"
        },
        "username": "john.doe@example.com"
      }
    }
  }
}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat