9.3. roxctl CLI를 사용하여 RHACS 클라우드 서비스에서 보안 클러스터 수동 업그레이드
roxctl
CLI를 사용하여 RHACS 클라우드 서비스에서 보안 클러스터를 업그레이드할 수 있습니다.
roxctl
CLI를 사용하여 보안 클러스터를 설치하는 경우에만 보안 클러스터를 수동으로 업그레이드해야 합니다.
9.3.1. roxctl
CLI 업그레이드
roxctl
CLI를 최신 버전으로 업그레이드하려면 현재 버전의 roxctl
CLI를 제거한 다음 최신 버전의 roxctl
CLI를 설치해야 합니다.
9.3.1.1. roxctl CLI 설치 제거
다음 절차에 따라 Linux에서 roxctl
CLI 바이너리를 제거할 수 있습니다.
프로세스
roxctl
바이너리를 찾아 삭제합니다.$ ROXPATH=$(which roxctl) && rm -f $ROXPATH 1
- 1
- 환경에 따라
roxctl
바이너리를 삭제하려면 관리자 권한이 필요할 수 있습니다.
9.3.1.2. Linux에 roxctl CLI 설치
다음 절차에 따라 Linux에 roxctl
CLI 바이너리를 설치할 수 있습니다.
Linux용 roxctl
CLI는 amd
64,arm64,
및 ppc64
les390x
아키텍처에서 사용할 수 있습니다.
프로세스
대상 운영 체제의
roxctl
아키텍처를 확인합니다.$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
roxctl
CLI를 다운로드합니다.$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Linux/roxctl${arch}"
roxctl
바이너리를 실행 가능하게 만듭니다.$ chmod +x roxctl
roxctl
바이너리를PATH
에 있는 디렉터리에 배치합니다.PATH
를 확인하려면 다음 명령을 실행합니다.$ echo $PATH
검증
설치한
roxctl
버전을 확인합니다.$ roxctl version
9.3.1.3. macOS에 roxctl CLI 설치
다음 절차를 사용하여 macOS에 roxctl
CLI 바이너리를 설치할 수 있습니다.
macOS용 roxctl
CLI는 amd64
및 arm64
아키텍처에서 사용할 수 있습니다.
프로세스
대상 운영 체제의
roxctl
아키텍처를 확인합니다.$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
roxctl
CLI를 다운로드합니다.$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Darwin/roxctl${arch}"
바이너리에서 모든 확장 속성을 제거합니다.
$ xattr -c roxctl
roxctl
바이너리를 실행 가능하게 만듭니다.$ chmod +x roxctl
roxctl
바이너리를PATH
에 있는 디렉터리에 배치합니다.PATH
를 확인하려면 다음 명령을 실행합니다.$ echo $PATH
검증
설치한
roxctl
버전을 확인합니다.$ roxctl version
9.3.1.4. Windows에 roxctl CLI 설치
다음 절차를 사용하여 Windows에 roxctl
CLI 바이너리를 설치할 수 있습니다.
Windows용 roxctl
CLI는 amd64
아키텍처에서 사용할 수 있습니다.
프로세스
roxctl
CLI를 다운로드합니다.$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Windows/roxctl.exe
검증
설치한
roxctl
버전을 확인합니다.$ roxctl version
9.3.2. 모든 보안 클러스터 수동 업그레이드
최적의 기능을 유지하려면 RHACS 클라우드 서비스가 실행 중인 보안 클러스터에 동일한 RHACS 버전을 사용하십시오. 자동 업그레이드를 사용하는 경우 자동 업그레이드를 사용하여 모든 보안 클러스터를 업데이트합니다. 자동 업그레이드를 사용하지 않는 경우 모든 보안 클러스터에서 이 섹션의 지침을 완료합니다.
센서, 수집기 및 Admission 컨트롤러를 실행하는 각 보안 클러스터의 수동 업그레이드를 완료하려면 다음 지침을 따르십시오.
9.3.2.1. 다른 이미지 업데이트
자동 업그레이드를 사용하지 않는 경우 각 보안 클러스터에서 센서, 수집기 및 규정 준수 이미지를 업데이트해야 합니다.
Kubernetes를 사용하는 경우 이 절차에 나열된 명령에 oc
대신 kubectl
을 사용합니다.
프로세스
센서 이미지를 업데이트합니다.
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.9 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
Compliance 이미지를 업데이트합니다.
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.9 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
수집기 이미지를 업데이트합니다.
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.5.9 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
참고수집기 슬림 이미지를 사용하는 경우 다음 명령을 실행합니다.
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:{rhacs-version}
승인 제어 이미지를 업데이트합니다.
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.9
roxctl
CLI를 사용하여 Red Hat OpenShift에 RHACS를 설치한 경우 SCC(보안 컨텍스트 제약 조건)를 마이그레이션해야 합니다.
자세한 내용은 "추가 리소스" 섹션의 "수동 업그레이드 중 SCC 마이그레이션"을 참조하십시오.
추가 리소스
9.3.2.2. 수동 업그레이드 중 SCC 마이그레이션
roxctl
CLI를 사용하여 수동 업그레이드 중에 SCC(보안 컨텍스트 제약 조건)를 마이그레이션하면 RHACS(Red Hat Advanced Cluster Security for Kubernetes) 서비스를 원활하게 전환하여 Red Hat OpenShift SCC를 사용하여 중앙 및 모든 보안 클러스터 전체에서 호환성과 최적의 보안 구성을 보장할 수 있습니다.
프로세스
모든 보안 클러스터에 배포된 모든 RHACS 서비스를 나열합니다.
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
출력 예
Name: admission-control-6f4dcc6b4c-2phwd openshift.io/scc: stackrox-admission-control #... Name: central-575487bfcb-sjdx8 openshift.io/scc: stackrox-central Name: central-db-7c7885bb-6bgbd openshift.io/scc: stackrox-central-db Name: collector-56nkr openshift.io/scc: stackrox-collector #... Name: scanner-68fc55b599-f2wm6 openshift.io/scc: stackrox-scanner Name: scanner-68fc55b599-fztlh #... Name: sensor-84545f86b7-xgdwf openshift.io/scc: stackrox-sensor #...
이 예에서는 각 Pod에
openshift.io/scc
필드를 통해 지정된 고유한 사용자 지정 SCC가 있음을 확인할 수 있습니다.- RHACS 사용자 지정 SCC 대신 Red Hat OpenShift SCC를 사용하는 데 필요한 역할 및 역할 바인딩을 추가합니다.
모든 보안 클러스터에 Red Hat OpenShift SCC를 사용하기 위해 필요한 역할 및 역할 바인딩을 추가하려면 다음 단계를 완료하십시오.
다음 콘텐츠를 사용하여 역할 및 역할 바인딩 리소스를 정의하는
upgrade-scs.yaml
이라는 파일을 생성합니다.예 9.1. YAML 파일의 예
apiVersion: rbac.authorization.k8s.io/v1 kind: Role 1 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: collector app.kubernetes.io/instance: stackrox-secured-cluster-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-secured-cluster-services app.kubernetes.io/version: 4.4.0 auto-upgrade.stackrox.io/component: sensor name: use-privileged-scc 2 namespace: stackrox 3 rules: 4 - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding 5 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: collector app.kubernetes.io/instance: stackrox-secured-cluster-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-secured-cluster-services app.kubernetes.io/version: 4.4.0 auto-upgrade.stackrox.io/component: sensor name: collector-use-scc 6 namespace: stackrox roleRef: 7 apiGroup: rbac.authorization.k8s.io kind: Role name: use-privileged-scc subjects: 8 - kind: ServiceAccount name: collector namespace: stackrox - - -
다음 명령을 실행하여
upgrade-scs.yaml
파일에 지정된 역할 및 역할 바인딩 리소스를 생성합니다.$ oc -n stackrox create -f ./update-scs.yaml
중요upgrade-scs.yaml
파일에 지정된 역할 및 역할 바인딩을 생성하려면 각 보안 클러스터에서 이 명령을 실행해야 합니다.
RHACS와 관련된 SCC를 삭제합니다.
모든 보안 클러스터에 고유한 SCC를 삭제하려면 다음 명령을 실행합니다.
$ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
중요보안된 각 클러스터에서 이 명령을 실행하여 보안된 각 클러스터에 고유한 SCC를 삭제해야 합니다.
검증
다음 명령을 실행하여 모든 Pod가 올바른 SCC를 사용하고 있는지 확인합니다.
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
다음 표와 출력을 비교합니다.
Component 이전 사용자 정의 SCC 새로운 Red Hat OpenShift 4 SCC Central
stackrox-central
nonroot-v2
Central-db
stackrox-central-db
nonroot-v2
스캐너
stackrox-scanner
nonroot-v2
scanner-db
stackrox-scanner
nonroot-v2
Admission Controller
stackrox-admission-control
restricted-v2
수집기
stackrox-collector
privileged
센서
stackrox-sensor
restricted-v2
9.3.2.2.1. 센서 배포에 대한 GOMEMLIMIT 환경 변수 편집
버전 4.4로 업그레이드하려면 GOMEMLIMIT
환경 변수를 ROX_MEMLIMIT
환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.
프로세스
다음 명령을 실행하여 센서 배포에 대한 변수를 편집합니다.
$ oc -n stackrox edit deploy/sensor 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
-
GOMEMLIMIT
변수를ROX_MEMLIMIT
로 바꿉니다. - 파일을 저장합니다.
9.3.2.2.2. 수집기 배포에 대한 GOMEMLIMIT 환경 변수 편집
버전 4.4로 업그레이드하려면 GOMEMLIMIT
환경 변수를 ROX_MEMLIMIT
환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.
프로세스
다음 명령을 실행하여 수집기 배포에 대한 변수를 편집합니다.
$ oc -n stackrox edit deploy/collector 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
-
GOMEMLIMIT
변수를ROX_MEMLIMIT
로 바꿉니다. - 파일을 저장합니다.
9.3.2.2.3. Admission Controller 배포를 위한 GOMEMLIMIT 환경 변수 편집
버전 4.4로 업그레이드하려면 GOMEMLIMIT
환경 변수를 ROX_MEMLIMIT
환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.
프로세스
다음 명령을 실행하여 Admission Controller 배포의 변수를 편집합니다.
$ oc -n stackrox edit deploy/admission-control 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
-
GOMEMLIMIT
변수를ROX_MEMLIMIT
로 바꿉니다. - 파일을 저장합니다.
9.3.2.2.4. 보안 클러스터 업그레이드 확인
보안 클러스터를 업그레이드한 후 업데이트된 Pod가 작동하는지 확인합니다.
9.3.3. 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.9","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"}]}]}}}}'
추가 리소스