15장. Pod에서 취약점 스캔

Red Hat Quay Container Security Operator를 사용하면 OpenShift Container Platform 웹 콘솔에서 클러스터의 활성 Pod에 사용된 컨테이너 이미지의 취약점 검사 결과에 액세스할 수 있습니다. Red Hat Quay Container Security Operator:

  • 모든 네임스페이스 또는 지정된 네임스페이스에서 Pod와 관련된 컨테이너 감시
  • 이미지의 레지스트리에서 이미지 스캔(예: Clair 스캔을 사용하는 Quay.io 또는 Red Hat Quay 레지스트리)이 실행 중인 경우 컨테이너가 있는 컨테이너 레지스트리에서 취약점 정보를 조회합니다.
  • Kubernetes API의 ImageManifestVuln 오브젝트를 통해 취약점 노출

여기 지침을 사용하여 Red Hat Quay Container Security Operator는 openshift-operators 네임스페이스에 설치되므로 OpenShift Container Platform 클러스터의 모든 네임스페이스에서 사용할 수 있습니다.

15.1. Red Hat Quay Container Security Operator 설치

OpenShift Container Platform 웹 콘솔 Operator Hub에서 또는 CLI를 사용하여 Red Hat Quay Container Security Operator를 설치할 수 있습니다.

사전 요구 사항

  • oc CLI를 설치했습니다.
  • OpenShift Container Platform 클러스터에 대한 관리자 권한이 있습니다.
  • 클러스터에서 실행되는 Red Hat Quay 또는 Quay.io 레지스트리에서 제공되는 컨테이너가 있습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔을 사용하여 Red Hat Quay Container Security Operator를 설치할 수 있습니다.

    1. 웹 콘솔에서 OperatorOperatorHub 로 이동하여 보안 을 선택합니다.
    2. Red Hat Quay Container Security Operator 를 선택한 다음 설치를 선택합니다.
    3. Red Hat Quay Container Security Operator 페이지에서 설치를 선택합니다. 업데이트 채널,설치 모드업데이트 승인이 자동으로 선택됩니다. 설치된 네임스페이스 필드의 기본값은 openshift-operators 입니다. 필요에 따라 이러한 설정을 조정할 수 있습니다.
    4. 설치를 선택합니다. Red Hat Quay Container Security Operator설치된 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