14.5. RHCOS 노드 호스트 스캔
OpenShift Container Platform의 경우 RHCOS(Red Hat Enterprise Linux CoreOS)는 컨트롤 플레인에서 지원되는 유일한 운영 체제입니다. 노드 호스트의 경우 OpenShift Container Platform은 RHCOS 및 Red Hat Enterprise Linux (RHEL)를 둘 다 지원합니다. RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 사용하면 RHCOS 노드에서 취약점을 스캔하고 잠재적인 보안 위협을 감지할 수 있습니다.
RHACS는 RHCOS 설치의 일부로 노드 호스트에 설치된 RHCOS RPM을 검사하여 알려진 취약점을 검사합니다.
먼저 RHACS는 RHCOS 구성 요소를 분석하고 감지합니다. 그런 다음 RHEL 및 OpenShift 4.X OVAL(Open Vulnerability and Assessment Language) v2 보안 데이터 스트림을 사용하여 식별된 구성 요소의 취약점과 일치합니다.
-
roxctl
CLI를 사용하여 RHACS를 설치한 경우 RHCOS 노드 검사 기능을 수동으로 활성화해야 합니다. OpenShift Container Platform에서 Helm 또는 Operator 설치 방법을 사용하는 경우 이 기능은 기본적으로 활성화됩니다.
14.5.1. RHCOS 노드 스캔 활성화
OpenShift Container Platform을 사용하는 경우 RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 사용하여 취약점에 대해 RHCOS(Red Hat Enterprise Linux CoreOS) 노드 검사를 활성화할 수 있습니다.
사전 요구 사항
- Secured 클러스터의 RHCOS 노드 호스트를 스캔하려면 OpenShift Container Platform 4.11 이상에 Secured 클러스터를 설치해야 합니다. 지원되는 플랫폼 및 아키텍처에 대한 자세한 내용은 Red Hat Advanced Cluster Security for Kubernetes 지원 매트릭스 를 참조하십시오. RHACS에 대한 라이프 사이클 지원 정보는 Red Hat Advanced Cluster Security for Kubernetes 지원 정책을 참조하십시오.
프로세스
다음 명령 중 하나를 실행하여 규정 준수 컨테이너를 업데이트합니다.
메트릭이 비활성화된 기본 규정 준수 컨테이너의 경우 다음 명령을 실행합니다.
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
Prometheus 지표가 활성화된 규정 준수 컨테이너의 경우 다음 명령을 실행합니다.
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
다음 단계를 수행하여 Collector DaemonSet(DS)를 업데이트합니다.
다음 명령을 실행하여 수집기 DS에 새 볼륨 마운트를 추가합니다.
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
다음 명령을 실행하여 새
NodeScanner
컨테이너를 추가합니다.$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.5.4","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'
14.5.2. 분석 및 탐지
OpenShift Container Platform과 함께 RHACS를 사용하는 경우 RHACS는 규정 준수 컨테이너와 Node-inventory 컨테이너를 분석 및 탐지하기 위해 두 가지 조정 컨테이너를 생성합니다. Compliance 컨테이너는 이미 이전 RHACS 버전의 일부였습니다. 그러나 Node-inventory 컨테이너는 RHACS 4.0의 새로운 기능이며 OpenShift Container Platform 클러스터 노드에서만 작동합니다.
시작 시 Compliance 및 Node-inventory 컨테이너는 5분 이내에 RHCOS(Red Hat Enterprise Linux CoreOS) 소프트웨어 구성 요소의 첫 번째 인벤토리 검사를 시작합니다. 다음으로 Node-inventory 컨테이너는 노드의 파일 시스템을 검사하여 설치된 RPM 패키지를 식별하고 RHCOS 소프트웨어 구성 요소를 보고합니다. 이후 인벤토리 검색은 일반적으로 4시간마다 주기적인 간격으로 수행됩니다. Compliance 컨테이너에 대해 ROX_NODE_SCANNING_INTERVAL 환경 변수를 구성하여 기본 간격을 사용자 지정할 수 있습니다.
14.5.3. 취약점 일치
중앙 및 스캐너를 포함하는 중앙 서비스는 취약점 일치를 수행합니다. 스캐너는 Red Hat의 OVAL(Open Vulnerability and Assessment Language) v2 보안 데이터 스트림을 사용하여 RHCOS(Red Hat Enterprise Linux CoreOS) 소프트웨어 구성 요소의 취약점과 일치합니다.
이전 버전과 달리 RHACS 4.0에서는 더 이상 Kubernetes 노드 메타데이터를 사용하여 커널 및 컨테이너 런타임 버전을 찾지 않습니다. 대신 설치된 RHCOS RPM을 사용하여 해당 정보를 평가합니다.
14.5.4. 관련 환경 변수
다음 환경 변수를 사용하여 RHACS에서 RHCOS 노드 스캔을 구성할 수 있습니다.
환경 변수 | 설명 |
---|---|
|
캐시된 인벤토리가 오래된 것으로 간주되는 시간입니다. 기본값은 |
|
노드 검사의 초기 시간(초)은 백오프 파일이 발견되면 지연됩니다. 기본값은 |
| backoff의 상한값입니다. 기본값은 5m이며 Kubernetes 재시작 정책 안정성 타이머의 50%입니다. |
환경 변수 | 설명 |
---|---|
|
노드 검사 사이의 간격 기간의 기본 값입니다. deafult 값은 |
|
노드 검사 기간은 기본 간격 시간과 다를 수 있습니다. 그러나 최대값은 |
|
임의로 생성되는 첫 번째 노드 검사 전의 최대 대기 시간입니다. 이 값을 |
14.5.5. 대시보드를 사용하여 노드의 취약점 식별
취약점 관리 보기를 사용하여 노드의 취약점을 식별할 수 있습니다. 확인된 취약점에는 핵심 Kubernetes 구성 요소의 취약점 및 Docker, CRI-O, runC 및 containerd와 같은 컨테이너 런타임이 포함됩니다. RHACS에서 검사할 수 있는 운영 체제에 대한 자세한 내용은 "지원되는 운영 체제"를 참조하십시오.
프로세스
-
RHACS 포털에서 취약점 관리
대시보드 로 이동합니다. - 헤더 에서 노드를 선택하여 노드에 영향을 미치는 모든 CVE 목록을 확인합니다.
목록에서 노드를 선택하여 해당 노드에 영향을 미치는 모든 CVE의 세부 정보를 확인합니다.
- 노드를 선택하면 선택한 노드에 대한 노드 세부 정보 패널이 열립니다. 노드 보기에는 노드에 대한 심층적인 세부 정보가 표시되고 CVSS 점수별 CVE 및 해당 노드의 수정 가능한 CVE에 대한 정보가 포함되어 있습니다.
- CVSS별 CVE 점수 위젯 헤더에서 View All on the CVEs by CVSS score widget 헤더를 선택하여 선택한 노드의 모든 CVE 목록을 확인합니다. CVE 목록을 필터링할 수도 있습니다.
- 수정 가능한 CVE를 CSV 파일로 내보내려면 Node Findings 섹션에서 CSV로 내보내기 를 선택합니다.
14.5.6. 노드 CVE 보기
RHACS를 사용하여 노드의 취약점을 식별할 수 있습니다. 확인된 취약점은 다음과 같습니다.
- 핵심 Kubernetes 구성 요소의 취약점
- Docker, CRI-O, runC 및 containerd와 같은 컨테이너 런타임의 취약점
RHACS에서 검사할 수 있는 운영 체제에 대한 자세한 내용은 "지원되는 운영 체제"를 참조하십시오.
프로세스
-
RHACS 포털에서 취약점 관리
노드 CVE를 클릭합니다. 데이터를 보려면 다음 작업을 수행합니다.
- 모든 노드에 영향을 미치는 모든 CVE 목록을 보려면 < number> CVE를 선택합니다.
- CVE가 포함된 노드 목록을 보려면 < number> 노드를 선택합니다.
선택 사항: 엔터티에 따라 CVE를 필터링하려면 적절한 필터 및 속성을 선택합니다. 필터링 기준을 추가하려면 다음 단계를 따르십시오.
- 목록에서 엔터티 또는 특성을 선택합니다.
- 선택 사항에 따라 텍스트와 같은 적절한 정보를 입력하거나 날짜 또는 개체를 선택합니다.
- 오른쪽 화살표 아이콘을 클릭합니다.
선택 사항: 추가 엔터티 및 특성을 선택한 다음 오른쪽 화살표 아이콘을 클릭하여 추가합니다. 필터 엔터티 및 속성은 다음 표에 나열되어 있습니다.
표 14.6. CVE 필터링 엔터티 속성 노드
- name: 노드의 이름입니다.
- 운영 체제: 노드의 운영 체제(예: RHEL(Red Hat Enterprise Linux))입니다.
- label: 노드의 레이블입니다.
- annotation: 노드의 주석입니다.
- 검사 시간: 노드의 검사 날짜입니다.
CVE
- name: CVE의 이름입니다.
- 검색된 시간: RHACS가 CVE를 발견한 날짜입니다.
CVSS: CVE의 심각도 수준입니다. 심각도 수준에 대해 다음 옵션에서 선택할 수 있습니다.
- 보다 크거나
- 크거나 같음
- 이 값과 같습니다
- 작거나 같음
- 보다 작음
노드 구성 요소
- name: 구성 요소의 이름입니다.
-
Version: 구성 요소의 버전입니다(예:
4.15.0-2024
). 이를 사용하여 구성 요소 이름과 함께 특정 버전의 구성 요소(예:)를 검색할 수 있습니다.
Cluster
- name: 클러스터의 이름입니다.
- label : 클러스터의 레이블입니다.
- type: 클러스터 유형입니다(예: OCP).
- 플랫폼 유형: 플랫폼의 유형입니다(예: OpenShift 4 클러스터).
선택 사항: 결과 목록을 구체화하려면 다음 작업 중 하나를 수행합니다.
- CVE 심각도 를 클릭한 다음 하나 이상의 수준을 선택합니다.
- CVE 상태를 클릭한 다음 Fixable 또는 Not fixable 을 선택합니다.
- 선택 사항: CVSS 점수 및 해당 노드의 수정 가능한 CVE에 따라 노드의 세부 정보와 CVE에 대한 정보를 보려면 노드 목록에서 노드 이름을 클릭합니다.