14.5. RHCOS ノードホストのスキャン


OpenShift Container Platform の場合、コントロールプレーンとしてサポートされるオペレーティングシステムは、Red Hat Enterprise Linux CoreOS (RHCOS) のみです。ノードホストの場合、OpenShift Container Platform は RHCOS と Red Hat Enterprise Linux (RHEL) の両方をサポートします。Red Hat Advanced Cluster Security for Kubernetes (RHACS) を使用すると、RHCOS ノードの脆弱性をスキャンし、潜在的なセキュリティー脅威を検出できます。

RHACS は、RHCOS インストールの一部としてノードホストにインストールされた RHCOS RPM をスキャンして、既知の脆弱性がないか調べます。

まず、RHACS は RHCOS コンポーネントを分析して検出します。次に、RHEL と次のデータストリームを使用して、特定されたコンポーネントの脆弱性を照合します。

  • StackRox Scanner がノードスキャンに使用される場合は、OpenShift 4.X Open Vulnerability and Assessment Language (OVAL) v2 セキュリティーデータストリームが使用されます。
  • ノードスキャンに Scanner V4 が使用される場合は、Red Hat Common Security Advisory Framework (CSAF) Vulnerability Exploitability eXchange (VEX) が使用されます。
注記
  • roxctl CLI を使用して RHACS をインストールした場合は、RHCOS ノードのスキャン機能を手動で有効にする必要があります。OpenShift Container Platform で Helm または Operator インストール方法を使用する場合、この機能はデフォルトで有効になります。

14.5.1. StackRox Scanner を使用した 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.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"}]}]}}}}'

14.5.2. Scanner V4 を使用した RHCOS ノードスキャンの有効化

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

重要

Scanner V4 を使用した RHCOS ノードのスキャンは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat では、実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

手順

Scanner V4 を使用してノードインデックス (ノードスキャンとも呼ばれます) を有効にするには、次の手順を実行します。

  1. Central Pod の Central コンテナーで、Central クラスターで次のコマンドを実行して、ROX_NODE_INDEX_ENABLED 変数を true に設定します。

    $ kubectl -n stackrox set env deployment/central ROX_NODE_INDEX_ENABLED=true 1
    1
    OpenShift Container Platform の場合は、kubectl の代わりに oc を使用します。
  2. compliance コンテナーの Collector Daemonset で、セキュアクラスターで次のコマンドを実行して、ROX_NODE_INDEX_ENABLED 変数を true に設定します。

    $ kubectl -n stackrox set env daemonset/collector ROX_NODE_INDEX_ENABLED=true 1
    1
    OpenShift Container Platform の場合は、kubectl の代わりに oc を使用します。
  3. ノードスキャンが機能していることを確認するには、Central ログで次のメッセージを調べます。

    Scanned index report and found <number> components for node <node_name>.

    ここでは、以下のようになります。

    <number>
    検出されたコンポーネントの数を指定します。
    <node_name>
    ノードの名前を指定します。

14.5.3. 分析と検出

RHACS を OpenShift Container Platform とともに使用すると、RHACS は分析と検出用に 2 つの調整コンテナー (Compliance コンテナーと Node-inventory コンテナー) を作成します。Compliance コンテナーは、以前の RHACS バージョンの一部としてすでに組み込まれていました。ただし、Node-inventory コンテナーは RHACS 4.0 で新しく追加されたもので、OpenShift Container Platform クラスターノードでのみ機能します。

起動時に、Compliance コンテナーと Node-inventory コンテナーは、5 分以内に Red Hat Enterprise Linux CoreOS (RHCOS) ソフトウェアコンポーネントの最初のインベントリースキャンを開始します。次に、Node-inventory コンテナーはノードのファイルシステムをスキャンして、インストールされている RPM パッケージを特定し、RHCOS ソフトウェアコンポーネントをレポートします。その後、インベントリースキャンが定期的な間隔 (通常は 4 時間ごと) で行われます。Compliance コンテナーの ROX_NODE_SCANNING_INTERVAL 環境変数を設定することで、デフォルトの間隔をカスタマイズできます。

14.5.4. RHCOS ノードでの脆弱性照合

Central や Scanner などの Central サービスは、脆弱性の照合を実行します。ノードスキャンは、次のスキャナーを使用して実行されます。

  • StackRox Scanner: これはデフォルトのスキャナーです。StackRox Scanner は、Red Hat の Open Vulnerability and Assessment Language (OVAL) v2 セキュリティーデータストリームを使用して、Red Hat Enterprise Linux CoreOS (RHCOS) ソフトウェアコンポーネントの脆弱性を照合します。
  • Scanner V4: Scanner V4 は、ノードスキャンに使用できるテクノロジープレビュー機能です。Scanner V4 を明示的に有効にする必要があります。詳細は、「関連情報」のドキュメントを参照してください。

RHCOS ノードをスキャンする場合、RHACS リリース 4.0 以降では、カーネルとコンテナーのランタイムバージョンを見つけるために Kubernetes ノードのメタデータを使用しなくなりました。代わりに、RHACS は、インストールされている RHCOS RPM を使用してその情報を評価します。

14.5.5. 関連する環境変数

次の環境変数を使用して、RHACS での RHCOS ノードのスキャンを設定できます。

表14.4 Node-inventory 設定
環境変数説明

ROX_NODE_SCANNING_CACHE_TIME

キャッシュされたインベントリーが古いとみなされるまでの時間。デフォルトは ROX_NODE_SCANNING_INTERVAL の 90%、つまり 3h36m です。

ROX_NODE_SCANNING_INITIAL_BACKOFF

バックオフファイルが見つかった場合にノードスキャンが遅延する最初の時間 (秒)。デフォルト値は 30s です。

ROX_NODE_SCANNING_MAX_BACKOFF

バックオフの上限。デフォルト値は 5m で、これは Kubernetes 再起動ポリシー安定性タイマーの 50% です。

表14.5 コンプライアンス設定
環境変数説明

ROX_NODE_INDEX_ENABLED

このクラスターでノードインデックスを有効にするかどうかを制御します。デフォルト値は false です。Scanner V4 ベースの RHCOS ノードスキャンを使用するには、この変数を設定します。

ROX_NODE_SCANNING_INTERVAL

ノードスキャン間の間隔期間の基本値。デフォルト値は 4h です。

ROX_NODE_SCANNING_INTERVAL_DEVIATION

ノードスキャンの継続時間は、基本間隔時間と異なる場合があります。ただし、最大値は ROX_NODE_SCANNING_INTERVAL によって制限されます。

ROX_NODE_SCANNING_MAX_INITIAL_WAIT

最初のノードスキャンまでの最大待機時間。ランダムに生成されます。この値を 0 に設定すると、初期ノードスキャンの待機時間を無効にすることができます。デフォルト値は 5m です。

14.5.6. ダッシュボードを使用してノードの脆弱性を特定する

Vulnerability Management ビューを使用して、ノードの脆弱性を特定できます。特定される脆弱性には、Docker、CRI-O、runC、containerd などの Kubernetes コアコンポーネントとコンテナーランタイムの脆弱性も含まれます。RHACS がスキャンできるオペレーティングシステムの詳細は、「サポート対象オペレーティングシステム」を参照してください。

手順

  1. RHACS ポータルで、Vulnerability Management Dashboard に移動します。
  2. ヘッダーの Nodes を選択し、ノードに影響するすべての CVE のリストを表示します。
  3. リストからノードを選択し、そのノードに影響するすべての CVE の詳細を表示します。

    1. ノードを選択すると、選択したノードの Node の詳細パネルが開きます。Node ビューには、ノードの詳細が表示され、CVSS スコア別の CVE およびそのノードの修正可能な CVE に関する情報が含まれます。
    2. 選択したノードのすべての CVE のリストを表示するには、CVEs by CVSS score で、View All を選択します。CVE の一覧をフィルタリングすることもできます。
    3. 修正可能な CVE を CSV ファイルとしてエクスポートするには、Node Findings セクションで Export as CSV を選択します。

14.5.7. ノードの CVE の表示

RHACS を使用すると、ノード内の脆弱性を特定できます。特定される脆弱性は次のとおりです。

  • Kubernetes コアコンポーネントの脆弱性
  • Docker、CRI-O、runC、containerd などのコンテナーランタイムの脆弱性

RHACS がスキャンできるオペレーティングシステムの詳細は、「サポート対象オペレーティングシステム」を参照してください。

手順

  1. RHACS ポータルで、Vulnerability Management Node CVEs をクリックします。
  2. データを表示するために、次のいずれかのタスクを実行します。

    • すべてのノードに影響するすべての CVE のリストを表示するには、<number> CVEs を選択します。
    • CVE を含むノードのリストを表示するには、<number> Nodes を選択します。
  3. オプション: CVE をエンティティー別にフィルタリングするには、適切なフィルターと属性を選択します。フィルタリング条件をさらに追加するには、次の手順に従います。

    1. リストからエンティティーまたは属性を選択します。
    2. 必要に応じて、テキストなどの適切な情報を入力するか、日付またはオブジェクトを選択します。
    3. 右矢印アイコンをクリックします。
    4. オプション: 追加のエンティティーと属性を選択し、右矢印アイコンをクリックして追加します。フィルターのエンティティーと属性を次の表に示します。

      表14.6 CVE のフィルタリング
      エンティティー属性

      ノード

      • Name: ノードの名前。
      • Operating system: ノードのオペレーティングシステム (例: Red Hat Enterprise Linux (RHEL))。
      • Label: ノードのラベル。
      • Annotation: ノードのアノテーション。
      • Scan time: ノードのスキャン日。

      CVE

      • Name: CVE の名前。
      • Discovered time: RHACS が CVE を検出した日付。
      • CVSS: CVE の重大度。

        CVE の重大度レベルには次の値が関連付けられています。

        • is greater than
        • is greater than or equal to
        • is equal to
        • is less than or equal to
        • is less than

      Node Component

      • Name: コンポーネントの名前。
      • Version: コンポーネントのバージョン (例: 4.15.0-2024)。これを使用すると、たとえばコンポーネント名と組み合わせて、特定のバージョンのコンポーネントを検索できます。

      Cluster

      • Name: クラスターの名前。
      • Label: クラスターのラベル。
      • Type: クラスターのタイプ (例: OCP)。
      • Platform type: プラットフォームのタイプ (例: OpenShift 4 クラスター)。
  4. オプション: 結果のリストを絞り込むには、次のいずれかのタスクを実行します。

    • CVE severity をクリックし、1 つ以上のレベルを選択します。
    • CVE status をクリックし、Fixable または Not fixable を選択します。
  5. オプション: ノードの詳細と、そのノードの CVSS スコアと修正可能な CVE に基づく CVE 情報を表示するには、ノードのリストでノード名をクリックします。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.