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 아키텍처에서 사용할 수 있습니다.

프로세스

  1. 대상 운영 체제의 roxctl 아키텍처를 확인합니다.

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. roxctl CLI를 다운로드합니다.

    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Linux/roxctl${arch}"
  3. roxctl 바이너리를 실행 가능하게 만듭니다.

    $ chmod +x roxctl
  4. roxctl 바이너리를 PATH 에 있는 디렉터리에 배치합니다.

    PATH를 확인하려면 다음 명령을 실행합니다.

    $ echo $PATH

검증

  • 설치한 roxctl 버전을 확인합니다.

    $ roxctl version

9.3.1.3. macOS에 roxctl CLI 설치

다음 절차를 사용하여 macOS에 roxctl CLI 바이너리를 설치할 수 있습니다.

참고

macOS용 roxctl CLI는 amd64arm64 아키텍처에서 사용할 수 있습니다.

프로세스

  1. 대상 운영 체제의 roxctl 아키텍처를 확인합니다.

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. roxctl CLI를 다운로드합니다.

    $ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.5.9/bin/Darwin/roxctl${arch}"
  3. 바이너리에서 모든 확장 속성을 제거합니다.

    $ xattr -c roxctl
  4. roxctl 바이너리를 실행 가능하게 만듭니다.

    $ chmod +x roxctl
  5. 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 을 사용합니다.

프로세스

  1. 센서 이미지를 업데이트합니다.

    $ 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 을 입력합니다.
  2. 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 을 입력합니다.
  3. 수집기 이미지를 업데이트합니다.

    $ 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}
  4. 승인 제어 이미지를 업데이트합니다.

    $ 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를 사용하여 중앙 및 모든 보안 클러스터 전체에서 호환성과 최적의 보안 구성을 보장할 수 있습니다.

프로세스

  1. 모든 보안 클러스터에 배포된 모든 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가 있음을 확인할 수 있습니다.

  2. RHACS 사용자 지정 SCC 대신 Red Hat OpenShift SCC를 사용하는 데 필요한 역할 및 역할 바인딩을 추가합니다.
  3. 모든 보안 클러스터에 Red Hat OpenShift SCC를 사용하기 위해 필요한 역할 및 역할 바인딩을 추가하려면 다음 단계를 완료하십시오.

    1. 다음 콘텐츠를 사용하여 역할 및 역할 바인딩 리소스를 정의하는 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
      - - -
      1
      Kubernetes 리소스의 유형(이 예에서는 Role ).
      2
      역할 리소스의 이름입니다.
      3
      역할이 생성되는 네임스페이스입니다.
      4
      역할 리소스에서 부여하는 권한에 대해 설명합니다.
      5
      Kubernetes 리소스 유형(이 예에서는 RoleBinding )입니다.
      6
      역할 바인딩 리소스의 이름입니다.
      7
      동일한 네임스페이스에 바인딩할 역할을 지정합니다.
      8
      역할에 바인딩된 주체를 지정합니다.
    2. 다음 명령을 실행하여 upgrade-scs.yaml 파일에 지정된 역할 및 역할 바인딩 리소스를 생성합니다.

      $ oc -n stackrox create -f ./update-scs.yaml
      중요

      upgrade-scs.yaml 파일에 지정된 역할 및 역할 바인딩을 생성하려면 각 보안 클러스터에서 이 명령을 실행해야 합니다.

  4. RHACS와 관련된 SCC를 삭제합니다.

    1. 모든 보안 클러스터에 고유한 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 환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.

프로세스

  1. 다음 명령을 실행하여 센서 배포에 대한 변수를 편집합니다.

    $ oc -n stackrox edit deploy/sensor 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. GOMEMLIMIT 변수를 ROX_MEMLIMIT 로 바꿉니다.
  3. 파일을 저장합니다.
9.3.2.2.2. 수집기 배포에 대한 GOMEMLIMIT 환경 변수 편집

버전 4.4로 업그레이드하려면 GOMEMLIMIT 환경 변수를 ROX_MEMLIMIT 환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.

프로세스

  1. 다음 명령을 실행하여 수집기 배포에 대한 변수를 편집합니다.

    $ oc -n stackrox edit deploy/collector 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. GOMEMLIMIT 변수를 ROX_MEMLIMIT 로 바꿉니다.
  3. 파일을 저장합니다.
9.3.2.2.3. Admission Controller 배포를 위한 GOMEMLIMIT 환경 변수 편집

버전 4.4로 업그레이드하려면 GOMEMLIMIT 환경 변수를 ROX_MEMLIMIT 환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.

프로세스

  1. 다음 명령을 실행하여 Admission Controller 배포의 변수를 편집합니다.

    $ oc -n stackrox edit deploy/admission-control 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. GOMEMLIMIT 변수를 ROX_MEMLIMIT 로 바꿉니다.
  3. 파일을 저장합니다.
9.3.2.2.4. 보안 클러스터 업그레이드 확인

보안 클러스터를 업그레이드한 후 업데이트된 Pod가 작동하는지 확인합니다.

프로세스

  • 새 Pod가 배포되었는지 확인합니다.

    $ oc get deploy,ds -n stackrox -o wide 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
    $ oc get pod -n stackrox --watch 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

9.3.3. RHCOS 노드 스캔 활성화

OpenShift Container Platform을 사용하는 경우 RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 사용하여 취약점에 대해 RHCOS(Red Hat Enterprise Linux CoreOS) 노드 검사를 활성화할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 명령 중 하나를 실행하여 규정 준수 컨테이너를 업데이트합니다.

    • 메트릭이 비활성화된 기본 규정 준수 컨테이너의 경우 다음 명령을 실행합니다.

      $ 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"}]}]}}}}'
  2. 다음 단계를 수행하여 Collector DaemonSet(DS)를 업데이트합니다.

    1. 다음 명령을 실행하여 수집기 DS에 새 볼륨 마운트를 추가합니다.

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
    2. 다음 명령을 실행하여 새 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"}]}]}}}}'
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.