9.3. roxctl CLI を使用した RHACS Cloud Service でのセキュアクラスターの手動アップグレード
roxctl CLI を使用して、RHACS Cloud Service でセキュアクラスターをアップグレードできます。
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 $ROXPATH注記環境によっては、
roxctlバイナリーを削除するために管理者権限が必要になる場合があります。
9.3.1.2. Linux への roxctl CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、Linux に roxctl CLI バイナリーをインストールできます。
Linux 用の roxctl CLI は、amd64、arm64、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.7.8/bin/Linux/roxctl${arch}"roxctlバイナリーを実行可能にします。$ chmod +x roxctlPATH上にあるディレクトリーにroxctlバイナリーを配置します。PATHを確認するには、以下のコマンドを実行します。$ echo $PATH
検証
インストールした
roxctlのバージョンを確認します。$ roxctl version
9.3.1.3. macOS への roxctl CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、roxctl CLI バイナリーを macOS にインストールできます。
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.7.8/bin/Darwin/roxctl${arch}"バイナリーからすべての拡張属性を削除します。
$ xattr -c roxctlroxctlバイナリーを実行可能にします。$ chmod +x roxctlPATH上にあるディレクトリーにroxctlバイナリーを配置します。PATHを確認するには、以下のコマンドを実行します。$ echo $PATH
検証
インストールした
roxctlのバージョンを確認します。$ roxctl version
9.3.1.4. Windows への roxctl CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、roxctl CLI バイナリーを Windows にインストールできます。
Windows 用の roxctl CLI は、amd64 アーキテクチャーで使用できます。
手順
roxctlCLI をダウンロードします。$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.7.8/bin/Windows/roxctl.exe
検証
インストールした
roxctlのバージョンを確認します。$ roxctl version
9.3.2. すべてのセキュアクラスターの手動アップグレード リンクのコピーリンクがクリップボードにコピーされました!
最適な機能を実現するには、RHACS Cloud Service が実行しているバージョンと同じ RHACS バージョンをセキュアクラスターに使用してください。自動アップグレードを使用している場合は、自動アップグレードを使用してすべてのセキュアクラスターを更新します。自動アップグレードを使用していない場合は、すべてのセキュアクラスターでこのセクションの手順を完了してください。
Sensor、Collector、および Admission コントローラーを実行している各セキュアクラスターの手動アップグレードを完了するには、次の手順に従ってください。
9.3.2.1. その他のイメージの更新 リンクのコピーリンクがクリップボードにコピーされました!
自動アップグレードを使用しない場合は、各セキュアクラスターの Sensor、Collector、Compliance イメージを更新する必要があります。
Kubernetes を使用している場合は、この手順にリストされているコマンドで oc の代わりに kubectl を使用してください。
手順
Sensor イメージを更新します。
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.8Compliance イメージを更新します。
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.8Collector イメージを更新します。
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.7.8アドミッションコントロールイメージを更新します。
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.8重要roxctlCLI を使用して Red Hat OpenShift に RHACS をインストールした場合は、Security Context Constraints (SCC) を移行する必要があります。詳細は、「関連情報」セクションの「手動アップグレード中の SCC の移行」を参照してください。
9.3.2.2. 手動アップグレード中の SCC の移行 リンクのコピーリンクがクリップボードにコピーされました!
roxctl CLI を使用して手動アップグレード中に Security Context Constraints (SCC) を移行すると、Red Hat OpenShift SCC を使用するように Red Hat Advanced Cluster Security for Kubernetes (RHACS) サービスを移行して、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フィールドで指定されていることがわかります。- RHACS のカスタム SCC の代わりに Red Hat OpenShift SCC を使用するには、必要なロールとロールバインディングを追加します。
すべてのセキュアクラスターで Red Hat OpenShift SCC を使用するために必要なロールとロールバインディングを追加するには、次の手順を実行します。
次の内容を使用して、ロールリソースとロールバインディングリソースを定義する
upgrade-scs.yamlという名前のファイルを作成します。例9.1 サンプル YAML ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: Role # 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 # namespace: stackrox # rules: # - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding # 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 # namespace: stackrox roleRef: # apiGroup: rbac.authorization.k8s.io kind: Role name: use-privileged-scc subjects: # - kind: ServiceAccount name: collector namespace: stackrox - - -各項目の説明:
kind: Role-
Kubernetes リソースのタイプを指定します。この例では
Roleです。 metadata.name: <rolename>- ロールリソースの名前を指定します。
metadata.namespace- ロールが作成される namespace を指定します。
ルール- ロールリソースによって付与されるパーミッションを指定します。
kind: RoleBinding-
Kubernetes リソースのタイプを指定します。この例では
RoleBindingです。 metadata.name: <rolebindingname>- ロールバインディングリソースの名前を指定します。
metadata.roleRef- 同じ namespace 内のバインドするロールを指定します。
metadata.subjects- ロールにバインドするサブジェクトを指定します。
次のコマンドを実行して、
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-v2Scanner
stackrox-scannernonroot-v2Scanner-db
stackrox-scannernonroot-v2Admission Controller
stackrox-admission-controlrestricted-v2Collector
stackrox-collectorprivilegedSensor
stackrox-sensorrestricted-v2
9.3.2.2.1. セキュアクラスターのアップグレードの確認 リンクのコピーリンクがクリップボードにコピーされました!
セキュアクラスターをアップグレードしたら、更新された Pod が機能していることを確認します。
Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。
手順
新しい Pod がデプロイされていることを確認します。
$ oc get deploy,ds -n stackrox -o wide$ oc get pod -n stackrox --watch
9.3.3. StackRox Scanner を使用した RHCOS ノードスキャンの有効化 リンクのコピーリンクがクリップボードにコピーされました!
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 Support Matrix を参照してください。RHACS のライフサイクルのサポート情報は、Red Hat Advanced Cluster Security for Kubernetes サポートポリシー を参照してください。
- この手順では、ノードスキャンを初めて有効にする方法を説明します。Scanner V4 ではなく StackRox Scanner を使用するように Red Hat Advanced Cluster Security for Kubernetes を再設定する場合は、「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.7.8","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"}]}]}}}}'