5.11. 고급 Compliance Operator 작업 수행


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

5.11.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.11.2. ScanSetting 검사에 대해 PriorityClass 설정

대규모 환경에서는 기본 PriorityClass 오브젝트가 너무 작아 Pod가 제 시간에 검사를 실행할 수 있도록 할 수 있습니다. 규정 준수를 유지하거나 자동화된 스캔을 보장해야 하는 클러스터의 경우 PriorityClass 변수를 설정하여 리소스 제약 상황에서 Compliance Operator가 항상 우선순위가 지정되도록 하는 것이 좋습니다.

프로세스

  • PriorityClass 변수를 설정합니다.

    apiVersion: compliance.openshift.io/v1alpha1
    strictNodeScan: true
    metadata:
      name: default
      namespace: openshift-compliance
    priorityClass: compliance-high-priority 1
    kind: ScanSetting
    showNotApplicable: false
    rawResultStorage:
      nodeSelector:
        node-role.kubernetes.io/master: ''
      pvAccessModes:
        - ReadWriteOnce
      rotation: 3
      size: 1Gi
      tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
        - effect: NoExecute
          key: node.kubernetes.io/not-ready
          operator: Exists
          tolerationSeconds: 300
        - effect: NoExecute
          key: node.kubernetes.io/unreachable
          operator: Exists
          tolerationSeconds: 300
        - effect: NoSchedule
          key: node.kubernetes.io/memory-pressure
          operator: Exists
    schedule: 0 1 * * *
    roles:
      - master
      - worker
    scanTolerations:
      - operator: Exists
    1
    ScanSetting 에서 참조하는 PriorityClass 를 찾을 수 없는 경우 Operator는 PriorityClass 를 비워 두고 경고를 발행하며 PriorityClass 없이 스케줄링 검사를 계속합니다.

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

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

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

프로세스

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

    $ oc -n openshift-compliance \
    create configmap nist-moderate-modified \
    --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: nist-moderate-modified
      nodeSelector:
        node-role.kubernetes.io/worker: ""

5.11.4. 재검사 수행

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

$ oc -n openshift-compliance \
annotate compliancescans/rhcos4-e8-worker 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.11.5. 결과에 대한 사용자 정의 스토리지 크기 설정

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

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

5.11.5.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.11.6. 제품군 검사에서 생성된 수정 사항 적용

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

프로세스

  • 다음을 실행하여 compliance.openshift.io/apply-remediations 주석을 적용합니다.
$ oc -n openshift-compliance \
annotate compliancesuites/workers-compliancesuite compliance.openshift.io/apply-remediations=

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

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

프로세스

  • compliance.openshift.io/remove-outdated 주석을 적용합니다.
$ oc -n openshift-compliance \
annotate compliancesuites/workers-compliancesuite compliance.openshift.io/remove-outdated=

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

5.11.8. Compliance Operator에 대한 사용자 정의 SCC 생성

일부 환경에서는 Compliance Operator api-resource-collector 에서 올바른 권한을 사용할 수 있도록 사용자 정의 SCC(보안 컨텍스트 제약 조건) 파일을 생성해야 합니다.

사전 요구 사항

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

프로세스

  1. restricted-adjusted-compliance.yaml 이라는 YAML 파일에 SCC를 정의합니다.

    SecurityContextConstraints 오브젝트 정의

      allowHostDirVolumePlugin: false
      allowHostIPC: false
      allowHostNetwork: false
      allowHostPID: false
      allowHostPorts: false
      allowPrivilegeEscalation: true
      allowPrivilegedContainer: false
      allowedCapabilities: null
      apiVersion: security.openshift.io/v1
      defaultAddCapabilities: null
      fsGroup:
        type: MustRunAs
      kind: SecurityContextConstraints
      metadata:
        name: restricted-adjusted-compliance
      priority: 30 1
      readOnlyRootFilesystem: false
      requiredDropCapabilities:
      - KILL
      - SETUID
      - SETGID
      - MKNOD
      runAsUser:
        type: MustRunAsRange
      seLinuxContext:
        type: MustRunAs
      supplementalGroups:
        type: RunAsAny
      users:
      - system:serviceaccount:openshift-compliance:api-resource-collector 2
      volumes:
      - configMap
      - downwardAPI
      - emptyDir
      - persistentVolumeClaim
      - projected
      - secret

    1
    이 SCC의 우선 순위는 system:authenticated 그룹에 적용되는 다른 SCC보다 커야 합니다.
    2
    Compliance Operator Scanner Pod에서 사용하는 서비스 계정
  2. SCC를 생성합니다.

    $ oc create -n openshift-compliance  -f restricted-adjusted-compliance.yaml

    출력 예

    securitycontextconstraints.security.openshift.io/restricted-adjusted-compliance created

검증

  1. SCC가 생성되었는지 확인합니다.

    $ oc get -n openshift-compliance scc restricted-adjusted-compliance

    출력 예

    NAME                             PRIV    CAPS         SELINUX     RUNASUSER        FSGROUP     SUPGROUP   PRIORITY   READONLYROOTFS   VOLUMES
    restricted-adjusted-compliance   false   <no value>   MustRunAs   MustRunAsRange   MustRunAs   RunAsAny   30         false            ["configMap","downwardAPI","emptyDir","persistentVolumeClaim","projected","secret"]

5.11.9. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.