第 9 章 使用 Container Security Operator 扫描 pod 镜像
Container Security Operator (CSO)是 OpenShift Container Platform 和其他 Kubernetes 平台上提供的 Clair 安全扫描程序的一个附加组件。通过 CSO,用户可以扫描与活跃 pod 关联的容器镜像以了解已知漏洞。
没有 Red Hat Quay 和 Clair 时 CSO 无法正常工作。
Container Security Operator (CSO)包括以下功能:
- 监视与指定或所有命名空间上的 pod 关联的容器。
- 查询容器来自漏洞信息的容器 registry,只要镜像的 registry 支持镜像扫描,如带有 Clair 扫描的 Red Hat Quay registry。
-
通过 Kubernetes API 中的
ImageManifestVuln
对象公开漏洞。
要在 Kubernetes 上安装 CSO 的说明,请从 Container Security OperatorHub.io 页面中选择 Install 按钮。
9.1. 在 OpenShift Container Platform 中下载并运行 Container Security Operator
使用以下步骤下载 Container Security Operator (CSO)。
在以下步骤中,CSO 安装在 marketplace-operators
命名空间中。这允许在 OpenShift Container Platform 集群的所有命名空间中使用 CSO。
步骤
-
在 OpenShift Container Platform 控制台页面中,选择 Operators
OperatorHub 并搜索 Container Security Operator。 - 选择 Container Security Operator,然后选择 Install 进入 Create Operator Subscription 页面。
- 检查设置(所有命名空间和自动批准策略),然后选择 Subscribe。在 Installed Operators 屏幕中几分钟后会出现 Container Security。
可选:您可以在 CSO 中添加自定义证书。在本例中,在当前目录中创建一个名为
quay.crt
的证书。然后,运行以下命令将证书添加到 CSO 中:$ oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
注意您必须重启 Operator pod 才能使新证书生效。
进入到 Home
Overview。至镜像漏洞的链接会出现在 status 部分中,以及目前发现的漏洞数量的列表。选择查看安全分类的链接,如下图所示: 重要Container Security Operator 目前为 Red Hat 安全公告提供了有问题的链接。例如,可能会提供以下链接
:https://access.redhat.com/errata/RHSA-2023:1842%20https://access.redhat.com/security/cve/CVE-2023-23916。
URL 中的%20
代表空格字符,但它目前将两个 URL 组合为一个不完整的 URL,例如https://access.redhat.com/errata/RHSA-2023:1842
和https://access.redhat.com/security/cve/CVE-2023-23916。
作为临时解决方案,您可以将每个 URL 复制到您的浏览器中,以导航到正确的页面。这是一个已知问题,并将在以后的 Red Hat Quay 版本中解决。对于任何检测到的安全漏洞,您可以在此时进行两个操作之一:
选择到这个漏洞的链接。您会进入容器 registry、Red Hat Quay 或其他来自容器的 registry,您可以在其中查看有关漏洞的信息。下图显示了从 Quay.io registry 中检测到的漏洞示例:
选择 namespaces 链接以进入 Image Manifest Vulnerabilities 页面,您可以在其中查看所选镜像的名称以及运行该镜像的所有命名空间。下图显示了特定存在安全漏洞的镜像在两个命名空间中运行:
执行此流程后,您可以了解哪些镜像存在安全漏洞,您必须做什么才能修复这些漏洞,以及镜像运行的每个命名空间。了解这一点,您可以执行以下操作:
- 警报运行需要更正漏洞的镜像的用户。
通过删除启动镜像所在 pod 的部署或对象来停止镜像运行。
注意如果删除 pod,可能需要几分钟时间才能在仪表板上重置漏洞。