第 7 章 使用 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 按钮。
使用以下步骤下载 Container Security Operator (CSO)。
在以下步骤中,CSO 安装在 marketplace-operators
命名空间中。这允许 CSO 在 OpenShift Container Platform 集群的所有命名空间中使用。
流程
-
在 OpenShift Container Platform 控制台页面中,选择 Operators
OperatorHub 并搜索 Container Security Operator。 - 选择 Container Security Operator,然后选择 Install 进入 Create Operator Subscription 页面。
- 检查设置(默认所有命名空间和自动批准策略),然后选择 Subscribe。容器安全性 会在 Installed Operators 屏幕中几分钟后出现。
可选:您可以在 CSO 中添加自定义证书。在本例中,在当前目录中创建一个名为
quay.crt
的证书。然后,运行以下命令将证书添加到 CSO 中:oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
$ oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须重启 Operator pod 才能使新证书生效。
导航到 Home
Dashboards。Image Security 的链接会出现在 status 部分,其中列出了目前发现的漏洞数。选择链接来查看安全分类,如下图所示: 重要Container Security Operator 目前为红帽安全公告提供损坏的链接。例如,可能提供以下链接
: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 链接以进入 ImageManifestVuln 界面,您可以在其中查看所选镜像的名称以及该镜像正在运行的所有命名空间。下图显示了特定存在漏洞的镜像在两个命名空间中运行:
执行此步骤后,您会了解哪些镜像存在安全漏洞,您必须做什么才能修复这些漏洞,以及镜像在其中运行的每个命名空间。了解这一点,您可以执行以下操作:
- 运行镜像需要更正该漏洞的警报用户。
通过删除部署或启动镜像所在 pod 的对象来停止镜像运行。
注意如果删除 pod,可能需要几分钟时间才能在仪表板上重置漏洞。