配置

Red Hat Advanced Cluster Security for Kubernetes 3.72

配置 Red Hat Advanced Cluster Security for Kubernetes

Red Hat OpenShift Documentation Team

摘要

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

第 1 章 添加自定义证书

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

1.1. 添加自定义安全证书

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

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

前提条件

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

    -----BEGIN CERTIFICATE-----
    MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
    ...
    l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
    -----END CERTIFICATE-----
  • 证书文件可以包含单个(leaf)证书,也可以是证书链。

    警告
    • 如果证书不是由受信任的 root 直接签名,您必须提供完整证书链,包括任何中间证书。
    • 链中的所有证书都必须按顺序使 leaf 证书是第一个,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-----
    2. 在安装过程中提供配置文件:

      $ helm install -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f values-private.yaml
  • 如果您使用 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"
    • 对于互动安装程序,当您输入提示答案时提供证书和密钥文件:

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

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-----
    2. 使用 helm upgrade 命令并提供更新的配置文件:

      $ helm upgrade -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f values-private.yaml
  • 如果您使用 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 -

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

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

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

流程

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

    $ oc delete secret central-default-tls-cert
  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 -
  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
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central

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

如果您使用没有被全局信任的自定义证书,您必须配置 Sensor 来信任您的自定义证书。否则,您可能会得到错误。特定类型的错误会根据您的设置和您使用的证书而有所不同。通常,它是一个 x509 验证 相关错误。

注意

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

1.2.1. 下载 Sensor 捆绑包

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

流程

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

    注意

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

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

1.2.2. 配置 Sensor 以便在部署新的 Sensor 时信任自定义证书

前提条件

  • 您已下载了 Sensor 捆绑包。

流程

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

    1. 解压 Sensor 捆绑包:

      $ unzip -d sensor sensor-<cluster_name>.zip
    2. 运行 sensor.sh 脚本:

      $ ./sensor/sensor.sh

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

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

    1. 解压 Sensor 捆绑包:

      $ unzip -d sensor sensor-<cluster_name>.zip
    2. 运行以下命令来创建 secret:

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

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

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

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

前提条件

  • 您已下载了 Sensor 捆绑包。

流程

  1. 解压 Sensor 捆绑包:

    $ unzip -d sensor sensor-<cluster_name>.zip
  2. 运行以下命令来创建 secret:

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

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

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
  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
    • 对于 Kubernetes:

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

    • 在 OpenShift Container Platform 中:

      $ oc -n stackrox delete pod -lapp=sensor
    • 对于 Kubernetes:

      $ kubectl -n stackrox delete pod -lapp=sensor

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

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

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

添加可信根 CA 允许:

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

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

注意

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

2.1. 配置额外 CA

添加自定义 CA:

流程

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

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

    $ chmod +x ca-setup.sh
  3. 添加:

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

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

      $ ./ca-setup.sh -d <directory_name>
      注意
      • 您必须使用带有 .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
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central

2.2.2. 重启 Scanner 容器

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

流程

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

    • 在 OpenShift Container Platform 中:

      $ oc delete pod -n stackrox -l app=scanner
    • 对于 Kubernetes:

      $ kubectl delete pod -n stackrox -l app=scanner
重要

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

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

    $ ./ca-setup-sensor.sh -d ./additional-cas/
  • 如果要使用 Helm 部署新的 Sensor,则不必运行任何额外脚本。

第 3 章 保证内部证书

Red Hat Advanced Cluster Security for Kubernetes 的每个组件都使用 X.509 证书对其他组件进行身份验证。这些证书有过期日期,您必须在过期前重新发布它们。您可以在 RHACS 门户平台 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>
  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
  • 或者,运行以下命令来删除 Central pod:

    $ oc -n stackrox delete pod -lapp=central

3.2. 为 Scanner 保护内部证书

扫描程序有一个内置证书,用来与 Central 通信。

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

注意

信息横幅仅在证书过期日期前 15 天。

前提条件

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

流程

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

    $ oc apply -f <secret_file.yaml>
  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
    • 对于 Kubernetes:

      $ kubectl delete pod -n stackrox -l app=scanner; kubectl -n stackrox delete pod -l app=scanner-db

3.3. 为 Sensor、Collector 和 Admission Controller 重新启用内部证书

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

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

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

3.3.1. 使用 init 捆绑包为安全集群保护内部证书

受保护的集群包含 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 secret file
  • 要使用 roxctl CLI 生成 init 捆绑包,请运行以下命令:

    $ roxctl -e <endpoint> -p <admin_password> central init-bundle generate <bundle_name> --output-secrets init-bundle.yaml

后续步骤

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

    $ oc -n stackrox apply -f <init-bundle.yaml>

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

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

注意

自动升级仅适用于使用 roxctl CLI 进行基于静态清单的部署。有关安装章节中的 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 view 标头上,单击 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 拉取镜像并将其推送到您自己的私有 registry,如下载镜像中所述。
  2. 在安装过程中启用离线模式。
  3. (可选)通过上传新的定义文件 Routinely update 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.72.3
  • registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:3.72.3
  • registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:3.72.3
  • registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:3.72.3
  • registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:3.72.3

5.1.1.1. 重新标记镜像

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

重要

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

$ docker tag registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.72.3 <your_registry>/rhacs-main-rhel8:3.72.3

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

$ docker tag registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:3.72.3 <your_registry>/other-name:latest

流程

  1. 登录到 registry:

    $ docker login registry.redhat.io
  2. 拉取镜像:

    $ docker pull <image>
  3. 重新标记镜像:

    $ docker tag <image> <new_image>
  4. 将更新的镜像推送到 registry:

    $ docker push <new_image>

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. 安装 secured-cluster-services Helm chart 时,在 values-public.yaml 配置文件中将 config.offlineMode 参数的值设置为 true

5.2.1.1. 其他资源

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

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

流程

  1. 如果您使用除默认互联网连接的 registry (registry.redhat.io) 以外的 registry,在回答 image to use 提示时提供推送 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.72.3
    注意

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

    Enter Scanner DB image to use (if unset, the default will be used): <your_registry>/rhacs-scanner-db-rhel8:3.72.3
    Enter Scanner image to use (if unset, the default will be used): <your_registry>/rhacs-scanner-rhel8:3.72.3
  2. 要启用离线模式,在回答 Enter whether to run StackRox in offline mode 提问时输入 true

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

5.3. 以离线模式更新扫描器定义

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

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

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

以离线模式更新定义:

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

5.3.1. 下载扫描器定义

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

前提条件

  • 要下载扫描器定义,您需要有一个可访问互联网的系统。

5.3.2. 将定义上传到 Central

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

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

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

前提条件

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

流程

  1. 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

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

    $ roxctl scanner upload-db \
      -e "$ROX_CENTRAL_ADDRESS" \
      --scanner-db-file=<compressed_scanner_definitions.zip>
5.3.2.1.1. 其他资源

5.3.2.2. 使用管理员密码将定义上传到 Central

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

前提条件

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

流程

  1. 设置 ROX_CENTRAL_ADDRESS 环境变量:

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

    $ roxctl scanner upload-db \
      -p <your_administrator_password> \
      -e "$ROX_CENTRAL_ADDRESS" \
      --scanner-db-file=<compressed_scanner_definitions.zip>

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

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

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

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

收集器按以下顺序检查新探测:它检查:

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

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

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

5.4.1. 下载内核支持软件包

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

流程

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

您可以上传内核支持软件包,其中包含所有最新、受支持的 Linux 内核版本的探测到 Central。

前提条件

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

流程

  1. 设置 ROX_API_TOKENROX_CENTRAL_ADDRESS 环境变量:

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

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

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

第 6 章 启用警报数据保留

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

借助 Red Hat Advanced Cluster Security for Kubernetes,您可以配置时间来保留历史警报。Red Hat Advanced Cluster Security for Kubernetes 然后在指定时间后删除旧的警报。

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

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

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

6.1. 配置警报数据保留

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

前提条件

  • 您必须具有带有 readwrite 权限的 Config 角色,才能配置数据保留。

流程

  1. 在 RHACS 门户网站中,导航到 Platform ConfigurationSystem Configuration
  2. System Configuration view 标头上,单击 Edit
  3. 数据保留配置 部分下,更新每种数据类型的天数:

    • 所有运行时冲突
    • 已解析的 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 门户。

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

重要

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

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

7.1. 前提条件

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

    • typegrpchttp。在大多数用例中使用 http 作为类型。对于高级用例,您可以使用 grpc 或省略其值。如果省略了 类型为 的值,您可以在代理中配置两个端点,一个用于 gRPC,另一个用于 HTTP。这两个端点都指向 Central 上的相同公开 HTTP 端口。但是,大多数代理都不支持在同一外部端口上传输 gRPC 和 HTTP 流量。
    • addr 是可公开集中的 IP 地址。如果您需要一个 HTTP 端点,则可以省略它,也可以使用 localhost127.0.0.1
    • port 是 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
    1
    以 < type>@<addr>:<port> 的形式为端点规格。详情请查看先决条件部分。

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
    '
    1
    以 < type>@<addr>:<port> 的形式为端点规格。详情请查看先决条件部分。
  2. ROX_PLAINTEXT_ENDPOINTS 环境变量添加到中央部署中:

    $ oc -n stackrox patch deploy/central -p "$CENTRAL_PLAINTEXT_PATCH"

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

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

通过自动执行每个安全集群的手动任务,自动升级升级,使自动保持最新状态。

通过自动升级,升级后,在所有安全的集群中,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. 打开 Automatically upgrade secured clusters 切换开关。

    注意

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

8.2. 禁用自动升级

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

流程

  1. 在 RHACS 门户中,导航到 Platform ConfigurationClusters
  2. 关闭 Automatically upgrade secured clusters 切换开关。

    注意

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

8.3. 自动升级状态

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

升级状态Description

使用 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 失败。重试 upgrade。要查看有关失败的更多信息,并了解升级失败的原因,您可以在 Clusters 视图中检查保护的集群行。

失败的一些常见原因包括:

  • sensor-upgrader 部署可能没有运行,因为缺少或非schedulable镜像。
  • 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 status 列下选择 Upgrade available 选项。
  3. 要一次性升级多个集群,请选择您要更新的集群的 Cluster 列中的复选框。
  4. 单击 Upgrade

第 9 章 从 RHACS 配置自动删除非活跃集群

Red Hat Advanced Cluster Security for Kubernetes (RHACS)提供了将您的系统配置为自动从 RHACS 中删除非活跃集群的选项,以便您可以只监控活跃的集群。请注意,最初仅监控至少安装并执行带有 Central 的握手的集群。如果启用了这个功能,当 Central 在 Decomissioned cluster age 字段中配置的时间段内无法访问 Sensor 时,集群会在 RHACS 中被视为非主动。然后,中央将不再监控非活跃集群。您可以在 Platform ConfigurationSystem Configuration 页面中配置委托 的集群年龄 字段。在配置此功能时,您可以为集群添加标签,以便 RHACS 继续监控集群,即使它变为不活动状态。

默认情况下,从 RHACS 中删除非活跃集群会被禁用。要启用此设置,请在 Decommissioned cluster age 字段中输入非零数字,如下所述。Decommissioned cluster age 字段指示集群在被视为非主动前可以保持无法访问的天数。当集群不活跃时,Clusters 页面会显示集群的状态。Nonactive 集群显示 不健康 标签,窗口显示集群在 RHACS 中删除的天数(如果其持续保持非活动状态)。从 RHACS 中删除集群后,该操作会记录在 Central 日志中作为一条 info 日志。

注意

在删除集群前启用此设置后 24 小时宽限期。用于托管 Central 的集群永远不会被删除。

9.1. 配置集群停用

您可以将 RHACS 配置为从 RHACS 自动删除非活跃集群。Nonactive 集群是那些安装并执行带有 Central 的握手且至少一次的握手,但在指定时间段内无法访问 Sensor。您还可以标记集群,以便在无法访问时不会删除它们。

流程

  1. 在 RHACS 门户网站中,导航到 Platform ConfigurationSystem Configuration
  2. System Configuration 标头中,点 Edit
  3. Cluster deletion 部分中,您可以配置以下字段:

    • 弃用的集群年龄 :集群在考虑从 RHACS 中删除前无法访问的天数。如果 Central 无法因为这个天数访问集群中的 Sensor,则集群及其所有资源都会从 RHACS 中删除。要禁用此功能(这是默认行为),请在此字段中输入 0。要启用此功能,请输入一个非零数字,如 90,以配置无法访问的天数。
    • 忽略具有标签 : 要阻止集群被删除的集群,您可以通过在本节中输入键和值来配置标签。具有此标签的集群不会被删除,即使它们在委派 的集群年龄 字段中设定的天数无法访问。

      • Key :输入要用于集群的标签。
      • Value :输入与键关联的值。

        例如,若要保留生产集群被删除,您可以配置 cluster-type 键和 production 的值。

        注意

        Cluster deletion 部分中,点 具有 Sensor Status: Unhealthy 的 Clusters 来进入 Clusters 列表页面。这个页面被过滤以显示非活跃集群,这些集群可能会被删除,并从 RHACS 中删除的时间。

  4. Save
注意

要使用 API 查看并配置此选项,对于 /v1/config/v1/config/private 端点,在请求的正文中使用 decommissionedClusterRetention 设置。如需更多信息,请参阅 RHACS 门户中的 HelpAPI 参考中的 ConfigService 对象的 API 文档。

9.2. 查看非活跃集群

Nonactive 集群是安装并执行至少带有 Central 的握手的集群,但在指定时间段内无法访问 Sensor。使用这个流程查看这些集群列表。

流程

  1. 在 RHACS 门户网站中,导航到 Platform ConfigurationSystem Configuration
  2. Cluster deletion 部分中,点 具有 Sensor Status: Unhealthy 的 Clusters 来进入 Clusters 列表页面。这个页面会被过滤以显示从 RHACS 中删除的非活跃集群,以及删除的时间范围。

    注意

    如果在集群被视为非活动状态后启用此功能,从集群变为不活动状态的时间开始,而不是从启用该功能的时间开始。如果有任何不需要删除的非活跃集群,您可以配置一个标签,如"配置集群停用"部分中所述。当系统删除非活跃集群时,会忽略具有这些标签的集群。

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

如果您的网络配置通过代理限制出站流量,您可以在 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

10.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
  2. 编辑 YAML 配置文件中您要修改的字段,如 Configure proxy 在安装过程中指定。
  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 -
    重要
    • 您必须至少等待 1 分钟,直到 OpenShift Container Platform 将您的更改传播到 Central 和 Scanner。
    • 如果您在更改代理配置后看到与传出连接相关的问题,您必须重启 Central 和 Scanner pod。

10.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
    3 4 7 8 10 11
    在开始以及在 httphttps 部分中,添加 usernamepassword 是可选的。
    2 6 9
    url 选项支持以下 URL 方案:
    • HTTP 代理的 HTTP ://
    • 用于支持 TLS 的 HTTP 代理的 HTTPS://
    • 适用于 SOCKS5 代理的 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 使用在提供的地址和端口号中运行的代理。

第 11 章 生成诊断捆绑包

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

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

注意

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

11.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 版本(如果适用)、云供应商类型和其他类似信息。

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

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

前提条件

  • 要生成诊断捆绑包,您需要对 DebugLogs 资源 读取权限

流程

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

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

您可以使用 roxctl CLI 使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)管理员密码或 API 令牌和中央地址生成诊断捆绑包。

前提条件

  • 要生成诊断捆绑包,您需要 Administration 资源的 read 权限。这是比版本 3.73.0 更早的 DebugLogs 资源版本所必需的。
  • 您必须已配置了 RHACS 管理员密码或 API 令牌和中央地址。

流程

  • 要使用 RHACS 管理员密码生成诊断捆绑包,请执行以下步骤:

    1. 运行以下命令来配置 ROX_PASSWORDROX_CENTRAL_ADDRESS 环境变量:

      $ export ROX_PASSWORD=<rox_password> && export ROX_CENTRAL_ADDRESS=<address>:<port_number> 1
      1
      对于 <rox_password >,请指定 RHACS 管理员密码。
    2. 运行以下命令,以使用 RHACS 管理员密码生成诊断捆绑包:

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" -p "$ROX_PASSWORD" central debug download-diagnostics
  • 要使用 API 令牌生成诊断捆绑包,请执行以下步骤:

    1. 运行以下命令来配置 ROX_API_TOKEN 环境变量:

      $ export ROX_API_TOKEN=<api_token>
    2. 运行以下命令,以使用 API 令牌生成诊断捆绑包:

      $ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug download-diagnostics

第 12 章 配置端点

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

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

12.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
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。您可以将 trueservicecertAuthorities 设置结合使用,以便 Red Hat Advanced Cluster Security for Kubernetes 服务连接到此端点。
12
用于验证客户端证书的 CA 列表。默认值为 ["service", "user"]certAuthorities 列表是独立于顺序的,这意味着此列表中项目的位置无关紧要。另外,将它设置为空列表 [] 会禁用端点的客户端证书验证,这与未设置此值不同。可接受值为:
  • 服务 :用于 Red Hat Advanced Cluster Security for Kubernetes 生成的服务证书的 CA。
  • 用户 :由 PKI 身份验证提供程序配置的 CA。

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

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

流程

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

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

12.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
  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 -
  4. 重新启动中心.
注意

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

12.3.1. 重启 Central 容器

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

流程

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

    注意

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

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

    $ oc -n stackrox delete pod -lapp=central

12.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
  2. 使用它作为创建网络策略的引用,并在该策略中指定您要公开的端口号。确保在 YAML 文件的 metadata 部分更改网络策略名称,使其不会影响内置的 allow-ext-to-central 策略。

第 13 章 使用 Prometheus 进行监控

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

13.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
      1
      如果使用 Kubernetes,请输入 kubectl 而不是 oc
    2. 对中央服务进行补丁:

      $ oc -n stackrox patch svc/central -p '{"spec":{"ports":[{"name":"monitoring","port":9090,"protocol":"TCP","targetPort":9090}]}}'
  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
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

13.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
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
注意

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

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

第 14 章 配置审计日志记录

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 上发生的所有正常事件和异常事件。

注意

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

警告

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

14.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 切换。

14.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"
      }
    }
  }
}

法律通告

Copyright © 2023 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.