5.10. 고급 Compliance Operator 작업 수행

Compliance Operator에는 디버깅 또는 기존 툴과의 통합에 필요한 고급 사용자용 옵션이 포함되어 있습니다.

5.10.1. ComplianceSuite 및 ComplianceScan 오브젝트 직접 사용

사용자가 ScanSettingScanSettingBinding 오브젝트를 활용하여 모음과 검사를 정의하는 것이 바람직하지만 ComplianceSuite 오브젝트를 직접 정의하는 유효한 사용 사례가 있습니다.

  • 검사할 단일 규칙만 지정합니다. 그러지 않으면 디버그 모드가 매우 상세하게 표시되는 경향이 있으므로 이 방법은 OpenSCAP 스캐너의 상세 수준을 높이는 debug: true 특성과 함께 디버깅하는 데 유용할 수 있습니다. 테스트를 하나의 규칙으로 제한하면 디버그 정보의 양을 줄이는 데 도움이 됩니다.
  • 사용자 정의 nodeSelector를 제공합니다. 수정을 적용하려면 nodeSelector가 풀과 일치해야 합니다.
  • 맞춤 파일을 사용하여 맞춤형 구성 맵을 검사합니다.
  • 번들의 프로파일을 구문 분석하는 오버헤드가 필요하지 않은 경우의 테스트 또는 개발에 해당합니다.

다음 예제에서는 단일 규칙으로만 작업자 머신을 검사하는 ComplianceSuite를 보여줍니다.

apiVersion: compliance.openshift.io/v1alpha1
kind: ComplianceSuite
metadata:
  name: workers-compliancesuite
spec:
  scans:
    - name: workers-scan
      profile: xccdf_org.ssgproject.content_profile_moderate
      content: ssg-rhcos4-ds.xml
      contentImage: quay.io/complianceascode/ocp4:latest
      debug: true
      rule: xccdf_org.ssgproject.content_rule_no_direct_root_logins
      nodeSelector:
      node-role.kubernetes.io/worker: ""

위에서 언급한 ComplianceSuite 오브젝트 및 ComplianceScan 오브젝트는 여러 특성을 OpenSCAP에서 예상하는 형식으로 지정합니다.

프로필, 콘텐츠 또는 규칙 값을 찾으려면 ScanSettingScanSettingBinding에서 유사한 모음을 생성하여 시작하거나 규칙 또는 프로필과 같이 ProfileBundle 오브젝트에서 구문 분석한 오브젝트를 검사하면 됩니다. 이러한 오브젝트에는 ComplianceSuite에서 참조하는 데 사용할 수 있는 xccdf_org 식별자가 포함되어 있습니다.

5.10.2. 원시 맞춤형 프로필 사용

TailoredProfile CR에서는 가장 일반적인 맞춤 작업을 수행할 수 있지만 XCCDF 표준을 사용하면 OpenSCAP 프로필 맞춤 시 유연성이 훨씬 더 향상됩니다. 또한 조직에서 이전에 OpenScap을 사용한 적이 있는 경우 기존 XCCDF 맞춤 파일이 있을 수 있으며 이 파일을 다시 사용할 수 있습니다.

ComplianceSuite 오브젝트에는 사용자 정의 맞춤 파일을 가리킬 수 있는 선택적 TailoringConfigMap 특성이 포함되어 있습니다. TailoringConfigMap 특성 값은 구성 맵의 이름으로, 이 맵에는 tailoring.xml이라는 키가 포함되어야 하며 이 키의 값은 맞춤 콘텐츠입니다.

프로세스

  1. 파일에서 ConfigMap 오브젝트를 만듭니다.

    $ oc create configmap <scan_name> --from-file=tailoring.xml=/path/to/the/tailoringFile.xml
  2. 모음에 속하는 검사의 맞춤 파일을 참조합니다.

    apiVersion: compliance.openshift.io/v1alpha1
    kind: ComplianceSuite
    metadata:
      name: workers-compliancesuite
    spec:
      debug: true
      scans:
        - name: workers-scan
          profile: xccdf_org.ssgproject.content_profile_moderate
          content: ssg-rhcos4-ds.xml
          contentImage: quay.io/complianceascode/ocp4:latest
          debug: true
      tailoringConfigMap:
          name: <scan_name>
      nodeSelector:
        node-role.kubernetes.io/worker: ""

5.10.3. 재검사 수행

일반적으로 매주 월요일 또는 매일 등 정의된 일정에 따라 검사를 다시 실행하려고 할 것입니다. 노드 문제를 해결한 후 다시 한 번 검사를 실행하는 것도 유용할 수 있습니다. 단일 검사를 수행하려면 compliance.openshift.io/rescan= 옵션을 사용하여 검사에 주석을 답니다.

$ oc annotate compliancescans/<scan_name> compliance.openshift.io/rescan=

재검사는 rhcos-moderate 프로파일에 대해 4개의 추가 mc 를 생성합니다.

$ oc get mc

출력 예

75-worker-scan-chronyd-or-ntpd-specify-remote-server
75-worker-scan-configure-usbguard-auditbackend
75-worker-scan-service-usbguard-enabled
75-worker-scan-usbguard-allow-hid-and-hub

중요

검사 설정 default-auto-apply 레이블이 적용되면 수정 사항이 자동으로 적용되고 오래된 수정 사항이 자동으로 업데이트됩니다. 종속 항목 또는 오래된 수정 사항으로 인해 적용되지 않은 업데이트 적용이 있는 경우 다시 검사하면 업데이트가 적용되고 재부팅이 트리거될 수 있습니다. MachineConfig 오브젝트를 사용하는 업데이트 적용만 재부팅을 트리거합니다. 적용할 업데이트 또는 종속 항목이 없는 경우 재부팅이 수행되지 않습니다.

5.10.4. 결과에 대한 사용자 정의 스토리지 크기 설정

ComplianceCheckResult와 같은 사용자 정의 리소스는 검사한 모든 노드에서 집계한 한 번의 점검 결과를 나타내지만 스캐너에서 생성한 원시 결과를 검토하는 것이 유용할 수 있습니다. 원시 결과는 ARF 형식으로 생성되며 크기가 클 수 있습니다(노드당 수십 메가바이트). 따라서 etcd 키-값 저장소에서 지원하는 Kubernetes 리소스에 저장하는 것은 비현실적입니다. 대신 검사할 때마다 기본 크기가 1GB인 영구 볼륨(PV)이 생성됩니다. 환경에 따라 적절하게 PV 크기를 늘릴 수 있습니다. 크기를 늘리려면 ScanSettingComplianceScan 리소스 모두에 노출되는 rawResultStorage.size 특성을 사용하면 됩니다.

관련 매개변수는 rawResultStorage.rotation으로, 이전 검사가 되풀이되기 전에 PV에 유지되는 검사 수를 조절합니다. 기본값은 3이며 되풀이 정책을 0으로 설정하면 되풀이가 비활성화됩니다. 기본 되풀이 정책과 원시 ARF 검사 보고서당 100MB의 추정치가 지정되면 환경에 적합한 PV 크기를 계산할 수 있습니다.

5.10.4.1. 사용자 정의 결과 스토리지 값 사용

OpenShift Container Platform은 다양한 퍼블릭 클라우드 또는 베어 메탈에 배포할 수 있으므로 Compliance Operator에서는 사용 가능한 스토리지 구성을 결정할 수 없습니다. 기본적으로 Compliance Operator는 클러스터의 기본 스토리지 클래스를 사용하여 결과를 저장하는 PV를 생성하지만 사용자 정의 스토리지 클래스는 rawResultStorage.StorageClassName 특성을 사용하여 구성할 수 있습니다.

중요

클러스터에서 기본 스토리지 클래스를 지정하지 않는 경우 이 특성을 설정해야 합니다.

표준 스토리지 클래스를 사용하고 마지막 결과 10개를 유지하는 10GB 크기의 영구 볼륨을 만들도록 ScanSetting 사용자 정의 리소스를 구성합니다.

예제 ScanSetting CR

apiVersion: compliance.openshift.io/v1alpha1
kind: ScanSetting
metadata:
  name: default
  namespace: openshift-compliance
rawResultStorage:
  storageClassName: standard
  rotation: 10
  size: 10Gi
roles:
- worker
- master
scanTolerations:
- effect: NoSchedule
  key: node-role.kubernetes.io/master
  operator: Exists
schedule: '0 1 * * *'

5.10.5. 제품군 검사에서 생성된 수정 사항 적용

ComplianceSuite 오브젝트에서 autoApplyRemediations 부울 매개 변수를 사용할 수 있지만, 대신 compliance.openshift.io/apply-remediations로 오브젝트에 주석을 달 수 있습니다. 이를 통해 Operator는 생성된 모든 수정 사항을 적용할 수 있습니다.

프로세스

  • 다음을 실행하여 compliance.openshift.io/apply-remediations 주석을 적용합니다.
$ oc annotate compliancesuites/<suite-_name> compliance.openshift.io/apply-remediations=

5.10.6. 수정 사항 자동 업데이트

경우에 따라 최신 콘텐츠가 있는 검사에서 OUTDATED로 업데이트 적용을 표시할 수 있습니다. 관리자는 compliance.openshift.io/remove-outdated 주석을 적용하여 새 업데이트를 적용하고 오래된 항목을 제거할 수 있습니다.

프로세스

  • compliance.openshift.io/remove-outdated 주석을 적용합니다.
$ oc annotate compliancesuites/<suite_name> compliance.openshift.io/remove-outdated=

또는 ScanSetting 또는 ComplianceSuite 오브젝트에 autoUpdateRemediations 플래그를 설정하여 수정 사항을 자동으로 업데이트합니다.