第 8 章 使用 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 支持镜像扫描,如带有 Clair 扫描的 Red Hat Quay registry。
-
通过 Kubernetes API 中的
ImageManifestVuln对象公开漏洞。
要查看在 Kubernetes 上安装 CSO 的说明,请从 Container Security OperatorHub.io 页面中选择 Install 按钮。
使用以下步骤下载 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 屏幕中几分钟后会出现 容器安全性。
可选: 您可以将自定义证书添加到 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-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须重启 Operator pod 才能使新证书生效。
导航到 Home
Dashboards。镜像 安全性 的链接显示在 status 部分,其中列出了目前发现的漏洞数量。选择链接以查看安全分类,如下图所示:
重要Container Security Operator 目前为 Red Hat Security 公告提供有问题的链接。例如,可能会提供以下链接:
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,可能需要几分钟时间才能在仪表板上重置漏洞。