第 13 章 对 pod 进行安全漏洞扫描

使用 Red Hat Quay Container Security Operator,您可以访问 OpenShift Container Platform Web 控制台中用于集群中活跃 pod 的容器镜像,访问 OpenShift Container Platform Web 控制台中的漏洞扫描结果。Red Hat Quay Container Security Operator:

  • 监视与所有或指定命名空间中的 pod 关联的容器
  • 查询容器来自漏洞信息的容器 registry,提供镜像的 registry 正在运行镜像扫描(如 Quay.io 或带有 Clair 扫描的 Red Hat Quay registry)
  • 通过 Kubernetes API 中的 ImageManifestVuln 对象公开漏洞

根据这里的说明,Red Hat Quay Container Security Operator 安装在 openshift-operators 命名空间中,因此 OpenShift Container Platform 集群中的所有命名空间都可以使用它。

13.1. 运行 Red Hat Quay Container Security Operator

您可以通过从 Operator Hub 选择并安装该 Operator,从 OpenShift Container Platform Web 控制台启动 Red Hat Quay Container Security Operator,如下所述。

先决条件

  • 具有 OpenShift Container Platform 集群的管理员特权
  • 来自集群中运行的 Red Hat Quay 或 Quay.io registry 的容器

流程

  1. 导航到 OperatorsOperatorHub 并选择 Security
  2. 选择 Container Security Operator,然后选择 Install 进入 Create Operator Subscription 页面。
  3. 检查设置。所有命名空间和自动批准策略都被默认选择。
  4. 选择 Install。在 Installed Operators 屏幕中几分钟后会出现 Container Security Operator。
  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. 如果添加了自定义证书,请重启 Operator Pod 以使新证书生效。
  7. 打开 OpenShift Dashboard(HomeOverview)。至 Quay Image Security 的链接会出现在 status 部分,其中列出了目前发现的漏洞数量。选择该链接以查看 Quay 镜像安全分类,如下图所示:

    Access image scanning data from OpenShift Container Platform dashboard

  8. 对于任何检测到的安全漏洞,您可以在此时进行两个操作之一:

    • 选择到这个漏洞的链接。您会进入容器来自的容器 registry,在那里查看有关该漏洞的信息。下图显示了从 Quay.io registry 中检测到的漏洞示例:

      The Red Hat Quay Container Security Operator points you to a registry containing the vulnerable image

    • 选择 namespaces 链接以进入 ImageManifestVuln 界面,您可以在其中查看所选镜像的名称以及该镜像正在运行的所有命名空间。下图表示,一个存在特定漏洞的镜像正在 quay-enterprise 命名空间中运行:

      View namespaces a vulnerable image is running in

此时,您知道哪些镜像存在这个安全漏洞,需要做什么来修复这些漏洞,以及镜像在中运行的每个命名空间。您可以:

  • 警告运行镜像的用户需要修正这个漏洞
  • 通过删除启动镜像所在 Pod 的部署或其他对象来停止镜像运行

请注意,如果您删除 pod,可能需要几分钟时间才能在仪表板上重置漏洞。