roxctl CLI

Red Hat Advanced Cluster Security for Kubernetes 3.69

请在这里输入简短描述。

摘要

本书的主题和目的的简短概述,一般不多于一个段落。

第 1 章 roxctl CLI 入门

roxctl 是一个命令行界面(CLI),用于在 Red Hat Advanced Cluster Security for Kubernetes 上运行命令。本主题描述了 roxctl 语法、操作,并提供一些常见示例。

1.1. 安装 roxctl CLI

您可以通过下载二进制文件来安装 roxctl CLI。或者,您可以从容器镜像运行 roxctl CLI。

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

您可以安装 roxctl CLI 来使用命令行界面与 Red Hat Advanced Cluster Security for Kubernetes 进行交互。您可以在 Linux、Windows 或 macOS 上安装 roxctl

1.1.1.1. 在 Linux 中安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.69.2/bin/Linux/roxctl
  2. 使 roxctl 二进制文件可执行:

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

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

    $ echo $PATH

验证

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

    $ roxctl version

1.1.1.2. 在 macOS 上安装 roxctl CLI

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

流程

  1. 下载 roxctl CLI 的最新版本:

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

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

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

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

    $ echo $PATH

验证

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

    $ roxctl version

1.1.1.3. 在 Windows 上安装 roxctl CLI

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

流程

  • 下载 roxctl CLI 的最新版本:

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

验证

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

    $ roxctl version

1.1.2. 从容器运行 roxctl CLI

roxctl 客户端是 Red Hat Advanced Cluster Security for Kubernetes roxctl 镜像的默认入口点。在容器镜像中运行 roxctl 客户端:

流程

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

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

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

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

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

验证

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

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

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

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

使用以下步骤生成身份验证令牌。

流程

  1. 进入 RHACS 门户。
  2. 进入 Platform ConfigurationIntegrations
  3. 向下滚动到 Authentication Tokens 类别,然后单击 API Token
  4. Generate Token
  5. 为令牌输入一个名称,再选择提供所需访问级别的角色(例如,持续集成或 Sensor Creator )。
  6. Generate

    重要

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

注意

生成身份验证令牌后,将其导出为 ROX_API_TOKEN 变量:

$ export ROX_API_TOKEN=<api_token>

您还可以将令牌保存到文件中,并将它与 --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 使用指定的密码进行身份验证。

1.3. 使用 roxctl CLI

参阅以下部分以了解如何使用 CLI 完成常见任务。

注意
  • 在使用这些命令前导出以下变量:

    $ export ROX_API_TOKEN=<api_token>
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
  • 您可以使用 --help 选项获取有关命令的更多信息。

1.3.1. 管理中央数据库

中央存储以下信息:

  • 在集群中观察到的活动,
  • 从集成镜像 registry 或扫描程序检索的信息,
  • Red Hat Advanced Cluster Security for Kubernetes 配置。

您可以使用 roxctl CLI 备份和恢复 Central 的数据库。

备份中央数据库

运行以下命令备份 Central 的数据库:

$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
恢复中央数据库

运行以下命令来恢复 Central 的数据库:

$ roxctl -e "$ROX_CENTRAL_ADDRESS" central db restore <backup_filename>

1.3.2. 管理安全集群

要保护 Kubernetes 或 OpenShift Container Platform 集群,您必须将 Red Hat Advanced Cluster Security for Kubernetes 服务部署到集群中。您可以通过导航到 Platform ConfigurationClusters 视图,或者在 RHACS 门户网站中生成部署文件,也可以使用 roxctl CLI。

生成 Sensor 部署 YAML 文件

Kubernetes

$ roxctl -e "$ROX_CENTRAL_ADDRESS" sensor generate k8s --name <cluster_name> --central "$ROX_CENTRAL_ADDRESS"

OpenShift Container Platform

$ roxctl -e "$ROX_CENTRAL_ADDRESS" sensor generate openshift --name <cluster_name> --central "$ROX_CENTRAL_ADDRESS"

请阅读 --help 输出,查看您可能需要根据系统架构使用的其他选项。

确保从部署 Red Hat Advanced Cluster Security for Kubernetes 服务的集群中访问您提供的 --central 的端点。

注意

如果您使用一个支持非gRPC 的负载均衡器,如 HAProxy、AWS Application Load Balancer(ALB)或 AWS Elastic Load Balancing(ELB):

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

    $ roxctl sensor generate k8s --central wss://stackrox-central.example.com:443
为现有集群下载 Sensor 捆绑包

使用以下命令指定集群名称或 ID,为现有集群下载 Sensor 捆绑包。

$ roxctl sensor get-bundle <cluster_name_or_id>
删除集群集成
$ roxctl -e "$ROX_CENTRAL_ADDRESS" cluster delete --name=<cluster_name>
重要

删除集群集成不会删除集群中运行的 Kubernetes 服务的 Red Hat Advanced Cluster Security for Kubernetes 服务。您可以通过从 Sensor 安装捆绑包中运行 delete-sensor.sh 脚本来删除它们。

1.3.3. 检查策略合规性

您可以使用 roxctl CLI 检查部署 YAML 文件和策略合规性的镜像。

配置输出格式

当使用 部署检查、镜像检查 或镜像扫描命令检查策略合规性时,您可以使用 -o 选项指定输出格式。这个选项决定了在终端中如何显示命令的输出。

您可以通过在 命令中添加 -o 选项来更改输出格式,并指定 jsoncsvjunit 的格式。

对于考试,以下命令检查部署,然后以 csv 格式显示结果:

$ roxctl -e "$ROX_CENTRAL_ADDRESS" \
  deployment check --file =<yaml_filename> \
  -o csv
注意

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

  • 部署检查 的格式,镜像检查 命令为 table
  • 镜像扫描命令的默认输出格式是 json这是与旧版 CLI 兼容的旧 JSON 格式输出。要获得新的 JSON 格式的输出,请使用格式指定 选项,格式为 -o json

有不同的选项可用于配置输出。下表列出了可用的选项和格式。

选项描述格式

--compact-output

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

json

--headers

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

csv

--no-header

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

csv

--row-jsonpath-expressions

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

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

csv

--merge-output

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

标头( header-as-comment)

使用此选项将标题行作为注释包含在输出中。

csv

--junit-suite-name

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

junit

检查部署 YAML 文件

以下命令检查 YAML 部署文件中您的安全策略的构建时间和运行时违反情况。使用这个命令验证:

  • YAML 文件中的配置选项,如资源限值或权限选项 ; 或者
  • YAML 文件中使用的镜像的各个方面,如组件或漏洞。
$ roxctl -e "$ROX_CENTRAL_ADDRESS" deployment check --file=<yaml_filename>
检查镜像

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

$ roxctl -e "$ROX_CENTRAL_ADDRESS" image check --image=<image_name>
检查镜像扫描结果

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

以下命令以 JSON 格式返回镜像中找到的组件和漏洞。格式在 API 引用中定义。

$ roxctl -e "$ROX_CENTRAL_ADDRESS" image scan --image <image_name>

要让 Red Hat Advanced Cluster Security for Kubernetes 从关联的 registry 和扫描程序重新拉取镜像元数据和镜像扫描结果,请添加 --force 选项。

注意

要检查特定的镜像扫描结果,必须具有镜像资源的 读写权限 的令牌。默认 持续集成 系统角色已经具有所需的权限。

1.3.4. 调试问题

管理中央日志级别

中心将信息保存至其容器日志中。

查看日志

您可以通过运行以下命令查看 Central 的容器日志:

Kubernetes

$ kubectl logs -n stackrox <central_pod>

OpenShift Container Platform

$ oc logs -n stackrox <central_pod>

查看当前的日志级别

您可以更改日志级别以在 Central 日志中查看更多或更少的信息。运行以下命令查看当前的日志级别:

$ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug log
更改日志级别

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

$ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug log --level=<log_level> 1
1
< log_level > 的可接受值为 PanicFatalErrorWarnInfoDebug
检索调试信息

要为调查问题收集调试信息,请运行以下命令:

$ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug dump