第 8 章 使用 Container Security Operator 扫描 pod 镜像
通过使用 Container Security Operator,(CSO)可以扫描与活跃 pod 关联的容器镜像,在 OpenShift(4.2 或更高版本)和其他 Kubernetes 平台上运行,以了解已知漏洞。CSO:
- 监视与所有或指定命名空间中的 pod 关联的容器
- 查询容器来自漏洞信息的容器 registry,提供镜像 registry 支持镜像扫描(例如,带有 Clair 扫描的 Quay registry)
- 通过 Kubernetes API 中的 ImageManifestVuln 对象公开漏洞
根据这里的说明,CSO 安装在 marketplace-operators
命名空间中,因此 OpenShift 集群上的所有命名空间都可以使用它。
要参阅在 Kubernetes 上安装 CSO 的说明,请在 Container Security OperatorHub.io 页面中选择 Install 按钮。
8.1. 在 OpenShift 中运行 CSO
要在 OpenShift 中使用 CSO,请执行以下操作:
-
进入 Operators
OperatorHub(选择安全性)来查看可用的 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)。指向镜像安全性的链接会出现在 status 部分,其中列出了目前发现的漏洞数量。选择该链接以查看安全分类,如下图所示: 对于任何检测到的安全漏洞,您可以在此时进行两个操作之一:
选择到这个漏洞的链接。您会进入容器来自的容器 registry、Red Hat Quay 或其他 registry,从中可查看与漏洞相关的信息。下图显示了从 Quay.io registry 中检测到的漏洞示例:
选择 namespaces 链接以进入 ImageManifestVuln 屏幕,您可以在其中查看所选镜像的名称以及该镜像正在运行的所有命名空间。下图表示某个存在安全漏洞的镜像在两个命名空间中运行:
此时,您知道哪些镜像存在这个安全漏洞,需要做什么来修复这些漏洞,以及镜像在中运行的每个命名空间。您可以:
- 警告运行镜像的用户需要修正这个漏洞
- 停止镜像运行(通过删除启动镜像所在部署或其他对象)
请注意,如果您删除 pod,可能需要几分钟时间才能在仪表板上重置漏洞。