第 14 章 对 pod 进行安全漏洞扫描

使用 Red Hat Quay Container Security Operator,您可以访问 OpenShift Container Platform Web 控制台中用于集群中活跃 pod 的容器镜像,访问 OpenShift Container Platform Web 控制台中的漏洞扫描结果。Red Hat Quay Container Security Operator:

  • 监视与所有或指定命名空间中的 pod 关联的容器
  • 查询容器来自漏洞信息的容器 registry,提供镜像的 registry 正在运行镜像扫描(如 Quay.io 或带有 Clair 扫描的 Red Hat Quay registry)
  • 通过 Kubernetes API 中的 ImageManifestVuln 对象公开漏洞

根据这里的说明,Red Hat Quay Container Security Operator 安装在 openshift-operators 命名空间中,因此 OpenShift Container Platform 集群中的所有命名空间都可以使用它。

14.1. 安装 Red Hat Quay Container Security Operator

您可以从 OpenShift Container Platform Web 控制台 Operator Hub 或 CLI 安装 Red Hat Quay Container Security Operator。

先决条件

  • 已安装 oc CLI。
  • 具有 OpenShift Container Platform 集群的管理员特权。
  • 您有来自集群中运行的 Red Hat Quay 或 Quay.io registry 的容器。

流程

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

    1. 在 Web 控制台中,进入到 OperatorsOperatorHub 并选择 Security
    2. 选择 Red Hat Quay Container Security Operator Operator,然后选择 Install
    3. Red Hat Quay Container Security Operator 页面中,选择 InstallUpdate channel, Installation mode, 和 Update approval 会自动选择。Installed Namespace 字段默认为 openshift-operators。您可以根据需要调整这些设置。
    4. 选择 Install。在 Installed Operators 页中几分钟后会出现 Red Hat Quay Container Security Operator
    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