5.4. 규정 준수 운영자 개념
5.4.1. Compliance Operator 이해 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 관리자는 Compliance Operator를 통해 클러스터의 필수 규정 준수 상태를 설명하고 격차에 대한 개요와 문제를 해결하는 방법을 제공할 수 있습니다. Compliance Operator는 OpenShift Container Platform의 Kubernetes API 리소스와 클러스터를 실행하는 노드 모두의 규정 준수를 평가합니다. Compliance Operator는 NIST 인증 툴인 OpenSCAP을 사용하여 콘텐츠에서 제공하는 보안 정책을 검사하고 시행합니다.
Compliance Operator는 Red Hat Enterprise Linux CoreOS(RHCOS) 배포에만 사용할 수 있습니다.
5.4.1.1. Compliance Operator 프로필 링크 복사링크가 클립보드에 복사되었습니다!
Compliance Operator 설치의 일부로 다양한 프로필을 사용할 수 있습니다. oc get
명령을 사용하면 사용 가능한 프로필, 프로필 세부 정보 및 특정 규칙을 볼 수 있습니다.
사용 가능한 프로필 보기:
oc get profile.compliance -n openshift-compliance
$ oc get profile.compliance -n openshift-compliance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 프로필은 다양한 규정 준수 벤치마크를 나타냅니다. 각 프로필에는 적용되는 제품 이름이 프로필 이름에 접두사로 추가됩니다.
ocp4-e8은
OpenShift Container Platform 제품에 Essential 8 벤치마크를 적용하고,rhcos4-e8
은 Red Hat Enterprise Linux CoreOS(RHCOS) 제품에 Essential 8 벤치마크를 적용합니다.rhcos4-e8
프로필의 세부 정보를 보려면 다음 명령을 실행하세요.oc get -n openshift-compliance -oyaml profiles.compliance rhcos4-e8
$ oc get -n openshift-compliance -oyaml profiles.compliance rhcos4-e8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예 5.1. 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rhcos4-audit-rules-login-events
규칙의 세부 정보를 보려면 다음 명령을 실행하세요.oc get -n openshift-compliance -oyaml rules rhcos4-audit-rules-login-events
$ oc get -n openshift-compliance -oyaml rules rhcos4-audit-rules-login-events
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예 5.2. 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.1.1.1. 규정 준수 운영자 프로필 유형 링크 복사링크가 클립보드에 복사되었습니다!
규정 준수 운영자 규칙은 프로필로 구성됩니다. 프로필은 OpenShift Container Platform의 플랫폼이나 노드를 타겟으로 할 수 있으며, 일부 벤치마크에는 rhcos4
노드 프로필이 포함됩니다.
- 플랫폼
- 플랫폼 프로필은 OpenShift Container Platform 클러스터 구성 요소를 평가합니다. 예를 들어, 플랫폼 수준 규칙은 APIServer 구성에서 강력한 암호화를 사용하는지 확인할 수 있습니다.
- 노드
-
노드 프로필은 각 호스트의 OpenShift 또는 RHCOS 구성을 평가합니다. 두 가지 노드 프로필을 사용할 수 있습니다.
ocp4
노드 프로필과rhcos4
노드 프로필입니다.ocp4
노드 프로필은 각 호스트의 OpenShift 구성을 평가합니다. 예를 들어,kubeconfig
파일에 규정 준수 기준을 충족하는 데 필요한 올바른 권한이 있는지 확인할 수 있습니다.rhcos4
노드 프로필은 각 호스트의 Red Hat Enterprise Linux CoreOS(RHCOS) 구성을 평가합니다. 예를 들어, SSHD 서비스가 비밀번호 로그인을 비활성화하도록 구성되어 있는지 확인할 수 있습니다.
PCI-DSS와 같이 노드 및 플랫폼 프로필이 있는 벤치마크의 경우 OpenShift Container Platform 환경에서 두 프로필을 모두 실행해야 합니다.
FedRAMP High와 같이 ocp4
플랫폼, ocp4
노드 및 rhcos4
노드 프로필이 있는 벤치마크의 경우 OpenShift 컨테이너 플랫폼 환경에서 세 가지 프로필을 모두 실행해야 합니다.
많은 노드가 있는 클러스터에서는 ocp4
노드와 rhcos4
노드 스캔을 완료하는 데 시간이 오래 걸릴 수 있습니다.
5.4.2. 사용자 정의 리소스 정의 이해 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 컨테이너 플랫폼의 Compliance Operator는 규정 준수 검사를 수행하기 위한 여러 가지 사용자 정의 리소스 정의(CRD)를 제공합니다. 규정 준수 검사를 실행하려면 ComplianceAsCode 커뮤니티 프로젝트에서 파생된 사전 정의된 보안 정책을 활용합니다. 규정 준수 운영자는 이러한 보안 정책을 CRD로 변환합니다. 이를 사용하여 규정 준수 검사를 실행하고 발견된 문제에 대한 수정 사항을 얻을 수 있습니다.
5.4.2.1. CRD 워크플로 링크 복사링크가 클립보드에 복사되었습니다!
CRD는 규정 준수 검사를 완료하기 위한 다음과 같은 워크플로를 제공합니다.
- 규정 준수 스캔 요구 사항 정의
- 규정 준수 검사 설정 구성
- 규정 준수 스캔 설정을 사용하여 규정 준수 요구 사항 처리
- 규정 준수 스캔을 모니터링합니다.
- 규정 준수 검사 결과를 확인하세요
5.4.2.2. 규정 준수 스캔 요구 사항 정의 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Compliance Operator CRD에는 ProfileBundle
및 Profile
개체가 포함되어 있으며, 이를 통해 규정 준수 검사 요구 사항에 대한 규칙을 정의하고 설정할 수 있습니다. TailoredProfile
객체를 사용하여 기본 프로필을 사용자 정의할 수도 있습니다.
5.4.2.2.1. ProfileBundle 객체 링크 복사링크가 클립보드에 복사되었습니다!
Compliance Operator를 설치하면 즉시 실행 가능한 ProfileBundle
오브젝트가 포함됩니다. 규정 준수 연산자는 ProfileBundle
객체를 구문 분석하고 번들의 각 프로필에 대한 Profile
객체를 생성합니다. 또한 Profile
객체에서 사용되는 Rule
및 Variable
객체를 구문 분석합니다.
ProfileBundle
객체의 예
- 1
- Compliance Operator에서 콘텐츠 파일을 구문 분석할 수 있는지 여부를 나타냅니다.
contentFile이
실패하면 발생한 오류에 대한 세부 정보를 제공하는 errorMessage
속성이 나타납니다.
문제 해결
유효하지 않은 이미지에서 알려진 콘텐츠 이미지로 롤백하는 경우 ProfileBundle
개체가 응답을 멈추고 PENDING
상태가 표시됩니다. 해결 방법으로, 이전 이미지가 아닌 다른 이미지로 이동할 수 있습니다. 또는 ProfileBundle
객체를 삭제하고 다시 생성하여 작업 상태로 돌아갈 수 있습니다.
5.4.2.2.2. 프로필 객체 링크 복사링크가 클립보드에 복사되었습니다!
Profile
객체는 특정 규정 준수 기준에 대해 평가할 수 있는 규칙과 변수를 정의합니다. 여기에는 XCCDF 식별자와 노드
또는 플랫폼
유형에 대한 프로필 검사 등 OpenSCAP 프로필에 대한 구문 분석된 세부 정보가 포함되어 있습니다. Profile
오브젝트를 직접 사용하거나 Tailor Profile
오브젝트를 사용하여 추가로 사용자 지정할 수 있습니다.
Profile
객체는 단일 ProfileBundle
객체에서 파생되므로 수동으로 생성하거나 수정할 수 없습니다. 일반적으로 단일 ProfileBundle
객체에는 여러 개의 Profile
객체가 포함될 수 있습니다.
예제 Profile
객체
5.4.2.2.3. 규칙 객체 링크 복사링크가 클립보드에 복사되었습니다!
프로필을 형성하는 규칙
객체도 객체로 노출됩니다. 규칙
객체를 사용하여 규정 준수 검사 요구 사항을 정의하고 이를 수정하는 방법을 지정합니다.
예제 규칙
객체
Rule
객체는 연관된 ProfileBundle
객체를 쉽게 식별할 수 있도록 적절한 레이블을 얻습니다. ProfileBundle
은 또한 이 객체의 OwnerReferences
에 지정됩니다.
5.4.2.2.4. TailoredProfile 객체 링크 복사링크가 클립보드에 복사되었습니다!
TailoredProfile
객체를 사용하여 조직의 요구 사항에 따라 기본 Profile
객체를 수정합니다. 규칙을 활성화하거나 비활성화하고, 변수 값을 설정하고, 사용자 정의에 대한 정당성을 제공할 수 있습니다. 검증 후 TailoredProfile
개체는 ConfigMap을
생성하고, 이는 ComplianceScan
개체에서 참조할 수 있습니다.
ScanSettingBinding
개체에서 TailoredProfile
개체를 참조하여 해당 개체를 사용할 수 있습니다. ScanSettingBinding
에 대한 자세한 내용은 ScanSettingBinding 개체를 참조하세요.
TailoredProfile
오브젝트의 예
- 1
- 이는 선택 사항입니다.
TailoredProfile
이 빌드된Profile
오브젝트의 이름입니다. 값을 설정하지 않으면enableRules
목록에서 새 프로필이 생성됩니다. - 2
- 맞춤형 프로필의 XCCDF 이름을 지정합니다.
- 3
ComplianceScan
의tailoringConfigMap.name
속성 값으로 사용할 수 있는ConfigMap
이름을 지정합니다.- 4
READY
,PENDING
,FAILURE
와 같은 객체의 상태를 보여줍니다. 객체의 상태가ERROR
인 경우,status.errorMessage
속성은 실패 이유를 제공합니다.
TailoredProfile
객체를 사용하면 TailoredProfile
구조를 사용하여 새로운 Profile
객체를 만들 수 있습니다. 새 프로필을
만들려면 다음 구성 매개변수를 설정하세요.
- 적절한 제목
-
확장
값은 비어 있어야 합니다. TailoredProfile
객체에 대한 스캔 유형 주석:compliance.openshift.io/product-type: Platform/Node
compliance.openshift.io/product-type: Platform/Node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고제품 유형
주석을 설정하지 않은 경우 규정 준수 운영자는 기본적으로플랫폼
스캔 유형을 사용합니다.TailoredProfile
객체의 이름에-node
접미사를 추가하면노드
스캔 유형이 생성됩니다.
5.4.2.3. 규정 준수 검사 설정 구성 링크 복사링크가 클립보드에 복사되었습니다!
규정 준수 검사의 요구 사항을 정의한 후 검사 유형, 검사 발생 시기, 검사 위치를 지정하여 규정 준수 검사를 구성할 수 있습니다. 이를 위해 Compliance Operator는 ScanSetting
객체를 제공합니다.
5.4.2.3.1. ScanSetting 객체 링크 복사링크가 클립보드에 복사되었습니다!
ScanSetting
객체를 사용하여 스캔을 실행하기 위한 운영 정책을 정의하고 재사용합니다. 기본적으로 Compliance Operator는 다음과 같은 ScanSetting
객체를 생성합니다.
- Default - PV(영구 볼륨)를 사용하여 마스터 노드와 작업자 노드 모두에서 매일 검사를 실행하고 마지막 세 가지 결과를 유지합니다. 수정 사항이 자동으로 적용되거나 업데이트되지 않습니다.
-
default-auto-apply - PV(영구 볼륨)를 사용하여 컨트롤 플레인 및 작업자 노드에서 매일 1AM에서 검사를 실행하고 마지막 세 가지 결과를 유지합니다.
autoApplyRemediations
와autoUpdateRemediations가
모두 true로 설정되었습니다.
ScanSetting
객체 예제
- 1
- 자동 수정을 활성화하려면
true
로 설정합니다. 자동 수정을 비활성화하려면false
로 설정합니다. - 2
- 콘텐츠 업데이트에 대한 자동 수정을 활성화하려면
true
로 설정합니다. 콘텐츠 업데이트에 대한 자동 수정을 비활성화하려면false
로 설정합니다. - 3
- 원시 결과 형식으로 저장된 스캔의 수를 지정합니다. 기본값은
3
입니다. 이전 결과가 순환되면 관리자는 순환이 발생하기 전에 결과를 다른 곳에 저장해야 합니다. - 4
- 스캔의 원시 결과를 저장하기 위해 생성해야 하는 저장 크기를 지정합니다. 기본값은
1Gi
입니다 - 6
- 크론 형식으로 검사를 얼마나 자주 실행할지 지정합니다.참고
회전 정책을 비활성화하려면 값을
0
으로 설정합니다. - 5
Node
유형에 대한 검사를 예약하려면node-role.kubernetes.io
레이블 값을 지정합니다. 이 값은MachineConfigPool
의 이름과 일치해야 합니다.
5.4.2.4. 규정 준수 스캔 설정을 사용하여 규정 준수 스캔 요구 사항 처리 링크 복사링크가 클립보드에 복사되었습니다!
규정 준수 검사 요구 사항을 정의하고 검사를 실행하기 위한 설정을 구성하면 규정 준수 연산자는 ScanSettingBinding
개체를 사용하여 이를 처리합니다.
5.4.2.4.1. ScanSettingBinding 객체 링크 복사링크가 클립보드에 복사되었습니다!
ScanSettingBinding
객체를 사용하여 Profile
또는 TailoredProfile
객체를 참조하여 규정 준수 요구 사항을 지정합니다. 그런 다음 스캔에 대한 운영 제약 조건을 제공하는 ScanSetting
개체에 연결됩니다. 그런 다음 Compliance Operator는 ScanSetting
및 ScanSettingBinding
개체를 기반으로 ComplianceSuite
개체를 생성합니다.
예제 ScanSettingBinding
오브젝트
ScanSetting
및 ScanSettingBinding
객체를 생성하면 규정 준수 제품군이 생성됩니다. 규정 준수 제품군 목록을 얻으려면 다음 명령을 실행하세요.
oc get compliancesuites
$ oc get compliancesuites
ScanSettingBinding을
삭제하면 규정 준수 제품군도 삭제됩니다.
5.4.2.5. 규정 준수 검사 추적 링크 복사링크가 클립보드에 복사되었습니다!
규정 준수 제품군을 만든 후에는 ComplianceSuite
객체를 사용하여 배포된 스캔의 상태를 모니터링할 수 있습니다.
5.4.2.5.1. ComplianceSuite 객체 링크 복사링크가 클립보드에 복사되었습니다!
ComplianceSuite
객체는 스캔 상태를 추적하는 데 도움이 됩니다. 여기에는 스캔을 생성하는 데 필요한 원시 설정과 전반적인 결과가 포함되어 있습니다.
노드
유형 스캔의 경우 문제에 대한 해결 방법이 포함되어 있으므로 해당 스캔을 MachineConfigPool
에 매핑해야 합니다. 라벨을 지정하는 경우 풀에 직접 적용되는지 확인하세요.
ComplianceSuite
오브젝트의 예
백그라운드의 스위트는 스캔
매개변수를 기반으로 ComplianceScan
객체를 생성합니다. ComplianceSuites
이벤트를 프로그래밍 방식으로 가져올 수 있습니다. 해당 제품군의 이벤트를 가져오려면 다음 명령을 실행하세요.
oc get events --field-selector involvedObject.kind=ComplianceSuite,involvedObject.name=<name of the suite>
$ oc get events --field-selector involvedObject.kind=ComplianceSuite,involvedObject.name=<name of the suite>
XCCDF 속성이 포함되어 있으므로 ComplianceSuite를
수동으로 정의하면 오류가 발생할 수 있습니다.
5.4.2.5.2. 고급 ComplianceScan 개체 링크 복사링크가 클립보드에 복사되었습니다!
Compliance Operator에는 고급 사용자가 기존 툴을 디버깅하거나 통합할 수 있는 옵션이 포함되어 있습니다. ComplianceScan
객체를 직접 생성하지 않는 것이 좋지만 대신 ComplianceSuite
객체를 사용하여 관리할 수 있습니다.
고급 ComplianceScan
개체 예제
- 1
노드
또는플랫폼을
지정하세요. 노드 프로필은 클러스터 노드를 스캔하고 플랫폼 프로필은 Kubernetes 플랫폼을 스캔합니다.- 2
- 실행하려는 프로필의 XCCDF 식별자를 지정합니다.
- 3
- 프로필 파일을 캡슐화하는 컨테이너 이미지를 지정합니다.
- 4
- 이는 선택 사항입니다. 단일 규칙을 실행하도록 검사를 지정합니다. 이 규칙은 XCCDF ID로 식별되어야 하며, 지정된 프로필에 속해야 합니다.참고
규칙
매개변수를 건너뛰면 지정된 프로필의 사용 가능한 모든 규칙에 대한 검사가 실행됩니다. - 5
- OpenShift Container Platform을 사용하고 수정 사항을 생성하려는 경우 nodeSelector 레이블은
MachineConfigPool
레이블과 일치해야 합니다.참고nodeSelector
매개변수를 지정하지 않거나MachineConfig
레이블과 일치하지 않으면 검사는 계속 실행되지만 수정 사항은 생성되지 않습니다. - 6
- 스캔의 현재 단계를 나타냅니다.
- 7
- 검사 결과를 나타냅니다.
ComplianceSuite
객체를 삭제하면 관련된 모든 스캔이 삭제됩니다.
검사가 완료되면 ComplianceCheckResult
개체의 사용자 지정 리소스로 결과가 생성됩니다. 하지만 원시 결과는 ARF 형식으로 제공됩니다. 이러한 결과는 스캔 이름과 연결된 영구 볼륨 클레임(PVC)이 있는 영구 볼륨(PV)에 저장됩니다. ComplianceScans
이벤트를 프로그래밍 방식으로 가져올 수 있습니다. 제품군에 대한 이벤트를 생성하려면 다음 명령을 실행하세요.
oc get events --field-selector involvedObject.kind=ComplianceScan,involvedObject.name=<name_of_the_compliance_scan>
oc get events --field-selector involvedObject.kind=ComplianceScan,involvedObject.name=<name_of_the_compliance_scan>
5.4.2.6. 규정 준수 결과 보기 링크 복사링크가 클립보드에 복사되었습니다!
규정 준수 제품군이 완료
단계에 도달하면 검사 결과와 가능한 수정 사항을 볼 수 있습니다.
5.4.2.6.1. ComplianceCheckResult 객체 링크 복사링크가 클립보드에 복사되었습니다!
특정 프로필로 검사를 실행하면 프로필의 여러 규칙이 검증됩니다. 이러한 각 규칙에 대해 ComplianceCheckResult
개체가 생성되어 특정 규칙에 대한 클러스터 상태를 제공합니다.
ComplianceCheckResult
오브젝트의 예
모든 검사 결과를 얻으려면 다음 명령을 실행하세요.
oc get compliancecheckresults \ -l compliance.openshift.io/suite=workers-compliancesuite
oc get compliancecheckresults \
-l compliance.openshift.io/suite=workers-compliancesuite
5.4.2.6.2. ComplianceRemediation 객체 링크 복사링크가 클립보드에 복사되었습니다!
특정 검사를 위해 데이터 스트림을 지정하여 수정할 수 있습니다. 하지만 Kubernetes 수정 사항이 있는 경우 Compliance Operator는 ComplianceRemediation
객체를 생성합니다.
ComplianceRemediation
오브젝트의 예
제품군의 모든 수정 사항을 가져오려면 다음 명령을 실행하세요.
oc get complianceremediations \ -l compliance.openshift.io/suite=workers-compliancesuite
oc get complianceremediations \
-l compliance.openshift.io/suite=workers-compliancesuite
자동으로 수정할 수 있는 모든 실패 검사를 나열하려면 다음 명령을 실행하세요.
oc get compliancecheckresults \ -l 'compliance.openshift.io/check-status in (FAIL),compliance.openshift.io/automated-remediation'
oc get compliancecheckresults \
-l 'compliance.openshift.io/check-status in (FAIL),compliance.openshift.io/automated-remediation'
수동으로 수정할 수 있는 모든 실패 검사를 나열하려면 다음 명령을 실행하세요.
oc get compliancecheckresults \ -l 'compliance.openshift.io/check-status in (FAIL),!compliance.openshift.io/automated-remediation'
oc get compliancecheckresults \
-l 'compliance.openshift.io/check-status in (FAIL),!compliance.openshift.io/automated-remediation'