$ ROXPATH=$(which roxctl) && rm -f $ROXPATH (1)
您可以使用 roxctl
CLI 升级 RHACS 云服务中的受保护集群。
仅当您使用 |
roxctl
CLI要将 roxctl
CLI 升级到最新版本,必须卸载当前版本的 roxctl
CLI,然后安装最新版本的 roxctl
CLI。
您可以使用以下步骤卸载 Linux 上的 roxctl
CLI 二进制文件。
查找并删除 roxctl
二进制文件
$ ROXPATH=$(which roxctl) && rm -f $ROXPATH (1)
1 | 根据您的环境,您可能需要管理员权限才能删除 roxctl 二进制文件。 |
您可以使用以下步骤在 Linux 上安装 roxctl
CLI 二进制文件。
适用于 Linux 的 |
确定目标操作系统的 roxctl
架构
$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
下载 roxctl
CLI
$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.6.1/bin/Linux/roxctl${arch}"
使 roxctl
二进制文件可执行
$ chmod +x roxctl
将 roxctl
二进制文件放在您的 PATH
上的目录中
要检查您的 PATH
,请执行以下命令
$ echo $PATH
验证您已安装的 roxctl
版本
$ roxctl version
您可以使用以下步骤在 macOS 上安装 roxctl
CLI 二进制文件。
适用于 macOS 的 |
确定目标操作系统的 roxctl
架构
$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
下载 roxctl
CLI
$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.6.1/bin/Darwin/roxctl${arch}"
删除二进制文件中的所有扩展属性
$ xattr -c roxctl
使 roxctl
二进制文件可执行
$ chmod +x roxctl
将 roxctl
二进制文件放在您的 PATH
上的目录中
要检查您的 PATH
,请执行以下命令
$ echo $PATH
验证您已安装的 roxctl
版本
$ roxctl version
为确保最佳功能,请为您的安全集群使用与 RHACS 云服务运行相同的 RHACS 版本。如果您使用自动升级,请使用自动升级更新所有安全集群。如果您不使用自动升级,请针对所有安全集群完成本节中的说明。 |
要完成运行 Sensor、Collector 和 Admission controller 的每个安全集群的手动升级,请按照以下说明操作。
如果不使用自动升级,则必须更新每个安全集群上的 Sensor、Collector 和 Compliance 镜像。
如果您使用 Kubernetes,请使用 |
更新 Sensor 镜像
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.6.1 (1)
1 | 如果您使用 Kubernetes,请输入 kubectl 代替 oc 。 |
更新 Compliance 镜像
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.6.1 (1)
1 | 如果您使用 Kubernetes,请输入 kubectl 代替 oc 。 |
更新 Collector 镜像
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.6.1 (1)
1 | 如果您使用 Kubernetes,请输入 kubectl 代替 oc 。 |
如果您使用的是精简版 Collector 镜像,请改用以下命令
|
更新准入控制镜像
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.6.1
如果您使用 有关更多信息,请参阅“附加资源”部分中的“手动升级期间迁移 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
字段指定的。
添加所需的 roles 和 role bindings 以使用 Red Hat OpenShift SCC 代替 RHACS 自定义 SCC。
要添加所需的 roles 和 role bindings 以对所有安全集群使用 Red Hat OpenShift SCC,请完成以下步骤
创建一个名为 upgrade-scs.yaml
的文件,使用以下内容定义 role 和 role binding 资源
apiVersion: rbac.authorization.k8s.io/v1
kind: Role (1)
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-scc (2)
namespace: stackrox (3)
rules: (4)
- apiGroups:
- security.openshift.io
resourceNames:
- privileged
resources:
- securitycontextconstraints
verbs:
- use
- - -
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding (5)
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-scc (6)
namespace: stackrox
roleRef: (7)
apiGroup: rbac.authorization.k8s.io
kind: Role
name: use-privileged-scc
subjects: (8)
- kind: ServiceAccount
name: collector
namespace: stackrox
- - -
1 | Kubernetes 资源的类型,在此示例中为 Role 。 |
2 | role 资源的名称。 |
3 | 创建 role 的命名空间。 |
4 | 描述 role 资源授予的权限。 |
5 | Kubernetes 资源的类型,在此示例中为 RoleBinding 。 |
6 | role binding 资源的名称。 |
7 | 指定在同一命名空间中绑定的 role。 |
8 | 指定绑定到 role 的主体。 |
通过运行以下命令创建 upgrade-scs.yaml
文件中指定的 role 和 role binding 资源
$ oc -n stackrox create -f ./update-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:'
将输出与下表进行比较
组件 | 以前的自定义 SCC | 新的 Red Hat OpenShift 4 SCC |
---|---|---|
Central |
|
|
Central-db |
|
|
Scanner |
|
|
Scanner-db |
|
|
准入控制器 |
|
|
Collector |
|
|
Sensor |
|
|
升级到 4.4 版需要您手动将 GOMEMLIMIT
环境变量替换为 ROX_MEMLIMIT
环境变量。必须为每个部署编辑此变量。
运行以下命令以编辑 Sensor 部署的变量
$ oc -n stackrox edit deploy/sensor (1)
1 | 如果您使用 Kubernetes,请输入 kubectl 代替 oc 。 |
将 GOMEMLIMIT
变量替换为 ROX_MEMLIMIT
。
保存文件。
升级到 4.4 版需要您手动将 GOMEMLIMIT
环境变量替换为 ROX_MEMLIMIT
环境变量。必须为每个部署编辑此变量。
运行以下命令以编辑 Collector 部署的变量
$ oc -n stackrox edit deploy/collector (1)
1 | 如果您使用 Kubernetes,请输入 kubectl 代替 oc 。 |
将 GOMEMLIMIT
变量替换为 ROX_MEMLIMIT
。
保存文件。
如果您使用 OpenShift Container Platform,则可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 启用对 Red Hat Enterprise Linux CoreOS (RHCOS) 节点的漏洞扫描。
要扫描安全集群的 RHCOS 节点主机,必须在 OpenShift Container Platform 4.12 或更高版本上安装了安全集群服务。有关支持的平台和架构的信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持矩阵。有关 RHACS 的生命周期支持信息,请参阅 Red Hat Advanced Cluster Security for Kubernetes 支持策略。
运行以下命令之一以更新 compliance 容器。
对于禁用指标的默认 compliance 容器,请运行以下命令
$ 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 指标的 compliance 容器,请运行以下命令
$ 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.6.1","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"}]}]}}}}'