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 1
- 1
- 環境によっては、
roxctl
バイナリーを削除するために管理者権限が必要になる場合があります。
9.3.1.2. Linux への roxctl CLI のインストール
次の手順を使用して、Linux に roxctl
CLI バイナリーをインストールできます。
Linux 用の roxctl
CLI は、amd64
、ppcl64le
、および s390x
アーキテクチャーで使用できます。
手順
ターゲットのオペレーティングシステムの
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.4.5/bin/Linux/roxctl${arch}"
roxctl
バイナリーを実行可能にします。$ chmod +x roxctl
PATH
上にあるディレクトリーにroxctl
バイナリーを配置します。PATH
を確認するには、以下のコマンドを実行します。$ echo $PATH
検証
インストールした
roxctl
のバージョンを確認します。$ roxctl version
9.3.1.3. macOS への roxctl CLI のインストール
次の手順を使用して、roxctl
CLI バイナリーを macOS にインストールできます。
macOS 用の roxctl
CLI は、amd64
アーキテクチャーで利用できます。
手順
roxctl
CLI をダウンロードします。$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.4.5/bin/Darwin/roxctl${arch}"
バイナリーからすべての拡張属性を削除します。
$ xattr -c roxctl
roxctl
バイナリーを実行可能にします。$ chmod +x roxctl
PATH
上にあるディレクトリーにroxctl
バイナリーを配置します。PATH
を確認するには、以下のコマンドを実行します。$ echo $PATH
検証
インストールした
roxctl
のバージョンを確認します。$ roxctl version
9.3.1.4. Windows への roxctl CLI のインストール
次の手順を使用して、roxctl
CLI バイナリーを Windows にインストールできます。
Windows 用の roxctl
CLI は、amd64
アーキテクチャーで使用できます。
手順
roxctl
CLI をダウンロードします。$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.4.5/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.4.5 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
Compliance イメージを更新します。
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.4.5 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
Collector イメージを更新します。
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.4.5 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
注記コレクタースリムイメージを使用している場合は、代わりに次のコマンドを実行します。
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:{rhacs-version}
アドミッションコントロールイメージを更新します。
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.4.5
roxctl
CLI を使用して 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 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 - - -
次のコマンドを実行して、
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:'
出力を次の表と比較してください。
コンポーネント 以前のカスタム SCC Red Hat OpenShift 4 の新しい SCC Central
stackrox-central
nonroot-v2
Central-db
stackrox-central-db
nonroot-v2
Scanner
stackrox-scanner
nonroot-v2
Scanner-db
stackrox-scanner
nonroot-v2
Admission Controller
stackrox-admission-control
restricted-v2
Collector
stackrox-collector
privileged
Sensor
stackrox-sensor
restricted-v2
9.3.2.2.1. Sensor デプロイメントの GOMEMLIMIT 環境変数の編集
バージョン 4.4 にアップグレードするには、GOMEMLIMIT
環境変数を ROX_MEMLIMIT
環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
次のコマンドを実行して、Sensor デプロイメントの変数を編集します。
$ oc -n stackrox edit deploy/sensor 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
-
GOMEMLIMIT
変数をROX_MEMLIMIT
に置き換えます。 - ファイルを保存します。
9.3.2.2.2. Collector デプロイメントの GOMEMLIMIT 環境変数の編集
バージョン 4.4 にアップグレードするには、GOMEMLIMIT
環境変数を ROX_MEMLIMIT
環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
Collector デプロイメントの変数を編集するには、次のコマンドを実行します。
$ oc -n stackrox edit deploy/collector 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
-
GOMEMLIMIT
変数をROX_MEMLIMIT
に置き換えます。 - ファイルを保存します。
9.3.2.2.3. Admission Controller デプロイメントの GOMEMLIMIT 環境変数の編集
バージョン 4.4 にアップグレードするには、GOMEMLIMIT
環境変数を ROX_MEMLIMIT
環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
次のコマンドを実行して、Admission Controller デプロイメントの変数を編集します。
$ oc -n stackrox edit deploy/admission-control 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
-
GOMEMLIMIT
変数をROX_MEMLIMIT
に置き換えます。 - ファイルを保存します。
9.3.2.2.4. セキュアクラスターのアップグレードの確認
セキュアクラスターをアップグレードしたら、更新された Pod が機能していることを確認します。
9.3.3. RHCOS ノードスキャンの有効化
OpenShift Container Platform を使用する場合は、Red Hat Advanced Cluster Security for Kubernetes (RHACS) を使用して、Red Hat Enterprise Linux CoreOS (RHCOS) ノードの脆弱性スキャンを有効にできます。
前提条件
- Secured クラスターの RHCOS ノードホストをスキャンするには、OpenShift Container Platform 4.11 以降に Secured クラスターをインストールしておく必要があります。サポートされるプラットフォームおよびアーキテクチャーの詳細は、Red Hat Advanced Cluster Security for Kubernetes Support Matrix を参照してください。RHACS のライフサイクルのサポート情報は、Red Hat Advanced Cluster Security for Kubernetes サポートポリシー を参照してください。
手順
次のコマンドのいずれかを実行して、コンプライアンスコンテナーを更新します。
メトリクスが無効になっているデフォルトのコンプライアンスコンテナーの場合は、次のコマンドを実行します。
$ 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.4.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"}]}]}}}}'
関連情報