検索

9.3. roxctl CLI を使用した RHACS Cloud Service でのセキュアクラスターの手動アップグレード

download PDF

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 は、amd64ppcl64le、および s390x アーキテクチャーで使用できます。

手順

  1. ターゲットのオペレーティングシステムの roxctl アーキテクチャーを確認します。

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. roxctl CLI をダウンロードします。

    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.4.5/bin/Linux/roxctl${arch}"
  3. roxctl バイナリーを実行可能にします。

    $ chmod +x roxctl
  4. PATH 上にあるディレクトリーに roxctl バイナリーを配置します。

    PATH を確認するには、以下のコマンドを実行します。

    $ echo $PATH

検証

  • インストールした roxctl のバージョンを確認します。

    $ roxctl version

9.3.1.3. macOS への roxctl CLI のインストール

次の手順を使用して、roxctl CLI バイナリーを macOS にインストールできます。

注記

macOS 用の roxctl CLI は、amd64 アーキテクチャーで利用できます。

手順

  1. roxctl CLI をダウンロードします。

    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.4.5/bin/Darwin/roxctl${arch}"
  2. バイナリーからすべての拡張属性を削除します。

    $ xattr -c roxctl
  3. roxctl バイナリーを実行可能にします。

    $ chmod +x roxctl
  4. 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 を使用してください。

手順

  1. 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 を入力します。
  2. 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 を入力します。
  3. 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}
  4. アドミッションコントロールイメージを更新します。

    $ 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 クラスターとすべてのセキュアクラスター全体で互換性と最適なセキュリティー設定を確保できます。

手順

  1. すべてのセキュアクラスターにデプロイされているすべての 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 フィールドで指定されていることがわかります。

  2. RHACS のカスタム SCC の代わりに Red Hat OpenShift SCC を使用するには、必要なロールとロールバインディングを追加します。
  3. すべてのセキュアクラスターで Red Hat OpenShift SCC を使用するために必要なロールとロールバインディングを追加するには、次の手順を実行します。

    1. 次の内容を使用して、ロールリソースとロールバインディングリソースを定義する 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
      - - -
      1
      Kubernetes リソースのタイプ。この例では Role です。
      2
      ロールリソースの名前。
      3
      ロールの作成先の namespace。
      4
      ロールリソースによって付与される権限を記述します。
      5
      Kubernetes リソースのタイプ。この例では RoleBinding です。
      6
      ロールバインディングリソースの名前。
      7
      同じ namespace 内のバインドするロールを指定します。
      8
      ロールにバインドするサブジェクトを指定します。
    2. 次のコマンドを実行して、upgrade-scs.yaml ファイルで指定したロールリソースとロールバインディングリソースを作成します。

      $ oc -n stackrox create -f ./update-scs.yaml
      重要

      upgrade-scs.yaml ファイルで指定したロールとロールバインディングを作成するには、各セキュアクラスターでこのコマンドを実行する必要があります。

  4. RHACS に固有の SCC を削除します。

    1. すべてのセキュアクラスターに固有の 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:'

    出力を次の表と比較してください。

    コンポーネント以前のカスタム SCCRed 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 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。

手順

  1. 次のコマンドを実行して、Sensor デプロイメントの変数を編集します。

    $ oc -n stackrox edit deploy/sensor 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。
  2. GOMEMLIMIT 変数を ROX_MEMLIMIT に置き換えます。
  3. ファイルを保存します。
9.3.2.2.2. Collector デプロイメントの GOMEMLIMIT 環境変数の編集

バージョン 4.4 にアップグレードするには、GOMEMLIMIT 環境変数を ROX_MEMLIMIT 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。

手順

  1. Collector デプロイメントの変数を編集するには、次のコマンドを実行します。

    $ oc -n stackrox edit deploy/collector 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。
  2. GOMEMLIMIT 変数を ROX_MEMLIMIT に置き換えます。
  3. ファイルを保存します。
9.3.2.2.3. Admission Controller デプロイメントの GOMEMLIMIT 環境変数の編集

バージョン 4.4 にアップグレードするには、GOMEMLIMIT 環境変数を ROX_MEMLIMIT 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。

手順

  1. 次のコマンドを実行して、Admission Controller デプロイメントの変数を編集します。

    $ oc -n stackrox edit deploy/admission-control 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。
  2. GOMEMLIMIT 変数を ROX_MEMLIMIT に置き換えます。
  3. ファイルを保存します。
9.3.2.2.4. セキュアクラスターのアップグレードの確認

セキュアクラスターをアップグレードしたら、更新された Pod が機能していることを確認します。

手順

  • 新しい Pod がデプロイされていることを確認します。

    $ oc get deploy,ds -n stackrox -o wide 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。
    $ oc get pod -n stackrox --watch 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。

9.3.3. RHCOS ノードスキャンの有効化

OpenShift Container Platform を使用する場合は、Red Hat Advanced Cluster Security for Kubernetes (RHACS) を使用して、Red Hat Enterprise Linux CoreOS (RHCOS) ノードの脆弱性スキャンを有効にできます。

前提条件

手順

  1. 次のコマンドのいずれかを実行して、コンプライアンスコンテナーを更新します。

    • メトリクスが無効になっているデフォルトのコンプライアンスコンテナーの場合は、次のコマンドを実行します。

      $ 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"}]}]}}}}'
  2. 次の手順を実行して、Collector DaemonSet (DS) を更新します。

    1. 次のコマンドを実行して、新しいボリュームマウントを Collector DS に追加します。

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
    2. 次のコマンドを実行して、新しい 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"}]}]}}}}'
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.