搜索

roxctl CLI

download PDF
Red Hat Advanced Cluster Security for Kubernetes 4.3

roxctl CLI

Red Hat OpenShift Documentation Team

摘要

本文档论述了如何安装和使用 roxctl 命令行界面,包括 roxctl 语法和操作。它提供了一些常见的命令示例。

第 1 章 安装 roxctl CLI

roxctl 是一个命令行界面 (CLI),用于在 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 上运行命令。您可以通过下载二进制文件或从容器镜像运行 roxctl CLI 来安装 roxctl CLI。

1.1. 通过下载二进制文件安装 roxctl CLI

您可以安装 roxctl CLI,以便从命令行界面与 RHACS 进行交互。您可以在 Linux、Windows 或 macOS 上安装 roxctl

1.1.1. 在 Linux 中安装 roxctl CLI

您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。

注意

用于 Linux 的 roxctl CLI 可用于 amd64、 ppc64les390x 架构。

流程

  1. 确定目标操作系统的 roxctl 架构:

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. 下载 roxctl CLI:

    $ curl -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Linux/roxctl${arch}"
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    $ roxctl version

1.1.2. 在 macOS 上安装 roxctl CLI

您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。

注意

用于 macOS 的 roxctl CLI 可用于 amd64 架构。

流程

  1. 下载 roxctl CLI:

    $ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Darwin/roxctl
  2. 从二进制文件中删除所有扩展属性:

    $ xattr -c roxctl
  3. 使 roxctl 二进制文件可执行:

    $ chmod +x roxctl
  4. roxctl 二进制文件放到 PATH 中的目录中:

    要查看您的 PATH,请执行以下命令:

    $ echo $PATH

验证

  • 验证您已安装的 roxctl 版本:

    $ roxctl version

1.1.3. 在 Windows 上安装 roxctl CLI

您可以按照以下流程在 Windows 上安装 roxctl CLI 二进制文件。

注意

amd64 架构提供了适用于 Windows 的 roxctl CLI。

流程

  • 下载 roxctl CLI:

    $ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Windows/roxctl.exe

验证

  • 验证您已安装的 roxctl 版本:

    $ roxctl version

1.2. 从容器运行 roxctl CLI

roxctl 客户端是 RHACS roxctl 镜像的默认入口点。在容器镜像中运行 roxctl 客户端:

先决条件

  • 您必须首先从 RHACS 门户生成身份验证令牌。

流程

  1. 登录到 registry.redhat.io registry。

    $ docker login registry.redhat.io
  2. roxctl CLI 拉取最新的容器镜像。

    $ docker pull registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:4.3.8

安装 CLI 后,您可以使用以下命令运行它:

$ docker run -e ROX_API_TOKEN=$ROX_API_TOKEN \
  -it registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:4.3.8 \
  -e $ROX_CENTRAL_ADDRESS <command>
注意

在 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service), 中,当使用需要 Central 地址的 roxctl 命令时,请使用 Red Hat Hybrid Cloud Console 的 Instance Details 部分显示的 Central 实例地址。例如,使用 acs-ABCD12345.acs.rhcloud.com 而不是 acs-data-ABCD12345.acs.rhcloud.com

验证

  • 验证您已安装的 roxctl 版本。

    $ docker run -it registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:4.3.8 version

第 2 章 使用 roxctl CLI

2.1. 先决条件

  • 您已使用以下命令配置了 ROX_ENDPOINT 环境变量:

    $ export ROX_ENDPOINT=<host:port> 1
    1
    存储在 ROX_ENDPOINT 环境变量中的主机和端口信息。

2.2. 获取身份验证信息

以下流程描述了如何使用 roxctl central whoami 命令检索有关 Central 中身份验证状态和用户配置集的信息。示例输出演示了您可以看到的数据,包括用户角色、访问权限和各种管理功能。此步骤允许您在 Central 中查看访问和角色。

流程

  • 运行以下命令,在 Central 中获取有关当前验证状态和用户信息的信息:

    $ roxctl central whoami

    输出示例

    UserID:
    	    <redacted>
    User name:
    	    <redacted>
    Roles:
     APIToken creator, Admin, Analyst, Continuous Integration, Network Graph Viewer, None, Sensor Creator, Vulnerability Management Approver, Vulnerability Management Requester, Vulnerability Manager, Vulnerability Report Creator
    Access:
      rw Access
      rw Administration
      rw Alert
      rw CVE
      rw Cluster
      rw Compliance
      rw Deployment
      rw DeploymentExtension
      rw Detection
      rw Image
      rw Integration
      rw K8sRole
      rw K8sRoleBinding
      rw K8sSubject
      rw Namespace
      rw NetworkGraph
      rw NetworkPolicy
      rw Node
      rw Secret
      rw ServiceAccount
      rw VulnerabilityManagementApprovals
      rw VulnerabilityManagementRequests
      rw WatchedImage
      rw WorkflowAdministration

    检查输出,以确保身份验证和用户详情如预期。

2.3. 使用 roxctl CLI 进行身份验证

要进行身份验证,您可以使用 API 令牌、管理员密码或 roxctl central login 命令。

遵循以下准则来有效地使用 API 令牌:

  • 在生产环境中使用 API 令牌以及持续集成 (CI)。每个令牌都被分配特定的访问权限,提供对它可以执行的操作的控制。此外,API 令牌不需要以交互的形式进行(例如通过浏览器进行登录),使其成为自动化流程的理想选择。这些令牌具有 1 年的生存时间 (TTL) 值,为无缝集成和操作效率提供更长的有效期。
  • 仅使用管理员密码用于测试目的。不要在生产环境中使用它。
  • roxctl central login 命令仅适用于交互式的本地使用。

2.3.1. 创建 API 令牌

流程

  1. 在 RHACS 门户网站中,进入到 Platform ConfigurationIntegrations
  2. 滚动到 Authentication Tokens 类别,然后点 API Token
  3. Generate Token
  4. 输入令牌的名称并选择提供所需访问级别的角色(例如: Continuous IntegrationSensor Creator)。
  5. Generate

    重要

    复制生成的令牌并安全地存储它。您将无法再次查看它。

2.3.2. 导出并保存 API 令牌

流程

  1. 生成身份验证令牌后,输入以下命令将其导出为 ROX_API_TOKEN 变量:

    $ export ROX_API_TOKEN=<api_token>
  2. (可选):您还可以将令牌保存到文件中,并通过输入以下命令将其与 --token-file 选项一起使用:

    $ roxctl central debug dump --token-file <token_file>

请注意以下信息:

  • 您不能同时使用 -password (-p) 和 --token-file 选项。
  • 如果您已经设置了 ROX_API_TOKEN 变量,并指定 --token-file 选项,roxctl CLI 会使用指定的令牌文件进行身份验证。
  • 如果您已经设置了 ROX_API_TOKEN 变量,并指定 --password 选项,roxctl CLI 将使用指定的密码进行身份验证。

2.3.3. 使用身份验证供应商与 roxctl 进行身份验证

您可以在 Central 中配置身份验证供应商,并使用 roxctl CLI 启动登录过程。设置 ROX_ENDPOINT 变量,使用 roxctl central login 命令启动登录过程,在浏览器窗口中选择身份验证供应商,并从 roxctl CLI 检索令牌信息,如以下步骤所述。

前提条件

  • 选择一个身份验证供应商,如带有片段或查询模式的 OpenID Connect (OIDC)。

流程

  1. 运行以下命令,将 ROX_ENDPOINT 变量设置为 Central 主机名和端口:

    export ROX_ENDPOINT=<central_hostname:port>
  2. 运行以下命令,将登录过程启动到 Central:

    $ roxctl central login
  3. roxctl CLI 中,URL 包括在输出中,您会被重定向到一个浏览器窗口,您可以在其中选择您要使用的身份验证供应商。
  4. 使用您的身份验证供应商登录。

    成功登录后,浏览器窗口表示身份验证成功,您可以关闭浏览器窗口。

  5. roxctl CLI 会显示您的令牌信息,包括访问令牌、访问令牌的过期时间、刷新令牌(如果已发布),并通知这些值存储在本地。

    输出示例

    Please complete the authorization flow in the browser with an auth provider of your choice.
    If no browser window opens, please click on the following URL:
            http://127.0.0.1:xxxxx/login
    
    INFO:	Received the following after the authorization flow from Central:
    INFO:	Access token: <redacted> 1
    INFO:	Access token expiration: 2023-04-19 13:58:43 +0000 UTC 2
    INFO:	Refresh token: <redacted> 3
    INFO:	Storing these values under $HOME/.roxctl/login… 4

    1
    访问令牌。
    2
    访问令牌的过期时间。
    3
    刷新令牌。
    4
    用于本地存储访问令牌的值、访问令牌过期时间以及刷新令牌的目录。
    重要

    确保将环境设置为确定存储配置的目录。默认情况下,配置存储在 $HOME/.roxctl/roxctl-config 目录中。

    • 如果您设置了 $ROX_CONFIG_DIR 环境变量,则配置存储在 $ROX_CONFIG_DIR/roxctl-config 目录中。这个选项具有最高优先级。
    • 如果您设置了 $XDG_RUNTIME_DIR 环境变量,并且未设置 $ROX_CONFIG_DIR 变量,则配置存储在 $XDG_RUNTIME_DIR /roxctl-config 目录中。
    • 如果您没有设置 $ROX_CONFIG_DIR$XDG_RUNTIME_DIR 环境变量,则配置存储在 $HOME/.roxctl/roxctl-config 目录中。

2.4. 在 RHACS 云服务中配置和使用 roxctl CLI

流程

  • 运行以下命令导出 ROX_API_TOKEN

    $ export ROX_API_TOKEN=<api_token>
  • 运行以下命令来导出 ROX_ENDPOINT

    $ export ROX_ENDPOINT=<address>:<port_number>
  • 您可以使用 --help 选项获取有关命令的更多信息。
  • 在 Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service), 中,当使用需要 Central 地址的 roxctl 命令时,请使用 Red Hat Hybrid Cloud Console 的 Instance Details 部分显示的 Central 实例地址。例如,使用 acs-ABCD12345.acs.rhcloud.com 而不是 acs-data-ABCD12345.acs.rhcloud.com

第 3 章 管理安全集群

要保护 Kubernetes 或 OpenShift Container Platform 集群,您必须将 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 服务部署到集群中。您可以通过进入到 Platform Configuration → Clusters 视图在 RHACS 门户中生成部署文件,也可以使用 roxctl CLI。

3.1. 先决条件

  • 您已使用以下命令配置了 ROX_ENDPOINT 环境变量:

    $ export ROX_ENDPOINT=<host:port> 1
    1
    存储在 ROX_ENDPOINT 环境变量中的主机和端口信息。

3.2. 生成 Sensor 部署文件

为 Kubernetes 系统生成文件

流程

  • 运行以下命令,为您的 Kubernetes 集群生成所需的传感器配置,并将其与您的 Central 实例关联:

    $ roxctl sensor generate k8s --name <cluster_name> --central "$ROX_ENDPOINT"
为 OpenShift Container Platform 系统生成文件

流程

  • 运行以下命令,为 OpenShift Container Platform 集群生成所需的传感器配置,并将其与您的 Central 实例关联:

    $ roxctl sensor generate openshift --openshift-version <ocp_version> --name <cluster_name> --central "$ROX_ENDPOINT" 1
    1
    对于 --openshift-version 选项,请指定集群的主 OpenShift Container Platform 版本号。例如,为 OpenShift Container Platform 版本 3.x 指定 3,为 OpenShift Container Platform 版本 4.x 指定 4

    阅读 --help 输出以查看您可能需要使用的其他选项,具体取决于您的系统架构。

    验证您为 --central 提供的端点是否可以从部署 Red Hat Advanced Cluster Security for Kubernetes 服务的集群中访问。

    重要

    如果您使用支持非 gRPC 的负载均衡器,如 HAProxy、AWS Application Load Balancer (ALB) 或 AWS Elastic Load Balancing (ELB),请按照以下步骤操作:

    • 使用 WebSocket Secure (ws) 协议。要使用 wss,使用 ws:// 为地址添加前缀,并
    • 在地址后添加端口号,例如:

      $ roxctl sensor generate k8s --central wss://stackrox-central.example.com:443

3.3. 使用 sensor.sh 脚本安装 Sensor

当您生成 Sensor 部署文件时,roxctl 会在工作目录中创建一个名为 sensor-<cluster_name> 的目录。安装 Sensor 的脚本位于这个目录中。

流程

  • 运行传感器安装脚本来安装 Sensor:

    $ ./sensor-<cluster_name>/sensor.sh

    如果您收到没有安装 Sensor 所需的权限的警告,请按照屏幕说明操作,或者联系集群管理员寻求帮助。

3.4. 为现有集群下载 Sensor 捆绑包

流程

  • 运行以下命令,通过指定 集群名称ID 为现有集群下载 Sensor 捆绑包:

    $ roxctl sensor get-bundle <cluster_name_or_id>

3.5. 删除集群集成

流程

  • 在删除集群前,请确定您有要从 Central 中删除的正确集群名称:

    $ roxctl cluster delete --name=<cluster_name>
    重要

    删除集群集成不会删除集群中运行的 RHACS 服务,具体取决于安装方法。您可以从 Sensor 安装捆绑包中运行 delete-sensor.sh 脚本来删除服务。

第 4 章 检查策略合规性

您可以使用 roxctl CLI 检查部署 YAML 文件和镜像是否合规。

4.1. 先决条件

  • 您已使用以下命令配置了 ROX_ENDPOINT 环境变量:

    $ export ROX_ENDPOINT=<host:port> 1
    1
    存储在 ROX_ENDPOINT 环境变量中的主机和端口信息。

4.2. 配置输出格式

当您使用 roxctl deployment checkroxctl image check 命令检查策略时,您可以使用命令的 -o 选项指定输出格式,并将格式指定为 jsontablecsvjunit。此选项决定了如何在终端中显示命令的输出。

例如,以下命令检查部署,然后以 csv 格式显示结果:

$ roxctl deployment check --file =<yaml_filename> -o csv
注意

当您没有为输出格式指定 -o 选项时,会使用以下默认行为:

  • deployment checkimage check 命令的格式是 table
  • image scan 命令的默认输出格式是 json。这是与 CLI 旧版本兼容的旧 JSON 格式输出。若要以新的 JSON 格式获取输出,使用格式选项,如 -o json。在收集数据以进行故障排除时,请使用旧的 JSON 格式输出。

可以不同的选项用于配置输出。下表列出了选项及其可用格式。

选项描述格式

--compact-output

使用此选项以紧凑格式显示 JSON 输出。

json

--headers

使用这个选项指定自定义标头。

tablecsv

--no-header

使用这个选项省略输出中的标头行。

tablecsv

--row-jsonpath-expressions

使用这个选项指定 GJSON 路径,以选择输出中的特定项目。例如,若要获取部署检查的策略名称严重性,请使用以下命令:

$ roxctl deployment check --file=<yaml_filename> \
  -o table --headers POLICY-NAME,SEVERITY \
  --row-jsonpath-expressions="{results..violatedPolicies..name,results..violatedPolicies..severity}"

tablecsv

--merge-output

使用此选项合并具有相同值的表单元。

table

headers-as-comment

使用这个选项在输出中将标头行包含为注释。

csv

--junit-suite-name

使用此选项指定 JUnit 测试套件的名称。

junit

4.3. 检查部署 YAML 文件

流程

  • 以下命令检查 YAML 部署文件中的安全策略的构建时间和部署时间违反情况:

    $ roxctl deployment check --file=<yaml_filename>

    格式在 API 引用中定义。要让 Red Hat Advanced Cluster Security for Kubernetes(RHACS) 从关联的 registry 和扫描程序中拉取镜像元数据和镜像扫描结果,请添加 --force 选项。

    注意

    要检查特定的镜像扫描结果,您必须具有 Image 资源的 readwrite 权限的令牌。默认的 Continuous Integration 系统角色已具有所需的权限。

    此命令验证以下项目:

    • YAML 文件中的配置选项,如资源限值或特权选项
    • YAML 文件中使用的镜像的各个方面,如组件或漏洞

4.4. 检查镜像

流程

  • 运行以下命令检查镜像中安全策略的构建时违反情况:

    $ roxctl image check --image=<image_name>

    格式在 API 引用中定义。要让 Red Hat Advanced Cluster Security for Kubernetes(RHACS) 从关联的 registry 和扫描程序中拉取镜像元数据和镜像扫描结果,请添加 --force 选项。

    注意

    要检查特定的镜像扫描结果,您必须具有 Image 资源的 readwrite 权限的令牌。默认的 Continuous Integration 系统角色已具有所需的权限。

4.5. 检查镜像扫描结果

您还可以检查特定镜像的扫描结果。

流程

  • 运行以下命令以以 JSON 格式返回镜像中发现的组件和漏洞:

    $ roxctl image scan --image <image_name>

    格式在 API 引用中定义。要让 Red Hat Advanced Cluster Security for Kubernetes(RHACS) 从关联的 registry 和扫描程序中拉取镜像元数据和镜像扫描结果,请添加 --force 选项。

    注意

    要检查特定的镜像扫描结果,您必须具有 Image 资源的 readwrite 权限的令牌。默认的 Continuous Integration 系统角色已具有所需的权限。

4.6. roxctl image 命令概述

您可以在特定镜像中运行的命令。

使用方法

$ roxctl image [command] [flags]

表 4.1. 可用命令
命令描述

check

检查镜像是否有构建时间策略违反情况,并报告它们。

扫描

扫描指定的镜像,并返回扫描结果。

表 4.2. 选项
选项描述

-t,--timeout 持续时间

为代表请求最长持续时间的 API 请求设置超时。默认值为 10m0s

4.6.1. roxctl image 命令选项从父命令继承

roxctl image 命令支持从父 roxctl 命令继承的以下选项:

选项描述

--ca string

为安全连接指定自定义 CA 证书文件路径。或者,您可以使用 ROX_CA_CERT_FILE 环境变量指定文件路径。

--direct-grpc

设置 --direct-grpc 以改进连接性能。或者,通过将 ROX_DIRECT_GRPC_CLIENT 环境变量设置为 true,您可以启用直接 gRPC。默认值为 false

-e, --endpoint string

将服务的端点设置为 contact。或者,您可以使用 ROX_ENDPOINT 环境变量设置端点。默认值为 localhost:8443

--force-http1

强制将 HTTP/1 用于所有连接。或者,通过将 ROX_CLIENT_FORCE_HTTP1 环境变量设置为 true,您可以强制使用 HTTP/1。默认值为 false

--insecure

启用不安全的连接选项。或者,通过将 ROX_INSECURE_CLIENT 环境变量设置为 true,您可以启用不安全的连接选项。默认值为 false

--insecure-skip-tls-verify

跳过 TLS 证书验证。或者,通过将 ROX_INSECURE_CLIENT_SKIP_TLS_VERIFY 环境变量设置为 true,您可以跳过 TLS 证书验证。默认值为 false

--no-color

禁用颜色输出。或者,通过将 ROX_NO_COLOR 环境变量设置为 true,您可以禁用颜色输出。默认值为 false

-p, --password string

指定基本身份验证的密码。或者,您可以使用 ROX_ADMIN_PASSWORD 环境变量设置密码。

--plaintext

使用未加密的连接。或者,通过将 ROX_PLAINTEXT 环境变量设置为 true,您可以启用未加密的连接。默认值为 false

-s, --server-name string

设置用于 SNI 的 TLS 服务器名称。或者,您可以使用 ROX_SERVER_NAME 环境变量设置服务器名称。

--token-file string

使用指定文件中提供的 API 令牌进行身份验证。另外,您可以使用 ROX_API_TOKEN 环境变量设置令牌。

注意

这些选项适用于 roxctl image 命令的所有子命令。

4.6.2. roxctl 镜像扫描

扫描指定的镜像,并返回扫描结果。

使用方法

$ roxctl image scan [flags]

表 4.3. 选项
选项描述

--cluster string

指定要将镜像扫描委派给的集群名称或 ID。

--compact-output

以紧凑格式显示 JSON 输出。默认值为 false

-f,--force

忽略 Central 的缓存,并强制从 Scanner 中重新拉取。默认值为 false

--headers string

指定要在表格化输出中打印的标头。默认值包括 COMPONENTVERSIONCVE、SEERITYLINK

--headers-as-comments

在 CSV 标签页化输出中将标头打印为注释。默认值为 false

-i,--image string

指定镜像名称并引用扫描。例如,nginx:latestnginx@sha256:…​

-a, --include-snoozed

在扫描结果中包含 snoozed 和 unsnoozed CVE。默认值为 false

--merge-output

在 tabular 输出中合并重复单元。默认值为 true

--no-header

不要打印表格输出的标头。默认值为 false

-o,--output string

指定输出格式。输出格式包括 csvjsonsarif

-r,--retries int

指定在退出作为错误前的重试次数。默认值为 3

-d, --retry-delay int

设置重试之间等待的时间(以秒为单位)。默认值为 3

--row-jsonpath-expressions string

指定从 JSON 对象创建行的 JSON 路径表达式。如需了解更多详细信息,请运行 roxctl image scan --help 命令。

4.6.3. roxctl image check

检查镜像是否有构建时间策略违反情况,并报告它们。

使用方法

$ roxctl image check [flags]

表 4.4. 选项
选项描述

-c, --categories strings

您要执行的策略类别列表。默认情况下使用所有策略类别。

--cluster string

定义您要用作评估上下文的集群名称或 ID。

--compact-output

以紧凑格式显示 JSON 输出。默认值为 false

-f,--force

绕过镜像的 Central 缓存,并强制从 Scanner 中进行新的拉取。默认值为 false

--headers string

定义要在表格化输出中打印的标头。默认值包括 POLICY,SEVERITY,BREAKS BUILD,DESCRIPTION,VIOLATION, 和 REMEDIATION

--headers-as-comments

在 CSV 标签页化输出中将标头打印为注释。默认值为 false

-i,--image string

指定镜像名称和引用。例如,nginx:latestnginx@sha256:…​)

--junit-suite-name string

设置 JUnit 测试套件的名称。默认值为 image-check

--merge-output

在 tabular 输出中合并重复单元。默认值为 false

--no-header

不要打印表格输出的标头。默认值为 false

-o,--output string

选择输出格式。输出格式包括 junitsariftablecsvjson。默认值为 table

-r,--retries int

设置退出作为错误前的重试次数。默认值为 3

-d, --retry-delay int

设置重试之间等待的时间(以秒为单位)。默认值为 3

--row-jsonpath-expressions string

使用 JSON 路径表达式从 JSON 对象创建行。如需了解更多详细信息,请运行 roxctl image check --help 命令。

--send-notifications

定义是否在出现违反情况时发送通知。默认值为 false

第 5 章 调试问题

Central 将信息保存到其容器日志中。

5.1. 先决条件

  • 您已使用以下命令配置了 ROX_ENDPOINT 环境变量:

    $ export ROX_ENDPOINT=<host:port> 1
    1
    存储在 ROX_ENDPOINT 环境变量中的主机和端口信息。

5.2. 查看日志

您可以使用 ockubectl 命令查看 Central pod 的日志。

流程

  • 要使用 kubectl 查看 Central pod 的日志,请运行以下命令:

    $ kubectl logs -n stackrox <central_pod>
  • 要使用 oc 查看 Central pod 的日志,请运行以下命令:

    $ oc logs -n stackrox <central_pod>

5.3. 查看当前日志级别

您可以更改日志级别,以在 Central 日志中看到更多或较少的信息。

流程

  • 运行以下命令来查看当前的日志级别:

    $ roxctl central debug log

5.4. 更改日志级别

流程

  • 运行以下命令来更改日志级别:

    $ roxctl central debug log --level=<log_level> 1
    1
    <log_level> 可以接受的值是:Panic, Fatal, Error, Warn, Info, 和 Debug

5.5. 检索调试信息

流程

  • 运行以下命令来收集调查问题的调试信息:

    $ roxctl central debug dump
  • 要使用 RHACS 管理员密码或 API 令牌和中央地址生成诊断捆绑包,请按照使用 roxctl CLI 生成诊断捆绑包 的步骤进行操作。

5.6. roxctl central debug 命令概述

调试中央服务。

使用方法

$ roxctl central debug [flags]

5.6.1. roxctl central debug 命令选项从父命令继承

roxctl central debug 命令支持从父 roxctl 命令继承的以下选项:

选项描述

--ca string

为安全连接指定自定义 CA 证书文件路径。或者,您可以使用 ROX_CA_CERT_FILE 环境变量指定文件路径。

--direct-grpc

设置 --direct-grpc 以改进连接性能。或者,通过将 ROX_DIRECT_GRPC_CLIENT 环境变量设置为 true,您可以启用直接 gRPC。默认值为 false

-e, --endpoint string

将服务的端点设置为 contact。或者,您可以使用 ROX_ENDPOINT 环境变量设置端点。默认值为 localhost:8443

--force-http1

强制将 HTTP/1 用于所有连接。或者,通过将 ROX_CLIENT_FORCE_HTTP1 环境变量设置为 true,您可以强制使用 HTTP/1。默认值为 false

--insecure

启用不安全的连接选项。或者,通过将 ROX_INSECURE_CLIENT 环境变量设置为 true,您可以启用不安全的连接选项。默认值为 false

--insecure-skip-tls-verify

跳过 TLS 证书验证。或者,通过将 ROX_INSECURE_CLIENT_SKIP_TLS_VERIFY 环境变量设置为 true,您可以跳过 TLS 证书验证。默认值为 false

--no-color

禁用颜色输出。或者,通过将 ROX_NO_COLOR 环境变量设置为 true,您可以禁用颜色输出。默认值为 false

-p, --password string

指定基本身份验证的密码。或者,您可以使用 ROX_ADMIN_PASSWORD 环境变量设置密码。

--plaintext

使用未加密的连接。或者,通过将 ROX_PLAINTEXT 环境变量设置为 true,您可以启用未加密的连接。默认值为 false

-s, --server-name string

设置用于 SNI 的 TLS 服务器名称。或者,您可以使用 ROX_SERVER_NAME 环境变量设置服务器名称。

--token-file string

使用指定文件中提供的 API 令牌进行身份验证。另外,您可以使用 ROX_API_TOKEN 环境变量设置令牌。

注意

这些选项适用于 roxctl central debug 命令的所有子命令。

5.6.2. roxctl central debug db

控制数据库的调试。

使用方法

$ roxctl central debug db [flags]

表 5.1. 选项
选项描述

-t,--timeout 持续时间

指定代表请求最长持续时间的 API 请求超时。默认值为 1m0s

5.6.3. roxctl central debug log

检索当前的日志级别。

使用方法

$ roxctl central debug log [flags]

表 5.2. 选项
选项描述

-l, --level string

指定要设置模块的日志级别。有效值包括 Debug,Info,Warn,Error,Panic, 和 Fatal

-m,--modules 字符串

指定要应用命令的模块。

--retry-timeout duration

指定重试 API 请求超时。值为零表示整个请求持续时间都在不重试的情况下等待。默认值为 20s

-t,--timeout 持续时间

指定 API 请求的超时时间,这是请求的最长持续时间。默认值为 1m0s

5.6.4. roxctl central debug dump

下载包含 Central 的调试信息的捆绑包。

使用方法

$ roxctl central debug dump [flags]

表 5.3. 选项
选项描述

--logs

如果设置为 true,则日志会包含在 Central 转储中。默认值为 false

--output-dir string

指定捆绑包内容的输出目录。默认值是当前目录中自动生成的目录名称。

-t,--timeout 持续时间

指定 API 请求的超时时间,这是请求的最长持续时间。默认值为 5m0s

5.6.5. roxctl central debug db stats

控制 Central 数据库的统计信息。

使用方法

$ roxctl central debug db stats [flags]

5.6.6. roxctl central debug authz-trace

在 Central 中启用或禁用授权追踪以进行调试。

使用方法

$ roxctl central debug authz-trace [flags]

表 5.4. 选项
选项描述

-t,--timeout 持续时间

指定代表请求最长持续时间的 API 请求超时。默认值为 20m0s

5.6.7. roxctl central debug db stats reset

重置 Central 数据库的统计信息。

使用方法

$ roxctl central debug db stats reset [flags]

5.6.8. roxctl central debug download-diagnostics

下载包含平台诊断信息的快照的捆绑包。

使用方法

$ roxctl central debug download-diagnostics [flags]

表 5.5. 选项
选项描述

--clusters string

指定您要从中收集日志的 Sensor 集群的逗号分隔列表。

--output-dir string

指定要保存诊断捆绑包的输出目录。

--since string

指定您要从 Sensor 集群收集日志的时间戳。

-t,--timeout 持续时间

指定 API 请求的超时时间,指定请求的最长持续时间。默认值为 5m0s

第 6 章 生成构建时网络策略

build-time 网络策略生成器包含在 roxctl CLI 中。对于构建网络策略生成功能,roxctl CLI 不需要与 RHACS Central 通信,因此您可以在任何开发环境中使用它。

6.1. 使用构建时网络策略生成器

重要

构建网络策略生成只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  1. build-time 网络策略生成器递归扫描您在运行命令时指定的目录。因此,在运行该命令前,您必须已具有服务清单、配置映射和工作负载清单,如 PodDeploymentReplicaSetJobDaemonSetStatefulSet 作为指定目录中的 YAML 文件。
  2. 使用 kubectl apply -f 命令验证这些 YAML 文件是否按原样应用。build-time 网络策略生成器无法用于使用 Helm 样式模板的文件。
  3. 验证服务网络地址没有硬编码。需要连接到服务的每个工作负载都必须将服务网络地址指定为变量。您可以使用工作负载的资源环境变量或配置映射来指定此变量。

  4. 服务网络地址必须与以下官方正则表达式模式匹配:

    (http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)? 1
    1
    在这种模式中,
    • <svc> 是服务名称。
    • <ns> 是定义该服务的命名空间。
    • <portNum> 是公开的服务端口号。

    以下是与模式匹配的一些示例:

    • wordpress-mysql:3306
    • redis-follower.redis.svc.cluster.local:6379
    • redis-leader.redis
    • http://rating-service.

流程

  1. 运行 help 命令验证构建网络策略生成功能是否可用:

    $ roxctl netpol generate -h
  2. 使用 netpol generate 命令生成策略:

    $ roxctl netpol generate <folder-path> 1
    1
    指定具有 Kubernetes 清单的文件夹路径。

roxctl netpol generate 命令支持以下选项:

选项

描述

-h, --help

查看 netpol 命令的帮助文本。

-d, --output-dir <dir>

将生成的策略保存到目标文件夹中。每个策略有一个文件。

-f, --output-file <filename>

将生成的策略保存并合并到单个 YAML 文件中。

--fail

在第一次遇到的错误时失败。默认值为 false

--remove

删除输出路径(如果已存在)。

--strict

将警告视为错误。默认值为 false

第 7 章 使用 roxctl CLI 进行镜像扫描

您可以使用 roxctl CLI 扫描存储在镜像 registry 中的镜像,包括集群本地 registry,如 OpenShift Container Platform 集成的镜像 registry。

7.1. 使用远程集群扫描镜像

通过在委托扫描配置中指定适当的集群,或通过以下流程中描述的 cluster 参数指定适当的集群,您可以使用远程集群从集群本地 registry 中扫描镜像。

重要

有关如何配置委派的镜像扫描的更多信息,请参阅配置委派的镜像扫描

流程

  • 运行以下命令扫描远程集群中的指定镜像:

    $ roxctl image scan \
      --image=<image_registry>/<image_name> \1
      --cluster=<cluster_detail> \2
      [flags] 3
    1
    对于 <image_registry >,请指定镜像所在的 registry,例如 image-registry.openshift-image-registry.svc:5000/。对于 <image_name >,请指定您要扫描的镜像的名称,如 default/image-stream:latest
    2
    对于 <cluster_detail >,请指定远程集群的名称或 ID。例如,指定名称 remote
    3
    可选: 对于 [flags],您可以指定参数来修改命令的行为。

    有关可选参数的更多信息,请参阅 roxctl image scan 命令选项

    输出示例

    {
      "Id": "sha256:3f439d7d71adb0a0c8e05257c091236ab00c6343bc44388d091450ff58664bf9", 1
      "name": { 2
        "registry": "image-registry.openshift-image-registry.svc:5000", 3
        "remote": "default/image-stream", 4
        "tag": "latest", 5
        "fullName": "image-registry.openshift-image-registry.svc:5000/default/image-stream:latest" 6
      },
    [...]

    1
    用作镜像指纹的镜像的唯一标识符。它有助于确保镜像的完整性和真实性。
    2
    包含镜像的具体详情。
    3
    存储镜像 registry 的位置。
    4
    到镜像的远程路径。
    5
    与此镜像关联的版本或标签。
    6
    镜像的完整名称,组合 registry、远程路径和标签。

7.2. roxctl image scan 命令选项

roxctl image scan 命令支持以下选项:

选项描述

--cluster string

将镜像扫描委派给特定集群。

--compact-output

以紧凑格式显示 JSON 输出。默认值为 false

-f,--force

忽略扫描的 Central 缓存,并强制从 Scanner 重新拉取。默认值为 false

--headers string

以表格形式打印标头。默认值包括 COMPONENTVERSIONCVE、SEER ITY 和 LINK

--headers-as-comments

在 CSV 标签页化输出中将标头显示为注释。默认值为 false

-h--help

查看 roxctl image scan 命令的帮助文本。

-i,--image string

指定镜像名称和您要扫描的引用。

-a, --include-snoozed

返回 snoozed 和 unsnoozed 通用漏洞和暴露(CVE)。默认值为 false

--merge-output

在 tabular 输出中合并重复单元。默认值为 true

--no-header

不要打印表格格式的标头。默认值为 false

-o,--output string

指定输出格式。您可以选择自定义结果显示的格式。格式包括 CSVJSONSARIF

-r,--retries int

在操作中止前设置重试次数,并显示错误。默认值为 3

-d, --retry-delay int

设置重试之间等待的时间(以秒为单位)。默认值为 3

--row-jsonpath-expressions string

使用 JSON 路径表达式从 JSON 对象创建行。如需了解更多详细信息,请运行 roxctl image scan --help 命令。

法律通告

Copyright © 2024 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.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.