5.4. Compliance Operator 관리

5.4.1. Compliance Operator 설치

Compliance Operator를 사용하려면 먼저 클러스터에 배포되었는지 확인해야 합니다.

중요

Compliance Operator는 OpenShift Dedicated, Red Hat OpenShift Service on AWS, Microsoft Azure Red Hat OpenShift와 같은 관리형 플랫폼에서 잘못된 결과를 보고할 수 있습니다. 자세한 내용은 Red Hat 지식베이스 솔루션 #6983418 을 참조하십시오.

5.4.1.1. 웹 콘솔을 통해 Compliance Operator 설치

사전 요구 사항

  • admin 권한이 있어야 합니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 OperatorOperatorHub로 이동합니다.
  2. Compliance Operator를 검색한 다음 설치를 클릭합니다.
  3. 기본 설치 모드네임스페이스를 계속 선택하여 Operator가 openshift-compliance 네임스페이스에 설치되도록 합니다.
  4. 설치를 클릭합니다.

검증

설치에 성공했는지 확인하려면 다음을 수행하십시오.

  1. Operator설치된 Operator 페이지로 이동합니다.
  2. Compliance Operator가 openshift-compliance 네임스페이스에 설치되어 있고 해당 상태는 Succeeded인지 확인합니다.

Operator가 성공적으로 설치되지 않은 경우 다음을 수행하십시오.

  1. Operator설치된 Operator 페이지로 이동하여 Status 열에 오류 또는 실패가 있는지 점검합니다.
  2. 워크로드Pod 페이지로 이동하고 openshift-compliance 프로젝트에서 문제를 보고하는 Pod의 로그를 확인합니다.
중요

restricted SCC(보안 컨텍스트 제약 조건)가 system:authenticated 그룹을 포함하도록 수정되었거나 requiredDropCapabilities를 추가한 경우 Compliance Operator 가 권한 문제로 인해 제대로 작동하지 않을 수 있습니다.

Compliance Operator 스캐너 Pod 서비스 계정에 대한 사용자 정의 SCC를 생성할 수 있습니다. 자세한 내용은 Compliance Operator에 대한 사용자 정의 SCC 생성을 참조하십시오.

5.4.1.2. CLI를 사용하여 Compliance Operator 설치

사전 요구 사항

  • admin 권한이 있어야 합니다.

프로세스

  1. Namespace 오브젝트를 정의합니다.

    예: namespace-object.yaml

    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged 1
      name: openshift-compliance

    1
    OpenShift Container Platform 4.15에서는 Pod 보안 레이블을 네임스페이스 수준에서 privileged 로 설정해야 합니다.
  2. Namespace 오브젝트를 생성합니다.

    $ oc create -f namespace-object.yaml
  3. OperatorGroup 오브젝트를 정의합니다.

    예: operator-group-object.yaml

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance

  4. OperatorGroup 개체를 생성합니다.

    $ oc create -f operator-group-object.yaml
  5. Subscription 오브젝트를 정의합니다.

    예: subscription-object.yaml

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace

  6. Subscription 오브젝트를 생성합니다.

    $ oc create -f subscription-object.yaml
참고

글로벌 스케줄러 기능을 설정하고 defaultNodeSelector를 활성화하는 경우 네임스페이스를 수동으로 생성하고 openshift-compliance 네임스페이스의 주석 또는 Compliance Operator가 설치된 네임스페이스를 openshift.io/node-selector: “”로 업데이트해야 합니다. 이렇게 하면 기본 노드 선택기가 제거되고 배포 실패가 발생하지 않습니다.

검증

  1. CSV 파일을 검사하여 설치에 성공했는지 확인합니다.

    $ oc get csv -n openshift-compliance
  2. Compliance Operator가 실행 중인지 확인합니다.

    $ oc get deploy -n openshift-compliance
중요

restricted SCC(보안 컨텍스트 제약 조건)가 system:authenticated 그룹을 포함하도록 수정되었거나 requiredDropCapabilities를 추가한 경우 Compliance Operator 가 권한 문제로 인해 제대로 작동하지 않을 수 있습니다.

Compliance Operator 스캐너 Pod 서비스 계정에 대한 사용자 정의 SCC를 생성할 수 있습니다. 자세한 내용은 Compliance Operator에 대한 사용자 정의 SCC 생성을 참조하십시오.

5.4.1.3. 호스팅된 컨트롤 플레인에 Compliance Operator 설치

Compliance Operator는 서브스크립션 파일을 생성하여 OperatorHub를 사용하여 호스팅되는 컨트롤 플레인에 설치할 수 있습니다.

중요

호스팅된 컨트롤 플레인은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • admin 권한이 있어야 합니다.

프로세스

  1. 다음과 유사한 Namespace 오브젝트를 정의합니다.

    예: namespace-object.yaml

    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged 1
      name: openshift-compliance

    1
    OpenShift Container Platform 4.15에서는 Pod 보안 레이블을 네임스페이스 수준에서 privileged 로 설정해야 합니다.
  2. 다음 명령을 실행하여 Namespace 오브젝트를 생성합니다.

    $ oc create -f namespace-object.yaml
  3. OperatorGroup 오브젝트를 정의합니다.

    예: operator-group-object.yaml

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance

  4. 다음 명령을 실행하여 OperatorGroup 오브젝트를 생성합니다.

    $ oc create -f operator-group-object.yaml
  5. Subscription 오브젝트를 정의합니다.

    예: subscription-object.yaml

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      config:
        nodeSelector:
          node-role.kubernetes.io/worker: ""
        env:
        - name: PLATFORM
          value: "HyperShift"

  6. 다음 명령을 실행하여 Subscription 오브젝트를 생성합니다.

    $ oc create -f subscription-object.yaml

검증

  1. 다음 명령을 실행하여 CSV 파일을 검사하여 설치에 성공했는지 확인합니다.

    $ oc get csv -n openshift-compliance
  2. 다음 명령을 실행하여 Compliance Operator가 실행 중인지 확인합니다.

    $ oc get deploy -n openshift-compliance

5.4.1.4. 추가 리소스

5.4.2. Compliance Operator 업데이트

클러스터 관리자는 OpenShift Container Platform 클러스터에서 Compliance Operator를 업데이트할 수 있습니다.

중요

OpenShift Container Platform 클러스터를 버전 4.14로 업데이트하면 Compliance Operator가 예상대로 작동하지 않을 수 있습니다. 이는 지속적으로 알려진 문제 때문입니다. 자세한 내용은 OCPBUGS-18025 에서 참조하십시오.

5.4.2.1. Operator 업데이트 준비

설치된 Operator의 서브스크립션은 Operator를 추적하고 업데이트를 수신하는 업데이트 채널을 지정합니다. 업데이트 채널을 변경하여 추적을 시작하고 최신 채널에서 업데이트를 수신할 수 있습니다.

서브스크립션의 업데이트 채널 이름은 Operator마다 다를 수 있지만 이름 지정 체계는 일반적으로 지정된 Operator 내의 공통 규칙을 따릅니다. 예를 들어 채널 이름은 Operator(1.2, 1.3) 또는 릴리스 빈도(stable, fast)에서 제공하는 애플리케이션의 마이너 릴리스 업데이트 스트림을 따를 수 있습니다.

참고

설치된 Operator는 현재 채널보다 오래된 채널로 변경할 수 없습니다.

Red Hat Customer Portal 랩에는 관리자가 Operator 업데이트를 준비하는 데 도움이 되는 다음 애플리케이션이 포함되어 있습니다.

애플리케이션을 사용하여 Operator Lifecycle Manager 기반 Operator를 검색하고 다양한 OpenShift Container Platform 버전에서 업데이트 채널별로 사용 가능한 Operator 버전을 확인할 수 있습니다. Cluster Version Operator 기반 Operator는 포함되어 있지 않습니다.

5.4.2.2. Operator의 업데이트 채널 변경

OpenShift Container Platform 웹 콘솔을 사용하여 Operator의 업데이트 채널을 변경할 수 있습니다.

작은 정보

서브스크립션의 승인 전략이 자동으로 설정된 경우 선택한 채널에서 새 Operator 버전을 사용할 수 있는 즉시 업데이트 프로세스가 시작됩니다. 승인 전략이 수동으로 설정된 경우 보류 중인 업데이트를 수동으로 승인해야 합니다.

사전 요구 사항

  • OLM(Operator Lifecycle Manager)을 사용하여 이전에 설치한 Operator입니다.

프로세스

  1. 웹 콘솔의 관리자 화면에서 Operator → Installed Operators로 이동합니다.
  2. 업데이트 채널을 변경할 Operator 이름을 클릭합니다.
  3. 서브스크립션 탭을 클릭합니다.
  4. 업데이트 채널 아래에서 업데이트 채널 의 이름을 클릭합니다.
  5. 변경할 최신 업데이트 채널을 클릭한 다음 저장을 클릭합니다.
  6. 자동 승인 전략이 있는 서브스크립션의 경우 업데이트가 자동으로 시작됩니다. Operator → 설치된 Operator 페이지로 이동하여 업데이트 진행 상황을 모니터링합니다. 완료되면 상태가 성공최신으로 변경됩니다.

    수동 승인 전략이 있는 서브스크립션의 경우 서브스크립션 탭에서 업데이트를 수동으로 승인할 수 있습니다.

5.4.2.3. 보류 중인 Operator 업데이트 수동 승인

설치된 Operator의 서브스크립션에 있는 승인 전략이 수동으로 설정된 경우 새 업데이트가 현재 업데이트 채널에 릴리스될 때 업데이트를 수동으로 승인해야 설치가 시작됩니다.

사전 요구 사항

  • OLM(Operator Lifecycle Manager)을 사용하여 이전에 설치한 Operator입니다.

절차

  1. OpenShift Container Platform 웹 콘솔의 관리자 관점에서 Operator → 설치된 Operator로 이동합니다.
  2. 보류 중인 업데이트가 있는 Operator에 업그레이드 사용 가능 상태가 표시됩니다. 업데이트할 Operator 이름을 클릭합니다.
  3. 서브스크립션 탭을 클릭합니다. 승인이 필요한 업데이트는 업그레이드 상태 옆에 표시됩니다. 예를 들어 1 승인 필요가 표시될 수 있습니다.
  4. 1 승인 필요를 클릭한 다음 설치 계획 프리뷰를 클릭합니다.
  5. 업데이트에 사용 가능한 것으로 나열된 리소스를 검토합니다. 문제가 없는 경우 승인을 클릭합니다.
  6. Operator → 설치된 Operator 페이지로 이동하여 업데이트 진행 상황을 모니터링합니다. 완료되면 상태가 성공최신으로 변경됩니다.

5.4.3. Compliance Operator 관리

이 섹션에서는 업데이트된 버전의 규정 준수 콘텐츠를 사용하는 방법과 사용자 정의 ProfileBundle 오브젝트를 만드는 방법을 포함하여 보안 콘텐츠의 라이프사이클에 대해 설명합니다.

5.4.3.1. ProfileBundle CR의 예

ProfileBundle 오브젝트에는 contentImage 가 포함된 컨테이너 이미지의 URL과 규정 준수 콘텐츠가 포함된 파일의 URL이 필요합니다. contentFile 매개변수는 파일 시스템의 루트와 상대적입니다. 다음 예와 같이 내장된 rhcos4 ProfileBundle 오브젝트를 정의할 수 있습니다.

apiVersion: compliance.openshift.io/v1alpha1
kind: ProfileBundle
metadata:
  creationTimestamp: "2022-10-19T12:06:30Z"
  finalizers:
  - profilebundle.finalizers.compliance.openshift.io
  generation: 1
  name: rhcos4
  namespace: openshift-compliance
  resourceVersion: "46741"
  uid: 22350850-af4a-4f5c-9a42-5e7b68b82d7d
spec:
  contentFile: ssg-rhcos4-ds.xml 1
  contentImage: registry.redhat.io/compliance/openshift-compliance-content-rhel8@sha256:900e... 2
status:
  conditions:
  - lastTransitionTime: "2022-10-19T12:07:51Z"
    message: Profile bundle successfully parsed
    reason: Valid
    status: "True"
    type: Ready
  dataStreamStatus: VALID
1
규정 준수 콘텐츠가 포함된 파일의 위치입니다.
2
콘텐츠 이미지 위치입니다.
중요

콘텐츠 이미지에 사용되는 기본 이미지에는 coreutils가 포함되어야 합니다.

5.4.3.2. 보안 콘텐츠 업데이트

보안 콘텐츠는 ProfileBundle 오브젝트가 참조하는 컨테이너 이미지로 포함됩니다. ProfileBundles 및 규칙 또는 프로필과 같은 번들에서 구문 분석한 사용자 정의 리소스에 대한 업데이트를 정확하게 추적하려면 태그 대신 다이제스트를 사용하여 규정 준수 콘텐츠가 있는 컨테이너 이미지를 확인하십시오.

$ oc -n openshift-compliance get profilebundles rhcos4 -oyaml

출력 예

apiVersion: compliance.openshift.io/v1alpha1
kind: ProfileBundle
metadata:
  creationTimestamp: "2022-10-19T12:06:30Z"
  finalizers:
  - profilebundle.finalizers.compliance.openshift.io
  generation: 1
  name: rhcos4
  namespace: openshift-compliance
  resourceVersion: "46741"
  uid: 22350850-af4a-4f5c-9a42-5e7b68b82d7d
spec:
  contentFile: ssg-rhcos4-ds.xml
  contentImage: registry.redhat.io/compliance/openshift-compliance-content-rhel8@sha256:900e... 1
status:
  conditions:
  - lastTransitionTime: "2022-10-19T12:07:51Z"
    message: Profile bundle successfully parsed
    reason: Valid
    status: "True"
    type: Ready
  dataStreamStatus: VALID

1
보안 컨테이너 이미지입니다.

ProfileBundle은 배포를 통해 지원됩니다. Compliance Operator에서 컨테이너 이미지 다이제스트가 변경되었음을 감지하면 배포가 업데이트되어 변경 사항을 반영하고 콘텐츠를 다시 구문 분석합니다. 태그 대신 다이제스트를 사용하면 안정적이고 예측 가능한 프로필 세트를 사용할 수 있습니다.

5.4.3.3. 추가 리소스

5.4.4. Compliance Operator 설치 제거

OpenShift Container Platform 웹 콘솔 또는 CLI를 사용하여 클러스터에서 OpenShift Compliance Operator를 제거할 수 있습니다.

5.4.4.1. 웹 콘솔을 사용하여 OpenShift Container Platform에서 OpenShift Compliance Operator 설치 제거

Compliance Operator를 제거하려면 먼저 네임스페이스에서 오브젝트를 삭제해야 합니다. 오브젝트가 제거되면 openshift-compliance 프로젝트를 삭제하여 Operator 및 해당 네임스페이스를 제거할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • OpenShift Compliance Operator가 설치되어 있어야 합니다.

프로세스

OpenShift Container Platform 웹 콘솔을 사용하여 Compliance Operator를 제거하려면 다음을 수행합니다.

  1. Operator설치된 OperatorCompliance Operator 페이지로 이동합니다.

    1. 모든 인스턴스를 클릭합니다.
    2. 모든 네임스페이스 에서 옵션 메뉴 kebab 를 클릭하고 all ScanSettingBinding, ComplainceSuite, ComplianceScan 및 ProfileBundle 오브젝트를 삭제합니다.
  2. 관리Operator설치된 Operator 페이지로 전환합니다.
  3. Compliance Operator 항목에서 옵션 메뉴 kebab 를 클릭하고 Operator 설치 제거를 선택합니다.
  4. 프로젝트 페이지로 전환합니다.
  5. 'compliance'를 검색합니다.
  6. openshift-compliance 프로젝트 옆에 있는 옵션 메뉴 kebab 를 클릭하고 프로젝트 삭제 를 선택합니다.

    1. 대화 상자에 openshift-compliance를 입력하여 삭제를 확인하고 삭제를 클릭합니다.

5.4.4.2. CLI를 사용하여 OpenShift Container Platform에서 OpenShift Compliance Operator 설치 제거

Compliance Operator를 제거하려면 먼저 네임스페이스에서 오브젝트를 삭제해야 합니다. 오브젝트가 제거되면 openshift-compliance 프로젝트를 삭제하여 Operator 및 해당 네임스페이스를 제거할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • OpenShift Compliance Operator가 설치되어 있어야 합니다.

프로세스

  1. 네임스페이스의 모든 오브젝트를 삭제합니다.

    1. ScanSettingBinding 오브젝트를 삭제합니다.

      $ oc delete ssb --all -n openshift-compliance
    2. ScanSetting 오브젝트를 삭제합니다.

      $ oc delete ss --all -n openshift-compliance
    3. ComplianceSuite 오브젝트를 삭제합니다.

      $ oc delete suite --all -n openshift-compliance
    4. ComplianceScan 오브젝트를 삭제합니다.

      $ oc delete scan --all -n openshift-compliance
    5. ProfileBundle 오브젝트를 삭제합니다.

      $ oc delete profilebundle.compliance --all -n openshift-compliance
  2. Subscription 오브젝트를 삭제합니다.

    $ oc delete sub --all -n openshift-compliance
  3. CSV 오브젝트를 삭제합니다.

    $ oc delete csv --all -n openshift-compliance
  4. 프로젝트를 삭제합니다.

    $ oc delete project openshift-compliance

    출력 예

    project.project.openshift.io "openshift-compliance" deleted

검증

  1. 네임스페이스가 삭제되었는지 확인합니다.

    $ oc get project/openshift-compliance

    출력 예

    Error from server (NotFound): namespaces "openshift-compliance" not found