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

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

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

ここでの手順を使用すると、Red Hat Quay Container Security Operator は openshift-operators namespace にインストールされるため、OpenShift Container Platform クラスター上のすべての namespace で使用できます。

15.1. Red Hat Quay Container Security Operator のインストール

Red Hat Quay Container Security Operator は、OpenShift Container Platform Web コンソール Operator Hub から、または CLI を使用してインストールできます。

前提条件

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

手順

  1. OpenShift Container Platform Web コンソールを使用して Red Hat Quay Container Security Operator をインストールできます。

    1. Web コンソールで、OperatorsOperatorHub に移動し、Security を選択します。
    2. Red Hat Quay Container Security Operator Operator を選択し、Install を選択します。
    3. Red Hat Quay Container Security Operator ページで、Install を選択します。Update channelInstallation mode、および Update approval が自動的に選択されます。Installed Namespace フィールドのデフォルトは openshift-operators です。必要に応じて、これらの設定を調整できます。
    4. Install を選択します。Red Hat Quay Container Security Operator は、Installed Operators ページでしばらくすると表示されます。
    5. オプション: カスタム証明書を Red Hat Quay Container Security Operator に追加できます。たとえば、現在のディレクトリーに quay.crt という名前の証明書を作成します。次に、以下のコマンドを実行してカスタム証明書を Red Hat Quay Container Security Operator に追加します。

      $ oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
    6. オプション: カスタム証明書を追加した場合は、Red Hat Quay Container Security Operator Pod を再起動して、新しい証明書を有効にします。
  2. あるいは、CLI を使用して Red Hat Quay Container Security Operator をインストールすることもできます。

    1. 次のコマンドを入力して、Container Security Operator とそのチャネルの最新バージョンを取得します。

      $ oc get packagemanifests container-security-operator \
        -o jsonpath='{range .status.channels[*]}{@.currentCSV} {@.name}{"\n"}{end}' \
        | awk '{print "STARTING_CSV=" $1 " CHANNEL=" $2 }' \
        | sort -nr \
        | head -1

      出力例

      STARTING_CSV=container-security-operator.v3.8.9 CHANNEL=stable-3.8

    2. 前のコマンドの出力を使用して、Red Hat Quay Container Security Operator の Subscription カスタムリソースを作成し、container-security-operator.yaml として保存します。以下に例を示します。

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: container-security-operator
        namespace: openshift-operators
      spec:
        channel: ${CHANNEL} 1
        installPlanApproval: Automatic
        name: container-security-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        startingCSV: ${STARTING_CSV} 2
      1
      spec.channel パラメーターの直前の手順で取得した値を指定します。
      2
      spec.startingCSV パラメーターの直前の手順で取得した値を指定します。
    3. 以下のコマンドを入力して設定を適用します。

      $ oc apply -f container-security-operator.yaml

      出力例

      subscription.operators.coreos.com/container-security-operator created