5.14. oc-compliance 플러그인 사용
Compliance Operator는 클러스터에 대한 많은 검사 및 수정을 자동화하지만 클러스터를 규정 준수 상태로 전환하려면 관리자가 Compliance Operator API 및 기타 구성 요소와 상호 작용해야 하는 경우가 많습니다. oc-compliance
플러그인을 사용하면 프로세스를 더 쉽게 수행할 수 있습니다.
5.14.1. oc-compliance 플러그인 설치
프로세스
oc-compliance
이미지를 추출하여oc-compliance
바이너리를 가져옵니다.$ podman run --rm -v ~/.local/bin:/mnt/out:Z registry.redhat.io/compliance/oc-compliance-rhel8:stable /bin/cp /usr/bin/oc-compliance /mnt/out/
출력 예
W0611 20:35:46.486903 11354 manifest.go:440] Chose linux/amd64 manifest from the manifest list.
이제
oc-compliance
를 실행할 수 있습니다.
5.14.2. 원시 결과 가져오기
규정 준수 검사가 완료되면 결과 ComplianceCheckResult
CR(사용자 정의 리소스)에 개별 검사 결과가 나열됩니다. 그러나 관리자 또는 감사자는 검사에 대한 전체 세부 정보가 필요할 수 있습니다. OpenSCAP 툴은 자세한 결과를 사용하여 AMQP(Advanced Recording Format) 포맷 파일을 생성합니다. 이 ARF 파일은 구성 맵 또는 기타 표준 Kubernetes 리소스에 저장하기에 너무 크므로 이를 포함할 영구 볼륨(PV)이 생성됩니다.
프로세스
Compliance Operator를 사용하여 PV에서 결과를 가져오는 작업은 4단계 프로세스입니다. 그러나
oc-compliance
플러그인을 사용하면 단일 명령을 사용할 수 있습니다.$ oc compliance fetch-raw <object-type> <object-name> -o <output-path>
-
<object-type>
은 검사가 시작된 오브젝트에 따라scansettingbinding
,compliancescan
또는compliancesuite
일 수 있습니다. <object-name>
은 ARF 파일을 수집할 바인딩, 제품군 또는 검사 오브젝트의 이름이고<output-path>
는 결과를 배치할 로컬 디렉터리입니다.예를 들면 다음과 같습니다.
$ oc compliance fetch-raw scansettingbindings my-binding -o /tmp/
출력 예
Fetching results for my-binding scans: ocp4-cis, ocp4-cis-node-worker, ocp4-cis-node-master Fetching raw compliance results for scan 'ocp4-cis'....... The raw compliance results are available in the following directory: /tmp/ocp4-cis Fetching raw compliance results for scan 'ocp4-cis-node-worker'........... The raw compliance results are available in the following directory: /tmp/ocp4-cis-node-worker Fetching raw compliance results for scan 'ocp4-cis-node-master'...... The raw compliance results are available in the following directory: /tmp/ocp4-cis-node-master
디렉터리에서 파일 목록을 확인합니다.
$ ls /tmp/ocp4-cis-node-master/
출력 예
ocp4-cis-node-master-ip-10-0-128-89.ec2.internal-pod.xml.bzip2 ocp4-cis-node-master-ip-10-0-150-5.ec2.internal-pod.xml.bzip2 ocp4-cis-node-master-ip-10-0-163-32.ec2.internal-pod.xml.bzip2
결과를 추출합니다.
$ bunzip2 -c resultsdir/worker-scan/worker-scan-stage-459-tqkg7-compute-0-pod.xml.bzip2 > resultsdir/worker-scan/worker-scan-ip-10-0-170-231.us-east-2.compute.internal-pod.xml
결과를 확인합니다.
$ ls resultsdir/worker-scan/
출력 예
worker-scan-ip-10-0-170-231.us-east-2.compute.internal-pod.xml worker-scan-stage-459-tqkg7-compute-0-pod.xml.bzip2 worker-scan-stage-459-tqkg7-compute-1-pod.xml.bzip2
5.14.3. 검사 재실행
예약된 작업으로 스캔을 실행할 수 있지만 수정을 적용한 후 또는 클러스터에 대한 기타 변경이 이루어진 경우 필요에 따라 검사를 다시 실행해야 합니다.
프로세스
Compliance Operator를 사용하여 검사를 다시 실행하려면 검사 오브젝트에서 주석을 사용해야 합니다. 그러나
oc-compliance
플러그인을 사용하면 단일 명령으로 검사를 재실행할 수 있습니다. 다음 명령을 입력하여my-binding
이라는ScanSettingBinding
오브젝트에 대한 검사를 재실행합니다.$ oc compliance rerun-now scansettingbindings my-binding
출력 예
Rerunning scans from 'my-binding': ocp4-cis Re-running scan 'openshift-compliance/ocp4-cis'
5.14.4. ScanSettingBinding 사용자 정의 리소스 사용
Compliance Operator에서 제공하는 ScanSetting
및 ScanSettingBinding
CR(사용자 정의 리소스)을 사용하는 경우 schedule
, machine roles
, tolerations
등과 같은 공통 검사 옵션 세트를 사용하는 동안 여러 프로필 검사를 실행할 수 있습니다. 여러 ComplianceSuite
또는 ComplianceScan
오브젝트로 작업하는 것보다 쉽지만 새로운 사용자를 혼란스럽게 할 수 있습니다.
oc compliance bind
하위 명령은 ScanSettingBinding
CR을 생성하는 데 도움이 됩니다.
프로세스
다음을 실행합니다.
$ oc compliance bind [--dry-run] -N <binding name> [-S <scansetting name>] <objtype/objname> [..<objtype/objname>]
-
-S
플래그를 생략하면 Compliance Operator에서 제공하는default
검사 설정이 사용됩니다. -
오브젝트 유형은 Kubernetes 오브젝트 유형으로
profile
또는tailoredprofile
일 수 있습니다. 두 개 이상의 오브젝트를 제공할 수 있습니다. -
오브젝트 이름은 Kubernetes 리소스의 이름입니다 (예:
.metadata.name
). --dry-run
옵션을 추가하여 생성된 오브젝트의 YAML 파일을 표시합니다.예를 들어 다음 프로필 및 검사 설정이 제공됩니다.
$ oc get profile.compliance -n openshift-compliance
출력 예
NAME AGE ocp4-cis 9m54s ocp4-cis-node 9m54s ocp4-e8 9m54s ocp4-moderate 9m54s ocp4-ncp 9m54s rhcos4-e8 9m54s rhcos4-moderate 9m54s rhcos4-ncp 9m54s rhcos4-ospp 9m54s rhcos4-stig 9m54s
$ oc get scansettings -n openshift-compliance
출력 예
NAME AGE default 10m default-auto-apply 10m
-
default
설정을ocp4-cis
및ocp4-cis-node
프로필에 적용하려면 다음을 실행합니다.$ oc compliance bind -N my-binding profile/ocp4-cis profile/ocp4-cis-node
출력 예
Creating ScanSettingBinding my-binding
ScanSettingBinding
CR이 생성되면 바인딩된 프로파일은 관련 설정으로 두 프로필의 검사를 시작합니다. 전반적으로 이것은 Compliance Operator로 스캔을 시작하는 가장 빠른 방법입니다.
5.14.5. 인쇄 제어
컴플라이언스 표준은 일반적으로 다음과 같이 계층 구조로 구성됩니다.
- 벤치마크는 특정 표준에 대한 제어 집합의 최상위 정의입니다. 예를 들어 FedRAMP Moderate 또는 Center for Internet Security (CIS) v.1.6.0입니다.
- 제어는 벤치마크를 준수하기 위해 충족되어야 하는 일련의 요구 사항을 설명합니다. 예: FedRAMP AC-01(액세스 제어 정책 및 절차)
- 규칙은 규정을 준수하는 시스템에 특정한 단일 검사이며 이러한 규칙 중 하나 이상이 제어에 매핑됩니다.
- Compliance Operator는 단일 벤치마크의 프로필로 규칙 그룹화를 처리합니다. 프로필의 규칙 집합이 충족되도록 제어하는 것을 결정하기 어려울 수 있습니다.
절차
oc compliance
control
하위 명령은 표준에 대한 보고서를 제공하고 지정된 프로필이 충족되도록 제어합니다.$ oc compliance controls profile ocp4-cis-node
출력 예
+-----------+----------+ | FRAMEWORK | CONTROLS | +-----------+----------+ | CIS-OCP | 1.1.1 | + +----------+ | | 1.1.10 | + +----------+ | | 1.1.11 | + +----------+ ...
5.14.6. 컴플라이언스 수정 세부 정보 가져오기
Compliance Operator는 클러스터를 준수하는 데 필요한 변경 사항을 자동화하는 데 사용되는 수정 오브젝트를 제공합니다. fetch-fixes
하위 명령은 어떤 구성 수정이 사용되는지 정확하게 이해하는 데 도움이 될 수 있습니다. fetch-fixes
하위 명령을 사용하여 프로필, 규칙 또는 ComplianceRemediation
오브젝트에서 검사할 디렉터리로 수정 오브젝트를 추출합니다.
프로세스
프로필의 수정을 확인합니다.
$ oc compliance fetch-fixes profile ocp4-cis -o /tmp
출력 예
No fixes to persist for rule 'ocp4-api-server-api-priority-flowschema-catch-all' 1 No fixes to persist for rule 'ocp4-api-server-api-priority-gate-enabled' No fixes to persist for rule 'ocp4-api-server-audit-log-maxbackup' Persisted rule fix to /tmp/ocp4-api-server-audit-log-maxsize.yaml No fixes to persist for rule 'ocp4-api-server-audit-log-path' No fixes to persist for rule 'ocp4-api-server-auth-mode-no-aa' No fixes to persist for rule 'ocp4-api-server-auth-mode-node' No fixes to persist for rule 'ocp4-api-server-auth-mode-rbac' No fixes to persist for rule 'ocp4-api-server-basic-auth' No fixes to persist for rule 'ocp4-api-server-bind-address' No fixes to persist for rule 'ocp4-api-server-client-ca' Persisted rule fix to /tmp/ocp4-api-server-encryption-provider-cipher.yaml Persisted rule fix to /tmp/ocp4-api-server-encryption-provider-config.yaml
- 1
- 규칙을 자동으로 수정할 수 없거나 수정이 제공되지 않았기 때문에 프로필에 해당 수정 조치가 없는 규칙이 있을 때마다
No fixes to persist
경고가 예상됩니다.
YAML 파일의 샘플을 볼 수 있습니다.
head
명령은 처음 10행을 표시합니다.$ head /tmp/ocp4-api-server-audit-log-maxsize.yaml
출력 예
apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: maximumFileSizeMegabytes: 100
검사 후 생성된
ComplianceRemediation
오브젝트에서 수정을 확인합니다.$ oc get complianceremediations -n openshift-compliance
출력 예
NAME STATE ocp4-cis-api-server-encryption-provider-cipher NotApplied ocp4-cis-api-server-encryption-provider-config NotApplied
$ oc compliance fetch-fixes complianceremediations ocp4-cis-api-server-encryption-provider-cipher -o /tmp
출력 예
Persisted compliance remediation fix to /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
YAML 파일의 샘플을 볼 수 있습니다.
head
명령은 처음 10행을 표시합니다.$ head /tmp/ocp4-cis-api-server-encryption-provider-cipher.yaml
출력 예
apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: encryption: type: aescbc
수정을 직접 적용하기 전에 주의하십시오. 중간 프로파일의 usbguard 규칙과 같은 일부 수정 사항은 일괄적으로 적용되지 않을 수 있습니다. 이 경우 종속성을 해결하고 클러스터가 정상 상태로 유지되도록 Compliance Operator가 규칙을 적용하도록 허용합니다.
5.14.7. ComplianceCheckResult 오브젝트 세부 정보 보기
검사 실행이 완료되면 개별 검사 규칙에 대해 ComplianceCheckResult
오브젝트가 생성됩니다. view-result
하위 명령은 사용자가 읽을 수 있는 ComplianceCheckResult
오브젝트 세부 정보 출력을 제공합니다.
프로세스
다음을 실행합니다.
$ oc compliance view-result ocp4-cis-scheduler-no-bind-address