第7章 Pod の脆弱性のスキャン

Container Security Operator (CSO) を使用すると、OpenShift Container Platform Web コンソールから、クラスターのアクティブな Pod で使用されるコンテナーイメージについての脆弱性スキャンの結果にアクセスできます。CSV

  • すべての namespace または指定された namespace の Pod に関連付けられたコンテナーを監視します。
  • イメージのレジストリーがイメージスキャンを実行している場合 (例: Quay.io、Clair スキャンを含む Red Hat Quay レジストリーなど)、脆弱性の情報についてコンテナーの出所となったコンテナーレジストリーをクエリーします。
  • Kubernetes API の ImageManifestVuln オブジェクトを使用して脆弱性を公開します。

この手順を使用すると、CSO は openshift-operators namespace にインストールされ、OpenShift クラスターのすべての namespace で利用可能になります。

7.1. Container Security Operator の実行

以下で説明されているように、Operator Hub から Operator を選択し、インストールして、OpenShift Container Platform Web コンソールから Container Security Operator を起動できます。

前提条件

  • OpenShift Container Platform クラスターへの管理者権限がある
  • クラスターで実行される Red Hat Quay または Quay.io レジストリーのコンテナーがある

手順

  1. OperatorsOperatorHub に移動し、Security を選択します。
  2. Container Security Operator を選択し、Install を選択して Create Operator Subscription ページに移動します。
  3. 設定を確認します。すべての namespace および自動承認ストラテジーがデフォルトで選択されます。
  4. Install を選択します。Container Security Operator は、Installed Operators 画面に数分後に表示されます。
  5. オプションで、カスタム証明書を CSO に追加できます。以下の例では、現在のディレクトリーに quay.crt という名前の証明書を作成します。次に、以下のコマンドを実行して証明書を CSO に追加します。

    $ oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
  6. カスタム証明書を追加した場合、新規証明書を有効にするために Operator Pod を再起動します。
  7. OpenShift Dashboard を開きます (HomeOverview)。Quay Image Security へのリンクが status セクションに表示され、これまでに見つかった脆弱性の数の一覧が表示されます。以下の図のように、リンクを選択して Quay Image Security breakdown を表示します。

    Access image scanning data from OpenShift Container Platform dashboard

  8. この時点で、検出された脆弱性をフォローするために以下の 2 つのいずれかの操作を実行できます。

    • 脆弱性へのリンクを選択します。コンテナーを取得したコンテナーレジストリーにアクセスし、脆弱性についての情報を確認できます。以下の図は、Quay.io レジストリーから検出された脆弱性の例を示しています。

      The CSO points you to a registry containing the vulnerable image

    • namespaces リンクを選択し、ImageManifestVuln 画面に移動します。ここでは、選択されたイメージの名前、およびイメージが実行されているすべての namespace を確認できます。以下の図は、特定の脆弱なイメージが quay-enterprise namespace で実行されていることを示しています。

      View namespaces a vulnerable image is running in

この時点では、脆弱性のあるイメージや、イメージの脆弱性を解決するために必要なこと、およびイメージが実行されたすべての namespace を確認できます。以下を実行することができます。

  • 脆弱性を修正する必要のあるイメージを実行しているユーザーに警告します。
  • イメージが置かれている Pod を起動したデプロイメントまたは他のオブジェクトを削除して、イメージの実行を停止します。

Pod を削除すると、Dashboard で脆弱性のある状態がリセットされるまで数分かかる場合があります。