第8章 コンテナーセキュリティー Operator での Pod イメージのスキャン
Container Security Operator (CSO) を使用すると、OpenShift (4.2 以降) やその他の Kubernetes プラットフォーム上で動作するアクティブな Pod に関連するコンテナーイメージをスキャンし、既知の脆弱性を確認することができます。CSO は、以下を行います。
- すべての namespace または指定された namespace の Pod に関連付けられたコンテナーを監視します。
- イメージのレジストリーがイメージスキャンをサポートしている場合 (Clair スキャンを備えた Quay レジストリーなど) は、コンテナーの元となったコンテナーレジストリーに脆弱性情報を問い合わせます。
- Kubernetes API の ImageManifestVuln オブジェクトを使用して脆弱性を公開します。
この手順を使用すると、CSO は marketplace-operators
namespace にインストールされ、OpenShift クラスターのすべての namespace で利用可能になります。
CSO を Kubernetes にインストールする手順を見るには、Container Security OperatorHub.io のページから Install ボタンを選択します。
8.1. OpenShift での CSO の実行
OpenShift で CSO の使用を開始するには、次のようにします。
-
Operators
OperatorHub (Security を選択) で、利用可能な Container Security
Operator が表示されます。 -
Container Security
Operator を選択し、Install
を選択して Create Operator Subscription ページに移動します。 -
設定 (デフォルトでは、全ネームスペースと自動承認戦略) を確認し、
Subscribe
を選択します。しばらくすると、Installed Operators
画面にContainer Security
が表示されます。 必要に応じて、カスタム証明書を CSO に追加できます。以下の例では、現在のディレクトリーに quay.crt という名前の証明書を作成します。その後、次のコマンドを実行して、CSO に証明書を追加します (新しい証明書を有効にするために、Operator Pod を再起動します)。
$ oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
OpenShift Dashboard を開きます (Home
Dashboards)。Image Security へのリンクが status セクションに表示され、これまでに見つかった脆弱性の数の一覧が表示されます。リンクを選択すると、次の図のようにセキュリティーの内訳が表示されます。 この時点で、検出された脆弱性をフォローするために以下の 2 つのいずれかの操作を実行できます。
脆弱性へのリンクを選択します。コンテナーのレジストリー、Red Hat Quay、またはコンテナーを取得したその他のレジストリーに移動し、脆弱性に関する情報が表示されます。以下の図は、Quay.io レジストリーから検出された脆弱性の例を示しています。
namespaces のリンクを選択すると、ImageManifestVuln 画面が表示され、選択したイメージの名前と、そのイメージが実行されているすべてのネームスペースが表示されます。以下の図は、特定の脆弱なイメージが 2 つの namespace で実行されていることを示しています。
この時点では、脆弱性のあるイメージや、イメージの脆弱性を解決するために必要なこと、およびイメージが実行されたすべての namespace を確認できます。以下を実行することができます。
- 脆弱性を修正する必要のあるイメージを実行しているユーザーに警告します。
- イメージが置かれている Pod を起動したデプロイメントまたは他のオブジェクトを削除して、イメージの実行を停止します。
なお、Pod を削除した場合は、ダッシュボード上で脆弱性がリセットされるまでに数分かかることがあります。