$ oc create secret generic container-security-operator-extra-certs --from-file=quay.crt -n openshift-operators
使用 Red Hat Quay 容器安全操作符,您可以从 OpenShift Container Platform Web 控制台访问集群上活动 Pod 中使用的容器镜像的漏洞扫描结果。Red Hat Quay 容器安全操作符
监视与所有或指定命名空间中的 Pod 关联的容器
查询容器来自的容器注册表以获取漏洞信息,前提是镜像的注册表正在运行镜像扫描(例如 Quay.io 或具有 Clair 扫描的 Red Hat Quay 注册表)
通过 Kubernetes API 中的 ImageManifestVuln
对象公开漏洞
按照此处的说明,Red Hat Quay 容器安全操作符安装在 openshift-operators
命名空间中,因此可用于 OpenShift Container Platform 集群上的所有命名空间。
您可以从 OpenShift Container Platform Web 控制台的 Operator Hub 安装 Red Hat Quay 容器安全操作符,也可以使用命令行安装。
您已安装 oc
命令行界面。
您具有 OpenShift Container Platform 集群的管理员权限。
您的集群中运行着来自 Red Hat Quay 或 Quay.io 注册表的容器。
您可以使用 OpenShift Container Platform Web 控制台安装 Red Hat Quay Container Security Operator。
在 Web 控制台中,导航到 **Operators** → **OperatorHub** 并选择 **Security**。
选择 **Red Hat Quay Container Security Operator** 运算符,然后选择 **Install**。
在 **Red Hat Quay Container Security Operator** 页面上,选择 **Install**。**Update channel**、**Installation mode** 和 **Update approval** 会自动选择。**Installed Namespace** 字段默认为 openshift-operators
。您可以根据需要调整这些设置。
选择 **Install**。几分钟后,**Red Hat Quay Container Security Operator** 将出现在 **Installed Operators** 页面上。
可选:您可以向 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
可选:如果您添加了自定义证书,请重新启动 Red Hat Quay Container Security Operator Pod 以使新证书生效。
或者,您可以使用 CLI 安装 Red Hat Quay Container Security Operator
输入以下命令检索 Container Security Operator 的最新版本及其通道
$ oc get packagemanifests container-security-operator \
-o jsonpath='{range .status.channels[*]}{@.currentCSV} {@.name}{"\n"}{end}' \
| awk '{print "STARTING_CSV=" $1 " CHANNEL=" $2 }' \
| sort -nr \
| head -1
STARTING_CSV=container-security-operator.v3.8.9 CHANNEL=stable-3.8
使用上一条命令的输出,为 Red Hat Quay Container Security Operator 创建一个 Subscription
自定义资源,并将其保存为 container-security-operator.yaml
。例如:
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: container-security-operator
namespace: openshift-operators
spec:
channel: ${CHANNEL} (1)
installPlanApproval: Automatic
name: container-security-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
startingCSV: ${STARTING_CSV} (2)
1 | 为 spec.channel 参数指定您在上一步中获得的值。 |
2 | 为 spec.startingCSV 参数指定您在上一步中获得的值。 |
输入以下命令应用配置
$ oc apply -f container-security-operator.yaml
subscription.operators.coreos.com/container-security-operator created
以下步骤介绍了如何使用 Red Hat Quay Container Security Operator。
您已安装 Red Hat Quay Container Security Operator。
在 OpenShift Container Platform Web 控制台中,导航到 **Home** → **Overview**。在 **Status** 部分下,**Image Vulnerabilities** 提供了发现的漏洞数量。
单击 **Image Vulnerabilities** 以显示 **Image Vulnerabilities breakdown** 选项卡,其中详细列出了漏洞的严重性、是否可以修复漏洞以及漏洞总数。
您可以通过以下两种方式之一解决检测到的漏洞
选择 **Vulnerabilities** 部分下的链接。这将带您到容器所在的容器注册表,您可以在其中查看有关漏洞的信息。
选择 **namespace** 链接。这将带您到 **Image Manifest Vulnerabilities** 页面,您可以在其中查看所选映像的名称以及该映像运行的所有命名空间。
了解哪些映像存在漏洞、如何修复这些漏洞以及映像正在运行的命名空间后,您可以通过执行以下操作来提高安全性
提醒组织中运行该映像的任何人,并请求他们更正漏洞。
通过删除启动映像所在 Pod 的部署或其他对象来停止映像运行。
如果您删除了 Pod,仪表板上的漏洞信息可能需要几分钟才能重置。 |
使用 oc
命令,您可以显示 Red Hat Quay Container Security Operator 检测到的漏洞信息。
您已在 OpenShift Container Platform 实例上安装了 Red Hat Quay Container Security Operator。
输入以下命令查询检测到的容器镜像漏洞
$ oc get vuln --all-namespaces
NAMESPACE NAME AGE
default sha256.ca90... 6m56s
skynet sha256.ca90... 9m37s
要显示特定漏洞的详细信息,请将漏洞名称及其命名空间附加到 oc describe
命令。以下示例显示了一个活动容器,其映像包含具有漏洞的 RPM 包
$ oc describe vuln --namespace mynamespace sha256.ac50e3752...
Name: sha256.ac50e3752...
Namespace: quay-enterprise
...
Spec:
Features:
Name: nss-util
Namespace Name: centos:7
Version: 3.44.0-3.el7
Versionformat: rpm
Vulnerabilities:
Description: Network Security Services (NSS) is a set of libraries...
要卸载 Container Security Operator,您必须卸载 Operator 并删除 imagemanifestvulns.secscan.quay.redhat.com
自定义资源定义 (CRD)。
在 OpenShift Container Platform Web 控制台中,单击 **Operators** → **Installed Operators**。
单击 Container Security Operator 的选项菜单 。
单击 **Uninstall Operator**。
在弹出窗口中单击 **Uninstall** 以确认您的决定。
使用 CLI 删除 imagemanifestvulns.secscan.quay.redhat.com
CRD。
输入以下命令删除 imagemanifestvulns.secscan.quay.redhat.com
自定义资源定义
$ oc delete customresourcedefinition imagemanifestvulns.secscan.quay.redhat.com
customresourcedefinition.apiextensions.k8s.io "imagemanifestvulns.secscan.quay.redhat.com" deleted