×

使用 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 集群上的所有命名空间。

安装 Red Hat Quay 容器安全操作符

您可以从 OpenShift Container Platform Web 控制台的 Operator Hub 安装 Red Hat Quay 容器安全操作符,也可以使用命令行安装。

先决条件
  • 您已安装 oc 命令行界面。

  • 您具有 OpenShift Container Platform 集群的管理员权限。

  • 您的集群中运行着来自 Red Hat Quay 或 Quay.io 注册表的容器。

步骤
  1. 您可以使用 OpenShift Container Platform Web 控制台安装 Red Hat Quay Container Security Operator。

    1. 在 Web 控制台中,导航到 **Operators** → **OperatorHub** 并选择 **Security**。

    2. 选择 **Red Hat Quay Container Security Operator** 运算符,然后选择 **Install**。

    3. 在 **Red Hat Quay Container Security Operator** 页面上,选择 **Install**。**Update channel**、**Installation mode** 和 **Update approval** 会自动选择。**Installed Namespace** 字段默认为 openshift-operators。您可以根据需要调整这些设置。

    4. 选择 **Install**。几分钟后,**Red Hat Quay Container Security Operator** 将出现在 **Installed Operators** 页面上。

    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. 可选:如果您添加了自定义证书,请重新启动 Red Hat Quay Container Security Operator Pod 以使新证书生效。

  2. 或者,您可以使用 CLI 安装 Red Hat Quay Container Security Operator

    1. 输入以下命令检索 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
    2. 使用上一条命令的输出,为 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 参数指定您在上一步中获得的值。
    3. 输入以下命令应用配置

      $ 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。

先决条件
  • 您已安装 Red Hat Quay Container Security Operator。

步骤
  1. 在 OpenShift Container Platform Web 控制台中,导航到 **Home** → **Overview**。在 **Status** 部分下,**Image Vulnerabilities** 提供了发现的漏洞数量。

  2. 单击 **Image Vulnerabilities** 以显示 **Image Vulnerabilities breakdown** 选项卡,其中详细列出了漏洞的严重性、是否可以修复漏洞以及漏洞总数。

  3. 您可以通过以下两种方式之一解决检测到的漏洞

    1. 选择 **Vulnerabilities** 部分下的链接。这将带您到容器所在的容器注册表,您可以在其中查看有关漏洞的信息。

    2. 选择 **namespace** 链接。这将带您到 **Image Manifest Vulnerabilities** 页面,您可以在其中查看所选映像的名称以及该映像运行的所有命名空间。

  4. 了解哪些映像存在漏洞、如何修复这些漏洞以及映像正在运行的命名空间后,您可以通过执行以下操作来提高安全性

    1. 提醒组织中运行该映像的任何人,并请求他们更正漏洞。

    2. 通过删除启动映像所在 Pod 的部署或其他对象来停止映像运行。

      如果您删除了 Pod,仪表板上的漏洞信息可能需要几分钟才能重置。

从 CLI 查询镜像漏洞

使用 oc 命令,您可以显示 Red Hat Quay Container Security Operator 检测到的漏洞信息。

先决条件
  • 您已在 OpenShift Container Platform 实例上安装了 Red Hat Quay Container Security Operator。

步骤
  1. 输入以下命令查询检测到的容器镜像漏洞

    $ oc get vuln --all-namespaces
    示例输出
    NAMESPACE     NAME              AGE
    default       sha256.ca90...    6m56s
    skynet        sha256.ca90...    9m37s
  2. 要显示特定漏洞的详细信息,请将漏洞名称及其命名空间附加到 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...

卸载 Red Hat Quay Container Security Operator

要卸载 Container Security Operator,您必须卸载 Operator 并删除 imagemanifestvulns.secscan.quay.redhat.com 自定义资源定义 (CRD)。

步骤
  1. 在 OpenShift Container Platform Web 控制台中,单击 **Operators** → **Installed Operators**。

  2. 单击 Container Security Operator 的选项菜单 kebab

  3. 单击 **Uninstall Operator**。

  4. 在弹出窗口中单击 **Uninstall** 以确认您的决定。

  5. 使用 CLI 删除 imagemanifestvulns.secscan.quay.redhat.com CRD。

    1. 输入以下命令删除 imagemanifestvulns.secscan.quay.redhat.com 自定义资源定义

      $ oc delete customresourcedefinition imagemanifestvulns.secscan.quay.redhat.com
      示例输出
      customresourcedefinition.apiextensions.k8s.io "imagemanifestvulns.secscan.quay.redhat.com" deleted