9.3. 使用 roxctl CLI 在 RHACS 云服务中手动升级安全集群
您可以使用 roxctl CLI 在 RHACS 云服务中升级安全集群。
只有在使用 roxctl CLI 安装安全集群时,才需要手动升级安全集群。
9.3.1. 升级 roxctl CLI 复制链接链接已复制到粘贴板!
要将 roxctl CLI 升级到最新版本,您必须卸载 roxctl CLI 的当前版本,然后安装 roxctl CLI 的最新版本。
9.3.1.1. 卸载 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程卸载 Linux 上的 roxctl CLI 二进制文件。
流程
查找并删除
roxctl二进制文件:$ ROXPATH=$(which roxctl) && rm -f $ROXPATH1 - 1
- 根据您的环境,您可能需要管理员删除
roxctl二进制文件。
9.3.1.2. 在 Linux 中安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 Linux 上安装 roxctl CLI 二进制文件。
用于 Linux 的 roxctl CLI 可用于 amd 64、rm64、 ppc64le 和 s390x 架构。
流程
确定目标操作系统的
roxctl架构:$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"下载
roxctlCLI:$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.8.5/bin/Linux/roxctl${arch}"使
roxctl二进制文件可执行:$ chmod +x roxctl将
roxctl二进制文件放到PATH中的目录中:要查看您的
PATH,请执行以下命令:$ echo $PATH
验证
验证您已安装的
roxctl版本:$ roxctl version
9.3.1.3. 在 macOS 上安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 macOS 中安装 roxctl CLI 二进制文件。
macOS 的 roxctl CLI 可用于 amd64 和 arm64 架构。
流程
确定目标操作系统的
roxctl架构:$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"下载
roxctlCLI:$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.8.5/bin/Darwin/roxctl${arch}"从二进制文件中删除所有扩展属性:
$ xattr -c roxctl使
roxctl二进制文件可执行:$ chmod +x roxctl将
roxctl二进制文件放到PATH中的目录中:要查看您的
PATH,请执行以下命令:$ echo $PATH
验证
验证您已安装的
roxctl版本:$ roxctl version
9.3.1.4. 在 Windows 上安装 roxctl CLI 复制链接链接已复制到粘贴板!
您可以按照以下流程在 Windows 上安装 roxctl CLI 二进制文件。
用于 Windows 的 roxctl CLI 可用于 amd64 架构。
流程
下载
roxctlCLI:$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.8.5/bin/Windows/roxctl.exe
验证
验证您已安装的
roxctl版本:$ roxctl version
9.3.2. 手动升级所有安全集群 复制链接链接已复制到粘贴板!
为确保最佳功能,请为您的 RHACS 云服务运行的安全集群使用相同的 RHACS 版本。如果您使用自动升级,请使用自动升级来更新所有安全集群。如果没有使用自动升级,请在所有安全集群中完成本节中的说明。
要完成每个运行 Sensor、Collector 和 Admission 控制器的安全集群的手动升级,请按照以下步骤操作。
9.3.2.1. 更新其他镜像 复制链接链接已复制到粘贴板!
在不使用自动升级时,您必须更新每个安全集群中的 sensor, collector 和 compliance 镜像。
如果使用 Kubernetes,请在此流程中列出的命令中使用 kubectl 而不是 oc。
流程
更新 Sensor 镜像:
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.51 - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
更新 Compliance 镜像:
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.51 - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
更新 Collector 镜像:
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.8.51 - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
更新准入控制镜像:
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.5
如果您使用 roxctl CLI 在 Red Hat OpenShift 上安装 RHACS,则需要迁移安全性上下文约束(SCC)。
如需更多信息,请参阅"添加资源"部分中的"手动升级过程中缓解 SCC"。
9.3.2.2. 在手动升级过程中迁移 SCC 复制链接链接已复制到粘贴板!
通过使用 roxctl CLI 在手动升级过程中迁移安全性上下文约束(SCC),您可以无缝转换 Red Hat Advanced Cluster Security for Kubernetes (RHACS)服务以使用 Red Hat OpenShift SCC,确保 Central 和所有安全的集群间的兼容性和最佳安全配置。
流程
列出在所有安全集群中部署的所有 RHACS 服务:
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'输出示例
Name: admission-control-6f4dcc6b4c-2phwd openshift.io/scc: stackrox-admission-control #... Name: central-575487bfcb-sjdx8 openshift.io/scc: stackrox-central Name: central-db-7c7885bb-6bgbd openshift.io/scc: stackrox-central-db Name: collector-56nkr openshift.io/scc: stackrox-collector #... Name: scanner-68fc55b599-f2wm6 openshift.io/scc: stackrox-scanner Name: scanner-68fc55b599-fztlh #... Name: sensor-84545f86b7-xgdwf openshift.io/scc: stackrox-sensor #...在本例中,您可以看到每个 Pod 都有自己的自定义 SCC,这通过
openshift.io/scc字段指定。- 添加所需的角色和角色绑定,以使用 Red Hat OpenShift SCC 而不是 RHACS 自定义 SCC。
要添加所需的角色和角色绑定,以便将 Red Hat OpenShift SCC 用于所有安全集群,请完成以下步骤:
创建名为
upgrade-scs.yaml的文件,该文件使用以下内容定义角色和角色绑定资源:例 9.1. YAML 文件示例
apiVersion: rbac.authorization.k8s.io/v1 kind: Role1 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: collector app.kubernetes.io/instance: stackrox-secured-cluster-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-secured-cluster-services app.kubernetes.io/version: 4.4.0 auto-upgrade.stackrox.io/component: sensor name: use-privileged-scc2 namespace: stackrox3 rules:4 - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding5 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: collector app.kubernetes.io/instance: stackrox-secured-cluster-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-secured-cluster-services app.kubernetes.io/version: 4.4.0 auto-upgrade.stackrox.io/component: sensor name: collector-use-scc6 namespace: stackrox roleRef:7 apiGroup: rbac.authorization.k8s.io kind: Role name: use-privileged-scc subjects:8 - kind: ServiceAccount name: collector namespace: stackrox - - -运行以下命令,创建
upgrade-scs.yaml文件中指定的角色和角色绑定资源:$ oc -n stackrox create -f ./update-scs.yaml重要您必须在每个安全集群中运行此命令,以创建
upgrade-scs.yaml文件中指定的角色和角色绑定。
删除特定于 RHACS 的 SCC:
要删除特定于所有安全集群的 SCC,请运行以下命令:
$ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor重要您必须在每个安全集群中运行此命令,才能删除特定于每个安全集群的 SCC。
验证
运行以下命令,确保所有 pod 都使用正确的 SCC:
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'将输出与下表进行比较:
Expand 组件 以前的自定义 SCC 新的 Red Hat OpenShift 4 SCC Central
stackrox-centralnonroot-v2Central-db
stackrox-central-dbnonroot-v2扫描程序
stackrox-scannernonroot-v2Scanner-db
stackrox-scannernonroot-v2Admission Controller
stackrox-admission-controlrestricted-v2Collector
stackrox-collectorprivilegedSensor
stackrox-sensorrestricted-v2
9.3.2.2.1. 验证安全集群升级 复制链接链接已复制到粘贴板!
在升级了安全集群后,验证更新的 pod 是否正常工作。
9.3.3. 使用 StackRox Scanner 启用 RHCOS 节点扫描 复制链接链接已复制到粘贴板!
如果使用 OpenShift Container Platform,您可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)启用扫描 Red Hat Enterprise Linux CoreOS (RHCOS)节点的扫描漏洞。
扫描节点时,使用 Scanner V4 作为完整的功能。有关使用 StackRox 扫描程序,请参阅"启用扫描器 V4"。
先决条件
- 要扫描安全集群的 RHCOS 节点主机,您必须在 OpenShift Container Platform 4.12 或更高版本上安装了安全的集群服务。有关支持的平台和架构的详情,请查看 Red Hat Advanced Cluster Security for Kubernetes 支持列表。有关 RHACS 的生命周期支持信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持政策。
- 这个步骤描述了如何首次启用节点扫描。如果您要将 Red Hat Advanced Cluster Security for Kubernetes 配置为使用 StackRox Scanner 而不是 Scanner V4,请按照 "使用 StackRox Scanner" 配置 RHCOS 节点扫描过程中的步骤进行操作。
流程
运行以下命令来更新合规性容器之一。
对于禁用了指标的默认合规容器,请运行以下命令:
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'对于启用了 Prometheus 指标的合规性容器,请运行以下命令:
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
通过执行以下步骤更新 Collector DaemonSet (DS):
运行以下命令,将新卷挂载添加到 Collector DS 中:
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'运行以下命令添加新
NodeScanner容器:$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.8.5","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'