5.5. Compliance Operator 관리
5.5.1. Compliance Operator 설치
Compliance Operator를 사용하려면 먼저 클러스터에 배포되었는지 확인해야 합니다.
Compliance Operator는 OpenShift Dedicated, AWS Classic의 Red Hat OpenShift Service, Microsoft Azure Red Hat OpenShift와 같은 관리형 플랫폼에서 잘못된 결과를 보고할 수 있습니다. 자세한 내용은 Knowledgebase 문서 Compliance Operator에서 Managed Services에서 잘못된 결과를 보고합니다.
Compliance Operator를 배포하기 전에 원시 결과 출력을 저장하기 위해 클러스터에 영구 스토리지를 정의해야 합니다. 자세한 내용은 영구 스토리지 개요 및 기본 스토리지 클래스 관리를 참조하십시오.
5.5.1.1. 웹 콘솔을 통해 Compliance Operator 설치
사전 요구 사항
-
admin
권한이 있어야 합니다. -
StorageClass
리소스가 구성되어 있어야 합니다.
프로세스
-
OpenShift Container Platform 웹 콘솔에서 Operator
OperatorHub로 이동합니다. - Compliance Operator를 검색한 다음 설치를 클릭합니다.
-
기본 설치 모드 및 네임스페이스를 계속 선택하여 Operator가
openshift-compliance
네임스페이스에 설치되도록 합니다. - 설치를 클릭합니다.
검증
설치에 성공했는지 확인하려면 다음을 수행하십시오.
-
Operator
설치된 Operator 페이지로 이동합니다. -
Compliance Operator가
openshift-compliance
네임스페이스에 설치되어 있고 해당 상태는Succeeded
인지 확인합니다.
Operator가 성공적으로 설치되지 않은 경우 다음을 수행하십시오.
-
Operator
설치된 Operator 페이지로 이동하여 Status
열에 오류 또는 실패가 있는지 점검합니다. -
워크로드
Pod 페이지로 이동하고 openshift-compliance
프로젝트에서 문제를 보고하는 Pod의 로그를 확인합니다.
restricted
SCC(보안 컨텍스트 제약 조건)가 system:authenticated
그룹을 포함하도록 수정되었거나 requiredDropCapabilities
를 추가한 경우 Compliance Operator 가 권한 문제로 인해 제대로 작동하지 않을 수 있습니다.
Compliance Operator 스캐너 Pod 서비스 계정에 대한 사용자 정의 SCC를 생성할 수 있습니다. 자세한 내용은 Compliance Operator에 대한 사용자 정의 SCC 생성을 참조하십시오.
5.5.1.2. CLI를 사용하여 Compliance Operator 설치
사전 요구 사항
-
admin
권한이 있어야 합니다. -
StorageClass
리소스가 구성되어 있어야 합니다.
프로세스
Namespace
오브젝트를 정의합니다.예:
namespace-object.yaml
apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" pod-security.kubernetes.io/enforce: privileged 1 name: openshift-compliance
- 1
- OpenShift Container Platform 4.17에서 Pod 보안 레이블을 네임스페이스 수준에서
privileged
로 설정해야 합니다.
Namespace
오브젝트를 생성합니다.$ oc create -f namespace-object.yaml
OperatorGroup
오브젝트를 정의합니다.예:
operator-group-object.yaml
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
OperatorGroup
개체를 생성합니다.$ oc create -f operator-group-object.yaml
Subscription
오브젝트를 정의합니다.예:
subscription-object.yaml
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: compliance-operator-sub namespace: openshift-compliance spec: channel: "stable" installPlanApproval: Automatic name: compliance-operator source: redhat-operators sourceNamespace: openshift-marketplace
Subscription
오브젝트를 생성합니다.$ oc create -f subscription-object.yaml
글로벌 스케줄러 기능을 설정하고 defaultNodeSelector
를 활성화하는 경우 네임스페이스를 수동으로 생성하고 openshift-compliance
네임스페이스의 주석 또는 Compliance Operator가 설치된 네임스페이스를 openshift.io/node-selector: “”
로 업데이트해야 합니다. 이렇게 하면 기본 노드 선택기가 제거되고 배포 실패가 발생하지 않습니다.
검증
CSV 파일을 검사하여 설치에 성공했는지 확인합니다.
$ oc get csv -n openshift-compliance
Compliance Operator가 실행 중인지 확인합니다.
$ oc get deploy -n openshift-compliance
5.5.1.3. ROSA 호스트 컨트롤 플레인 (HCP)에 Compliance Operator 설치
Compliance Operator 1.5.0 릴리스에서 Operator는 호스팅된 컨트롤 플레인을 사용하여 AWS의 Red Hat OpenShift Service에 대해 테스트됩니다.
AWS 호스팅 컨트롤 플레인 클러스터의 Red Hat OpenShift Service는 Red Hat에서 관리하는 컨트롤 플레인에 대한 액세스 권한을 제한합니다. 기본적으로 Compliance Operator는 마스터
노드 풀 내의 노드에 스케줄링합니다. 이 풀은 AWS 호스팅 컨트롤 플레인 설치의 Red Hat OpenShift Service에서 사용할 수 없습니다. 이를 위해서는 Operator가 사용 가능한 노드 풀에서 예약할 수 있는 방식으로 Subscription
오브젝트를 구성해야 합니다. 이 단계는 AWS 호스팅 컨트롤 플레인 클러스터의 Red Hat OpenShift Service에 성공적으로 설치하기 위해 필요합니다.
사전 요구 사항
-
admin
권한이 있어야 합니다. -
StorageClass
리소스가 구성되어 있어야 합니다.
프로세스
Namespace
오브젝트를 정의합니다.namespace-object.yaml
파일 예apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" pod-security.kubernetes.io/enforce: privileged 1 name: openshift-compliance
- 1
- OpenShift Container Platform 4.17에서 Pod 보안 레이블을 네임스페이스 수준에서
privileged
로 설정해야 합니다.
다음 명령을 실행하여
Namespace
오브젝트를 생성합니다.$ oc create -f namespace-object.yaml
OperatorGroup
오브젝트를 정의합니다.operator-group-object.yaml
파일의 예apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
다음 명령을 실행하여
OperatorGroup
오브젝트를 생성합니다.$ oc create -f operator-group-object.yaml
Subscription
오브젝트를 정의합니다.subscription-object.yaml
파일의 예apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: compliance-operator-sub namespace: openshift-compliance spec: channel: "stable" installPlanApproval: Automatic name: compliance-operator source: redhat-operators sourceNamespace: openshift-marketplace config: nodeSelector: node-role.kubernetes.io/worker: "" 1
- 1
작업자
노드에 배포하도록 Operator 배포를 업데이트합니다.
다음 명령을 실행하여
Subscription
오브젝트를 생성합니다.$ oc create -f subscription-object.yaml
검증
CSV(클러스터 서비스 버전) 파일을 검사하도록 다음 명령을 실행하여 설치에 성공했는지 확인합니다.
$ oc get csv -n openshift-compliance
다음 명령을 사용하여 Compliance Operator가 실행 중인지 확인합니다.
$ oc get deploy -n openshift-compliance
restricted
SCC(보안 컨텍스트 제약 조건)가 system:authenticated
그룹을 포함하도록 수정되었거나 requiredDropCapabilities
를 추가한 경우 Compliance Operator 가 권한 문제로 인해 제대로 작동하지 않을 수 있습니다.
Compliance Operator 스캐너 Pod 서비스 계정에 대한 사용자 정의 SCC를 생성할 수 있습니다. 자세한 내용은 Compliance Operator에 대한 사용자 정의 SCC 생성을 참조하십시오.
5.5.1.4. Hypershift 호스팅 컨트롤 플레인에 Compliance Operator 설치
Compliance Operator는 서브스크립션
파일을 생성하여 OperatorHub를 사용하여 호스팅되는 컨트롤 플레인에 설치할 수 있습니다.
호스팅된 컨트롤 플레인은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
-
admin
권한이 있어야 합니다.
프로세스
다음과 유사한
Namespace
오브젝트를 정의합니다.예:
namespace-object.yaml
apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" pod-security.kubernetes.io/enforce: privileged 1 name: openshift-compliance
- 1
- OpenShift Container Platform 4.17에서 Pod 보안 레이블을 네임스페이스 수준에서
privileged
로 설정해야 합니다.
다음 명령을 실행하여
Namespace
오브젝트를 생성합니다.$ oc create -f namespace-object.yaml
OperatorGroup
오브젝트를 정의합니다.예:
operator-group-object.yaml
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
다음 명령을 실행하여
OperatorGroup
오브젝트를 생성합니다.$ oc create -f operator-group-object.yaml
Subscription
오브젝트를 정의합니다.예:
subscription-object.yaml
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: compliance-operator-sub namespace: openshift-compliance spec: channel: "stable" installPlanApproval: Automatic name: compliance-operator source: redhat-operators sourceNamespace: openshift-marketplace config: nodeSelector: node-role.kubernetes.io/worker: "" env: - name: PLATFORM value: "HyperShift"
다음 명령을 실행하여
Subscription
오브젝트를 생성합니다.$ oc create -f subscription-object.yaml
검증
다음 명령을 실행하여 CSV 파일을 검사하여 설치에 성공했는지 확인합니다.
$ oc get csv -n openshift-compliance
다음 명령을 실행하여 Compliance Operator가 실행 중인지 확인합니다.
$ oc get deploy -n openshift-compliance
추가 리소스
5.5.1.5. 추가 리소스
- Compliance Operator는 제한된 네트워크 환경에서 지원됩니다. 자세한 내용은 연결이 끊긴 환경에서 Operator Lifecycle Manager 사용을 참조하십시오.
5.5.2. Compliance Operator 업데이트
클러스터 관리자는 OpenShift Container Platform 클러스터에서 Compliance Operator를 업데이트할 수 있습니다.
OpenShift Container Platform 클러스터를 버전 4.14로 업데이트하면 Compliance Operator가 예상대로 작동하지 않을 수 있습니다. 이는 지속적으로 알려진 문제 때문입니다. 자세한 내용은 OCPBUGS-18025 에서 참조하십시오.
5.5.2.1. Operator 업데이트 준비
설치된 Operator의 서브스크립션은 Operator를 추적하고 업데이트를 수신하는 업데이트 채널을 지정합니다. 업데이트 채널을 변경하여 추적을 시작하고 최신 채널에서 업데이트를 수신할 수 있습니다.
서브스크립션의 업데이트 채널 이름은 Operator마다 다를 수 있지만 이름 지정 체계는 일반적으로 지정된 Operator 내의 공통 규칙을 따릅니다. 예를 들어 채널 이름은 Operator(1.2
, 1.3
) 또는 릴리스 빈도(stable
, fast
)에서 제공하는 애플리케이션의 마이너 릴리스 업데이트 스트림을 따를 수 있습니다.
설치된 Operator는 현재 채널보다 오래된 채널로 변경할 수 없습니다.
Red Hat Customer Portal 랩에는 관리자가 Operator 업데이트를 준비하는 데 도움이 되는 다음 애플리케이션이 포함되어 있습니다.
애플리케이션을 사용하여 Operator Lifecycle Manager 기반 Operator를 검색하고 다양한 OpenShift Container Platform 버전에서 업데이트 채널별로 사용 가능한 Operator 버전을 확인할 수 있습니다. Cluster Version Operator 기반 Operator는 포함되어 있지 않습니다.
5.5.2.2. Operator의 업데이트 채널 변경
OpenShift Container Platform 웹 콘솔을 사용하여 Operator의 업데이트 채널을 변경할 수 있습니다.
서브스크립션의 승인 전략이 자동으로 설정된 경우 선택한 채널에서 새 Operator 버전을 사용할 수 있는 즉시 업데이트 프로세스가 시작됩니다. 승인 전략이 수동으로 설정된 경우 보류 중인 업데이트를 수동으로 승인해야 합니다.
사전 요구 사항
- OLM(Operator Lifecycle Manager)을 사용하여 이전에 설치한 Operator입니다.
프로세스
-
웹 콘솔의 관리자 화면에서 Operator
Installed Operators로 이동합니다. - 업데이트 채널을 변경할 Operator 이름을 클릭합니다.
- 서브스크립션 탭을 클릭합니다.
- 업데이트 채널 아래에서 업데이트 채널 의 이름을 클릭합니다.
- 변경할 최신 업데이트 채널을 클릭한 다음 저장을 클릭합니다.
자동 승인 전략이 있는 서브스크립션의 경우 업데이트가 자동으로 시작됩니다. Operator
설치된 Operator 페이지로 이동하여 업데이트 진행 상황을 모니터링합니다. 완료되면 상태가 성공 및 최신으로 변경됩니다. 수동 승인 전략이 있는 서브스크립션의 경우 서브스크립션 탭에서 업데이트를 수동으로 승인할 수 있습니다.
5.5.2.3. 보류 중인 Operator 업데이트 수동 승인
설치된 Operator의 서브스크립션에 있는 승인 전략이 수동으로 설정된 경우 새 업데이트가 현재 업데이트 채널에 릴리스될 때 업데이트를 수동으로 승인해야 설치가 시작됩니다.
사전 요구 사항
- OLM(Operator Lifecycle Manager)을 사용하여 이전에 설치한 Operator입니다.
절차
-
OpenShift Container Platform 웹 콘솔의 관리자 관점에서 Operator
설치된 Operator로 이동합니다. - 보류 중인 업데이트가 있는 Operator에 업그레이드 사용 가능 상태가 표시됩니다. 업데이트할 Operator 이름을 클릭합니다.
- 서브스크립션 탭을 클릭합니다. 승인이 필요한 업데이트는 업그레이드 상태 옆에 표시됩니다. 예를 들어 1 승인 필요가 표시될 수 있습니다.
- 1 승인 필요를 클릭한 다음 설치 계획 프리뷰를 클릭합니다.
- 업데이트에 사용 가능한 것으로 나열된 리소스를 검토합니다. 문제가 없는 경우 승인을 클릭합니다.
-
Operator
설치된 Operator 페이지로 이동하여 업데이트 진행 상황을 모니터링합니다. 완료되면 상태가 성공 및 최신으로 변경됩니다.
5.5.3. Compliance Operator 관리
이 섹션에서는 업데이트된 버전의 규정 준수 콘텐츠를 사용하는 방법과 사용자 정의 ProfileBundle
오브젝트를 만드는 방법을 포함하여 보안 콘텐츠의 라이프사이클에 대해 설명합니다.
5.5.3.1. ProfileBundle CR의 예
ProfileBundle
오브젝트에는 contentImage
가 포함된 컨테이너 이미지의 URL과 규정 준수 콘텐츠가 포함된 파일의 URL이 필요합니다. contentFile
매개변수는 파일 시스템의 루트와 상대적입니다. 다음 예와 같이 내장된 rhcos4
ProfileBundle
오브젝트를 정의할 수 있습니다.
apiVersion: compliance.openshift.io/v1alpha1 kind: ProfileBundle metadata: creationTimestamp: "2022-10-19T12:06:30Z" finalizers: - profilebundle.finalizers.compliance.openshift.io generation: 1 name: rhcos4 namespace: openshift-compliance resourceVersion: "46741" uid: 22350850-af4a-4f5c-9a42-5e7b68b82d7d spec: contentFile: ssg-rhcos4-ds.xml 1 contentImage: registry.redhat.io/compliance/openshift-compliance-content-rhel8@sha256:900e... 2 status: conditions: - lastTransitionTime: "2022-10-19T12:07:51Z" message: Profile bundle successfully parsed reason: Valid status: "True" type: Ready dataStreamStatus: VALID
5.5.3.2. 보안 콘텐츠 업데이트
보안 콘텐츠는 ProfileBundle
오브젝트가 참조하는 컨테이너 이미지로 포함됩니다. ProfileBundles
및 규칙 또는 프로필과 같은 번들에서 구문 분석한 사용자 정의 리소스에 대한 업데이트를 정확하게 추적하려면 태그 대신 다이제스트를 사용하여 규정 준수 콘텐츠가 있는 컨테이너 이미지를 확인하십시오.
$ oc -n openshift-compliance get profilebundles rhcos4 -oyaml
출력 예
apiVersion: compliance.openshift.io/v1alpha1
kind: ProfileBundle
metadata:
creationTimestamp: "2022-10-19T12:06:30Z"
finalizers:
- profilebundle.finalizers.compliance.openshift.io
generation: 1
name: rhcos4
namespace: openshift-compliance
resourceVersion: "46741"
uid: 22350850-af4a-4f5c-9a42-5e7b68b82d7d
spec:
contentFile: ssg-rhcos4-ds.xml
contentImage: registry.redhat.io/compliance/openshift-compliance-content-rhel8@sha256:900e... 1
status:
conditions:
- lastTransitionTime: "2022-10-19T12:07:51Z"
message: Profile bundle successfully parsed
reason: Valid
status: "True"
type: Ready
dataStreamStatus: VALID
- 1
- 보안 컨테이너 이미지입니다.
각 ProfileBundle
은 배포를 통해 지원됩니다. Compliance Operator에서 컨테이너 이미지 다이제스트가 변경되었음을 감지하면 배포가 업데이트되어 변경 사항을 반영하고 콘텐츠를 다시 구문 분석합니다. 태그 대신 다이제스트를 사용하면 안정적이고 예측 가능한 프로필 세트를 사용할 수 있습니다.
5.5.3.3. 추가 리소스
- Compliance Operator는 제한된 네트워크 환경에서 지원됩니다. 자세한 내용은 연결이 끊긴 환경에서 Operator Lifecycle Manager 사용을 참조하십시오.
5.5.4. Compliance Operator 설치 제거
OpenShift Container Platform 웹 콘솔 또는 CLI를 사용하여 클러스터에서 OpenShift Compliance Operator를 제거할 수 있습니다.
5.5.4.1. 웹 콘솔을 사용하여 OpenShift Container Platform에서 OpenShift Compliance Operator 설치 제거
Compliance Operator를 제거하려면 먼저 네임스페이스에서 오브젝트를 삭제해야 합니다. 오브젝트가 제거되면 openshift-compliance 프로젝트를 삭제하여 Operator 및 해당 네임스페이스를 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - OpenShift Compliance Operator가 설치되어 있어야 합니다.
프로세스
OpenShift Container Platform 웹 콘솔을 사용하여 Compliance Operator를 제거하려면 다음을 수행합니다.
Operator
설치된 Operator Compliance Operator 페이지로 이동합니다. - 모든 인스턴스를 클릭합니다.
- 모든 네임스페이스 에서 옵션 메뉴 를 클릭하고 all ScanSettingBinding, ComplainceSuite, ComplianceScan 및 ProfileBundle 오브젝트를 삭제합니다.
-
관리
Operator 설치된 Operator 페이지로 전환합니다. - Compliance Operator 항목에서 옵션 메뉴 를 클릭하고 Operator 설치 제거를 선택합니다.
-
홈
프로젝트 페이지로 전환합니다. - 'compliance'를 검색합니다.
openshift-compliance 프로젝트 옆에 있는 옵션 메뉴 를 클릭하고 프로젝트 삭제 를 선택합니다.
-
대화 상자에
openshift-compliance
를 입력하여 삭제를 확인하고 삭제를 클릭합니다.
-
대화 상자에
5.5.4.2. CLI를 사용하여 OpenShift Container Platform에서 OpenShift Compliance Operator 설치 제거
Compliance Operator를 제거하려면 먼저 네임스페이스에서 오브젝트를 삭제해야 합니다. 오브젝트가 제거되면 openshift-compliance 프로젝트를 삭제하여 Operator 및 해당 네임스페이스를 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - OpenShift Compliance Operator가 설치되어 있어야 합니다.
프로세스
네임스페이스의 모든 오브젝트를 삭제합니다.
ScanSettingBinding
오브젝트를 삭제합니다.$ oc delete ssb --all -n openshift-compliance
ScanSetting
오브젝트를 삭제합니다.$ oc delete ss --all -n openshift-compliance
ComplianceSuite
오브젝트를 삭제합니다.$ oc delete suite --all -n openshift-compliance
ComplianceScan
오브젝트를 삭제합니다.$ oc delete scan --all -n openshift-compliance
ProfileBundle
오브젝트를 삭제합니다.$ oc delete profilebundle.compliance --all -n openshift-compliance
Subscription 오브젝트를 삭제합니다.
$ oc delete sub --all -n openshift-compliance
CSV 오브젝트를 삭제합니다.
$ oc delete csv --all -n openshift-compliance
프로젝트를 삭제합니다.
$ oc delete project openshift-compliance
출력 예
project.project.openshift.io "openshift-compliance" deleted
검증
네임스페이스가 삭제되었는지 확인합니다.
$ oc get project/openshift-compliance
출력 예
Error from server (NotFound): namespaces "openshift-compliance" not found