1.2. Compliance Operator 스캔

Compliance Operator를 사용하여 규정 준수 검사를 실행하도록 ScanSettingScanSettingBinding API를 사용하는 것이 좋습니다. 이러한 API 오브젝트에 대한 자세한 내용은 다음을 실행합니다.

$ oc explain scansettings

또는

$ oc explain scansettingbindings

1.2.1. 규정 준수 검사 실행

CIS(Center for Internet Security) 프로필을 사용하여 검사를 실행할 수 있습니다. 편리성을 위해 Compliance Operator는 시작 시 적절한 기본값을 사용하여 ScanSetting 오브젝트를 생성합니다. 이 ScanSetting 오브젝트의 이름은 default 입니다.

프로세스

  1. 다음을 실행하여 ScanSetting 오브젝트를 검사합니다.

    $ oc describe scansettings default -n openshift-compliance

    출력 예

    apiVersion: compliance.openshift.io/v1alpha1
    kind: ScanSetting
    metadata:
      name: default
      namespace: openshift-compliance
    rawResultStorage:
      pvAccessModes:
      - ReadWriteOnce 1
      rotation: 3 2
      size: 1Gi 3
    roles:
    - worker 4
    - master 5
    scanTolerations: 6
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    schedule: 0 1 * * * 7

    1
    Compliance Operator는 검사 결과가 포함된 PV(영구 볼륨)를 생성합니다. 기본적으로 PV는 Compliance Operator에서 클러스터에 구성된 스토리지 클래스에 대한 가정을 할 수 없기 때문에 액세스 모드 ReadWriteOnce 를 사용합니다. 대부분의 클러스터에서 ReadWriteOnce 액세스 모드를 사용할 수 있습니다. 검사 결과를 가져오려면 볼륨을 바인딩하는 도우미 Pod를 사용하여 이를 수행할 수 있습니다. ReadWriteOnce 액세스 모드를 사용하는 볼륨은 하나의 Pod에서만 마운트할 수 있으므로 도우미 Pod를 삭제하는 것이 중요합니다. 그러지 않으면 Compliance Operator에서 후속 검사에 볼륨을 재사용할 수 없습니다.
    2
    Compliance Operator는 볼륨에서 후속 검사의 세 가지 결과를 유지합니다. 이전 검사는 순환됩니다.
    3
    Compliance Operator는 검사 결과에 대해 1GB의 스토리지를 할당합니다.
    4 5
    검사 설정에서 클러스터 노드를 검사하는 프로필을 사용하는 경우 이러한 노드 역할을 스캔합니다.
    6
    기본 검사 설정 오브젝트도 마스터 노드도 검사합니다.
    7
    기본 검사 설정 오브젝트는 매일 01:00 에 검사를 실행합니다.

    기본 검사 설정 대신 다음 설정이 있는 default-auto-apply 를 사용할 수 있습니다.

    apiVersion: compliance.openshift.io/v1alpha1
    kind: ScanSetting
    metadata:
      name: default-auto-apply
      namespace: openshift-compliance
    autoUpdateRemediations: true 1
    autoApplyRemediations: true 2
    rawResultStorage:
      pvAccessModes:
        - ReadWriteOnce
      rotation: 3
      size: 1Gi
    schedule: 0 1 * * *
    roles:
      - worker
      - master
    scanTolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists
    1 2
    autoUpdateRemediations autoApplyRemediations 플래그를 true 로 설정하면 추가 단계를 제외하고 자동 조정 오브젝트를 쉽게 생성할 수 있습니다.
  2. 기본 ScanSetting 오브젝트에 바인딩하는 ScanSettingBinding 오브젝트를 생성하고 cis 및 cis -node 프로필을 사용하여 클러스터를 검사합니다. 예를 들면 다음과 같습니다.

    apiVersion: compliance.openshift.io/v1alpha1
    kind: ScanSettingBinding
    metadata:
      name: cis-compliance
    profiles:
      - name: ocp4-cis-node
        kind: Profile
        apiGroup: compliance.openshift.io/v1alpha1
      - name: ocp4-cis
        kind: Profile
        apiGroup: compliance.openshift.io/v1alpha1
    settingsRef:
      name: default
      kind: ScanSetting
      apiGroup: compliance.openshift.io/v1alpha1
  3. 다음을 실행하여 ScanSettingBinding 오브젝트를 생성합니다.

    $ oc create -f <file-name>.yaml -n openshift-compliance

    프로세스의 이 시점에서 ScanSettingBinding 오브젝트가 조정되고 바인딩Bound 설정을 기반으로 합니다. Compliance Operator는 ComplianceSuite 오브젝트 및 관련 ComplianceScan 오브젝트를 생성합니다.

  4. 다음을 실행하여 컴플라이언스 검사 진행 상황을 따르십시오.

    $ oc get compliancescan -w -n openshift-compliance

    검사는 스캔 단계를 통해 진행되며 결국 완료되면 DONE 단계에 도달합니다. 대부분의 경우 검사 결과는 NON-COMPLIANT입니다. 검사 결과를 검토하고 수정 적용을 시작하여 클러스터를 준수하도록 할 수 있습니다. 자세한 내용은 Managing Compliance Operator 수정 을 참조하십시오.