2.3. 정책 컨트롤러 소개
정책 컨트롤러는 클러스터가 정책과 호환되는지 여부를 모니터링하고 보고합니다. 지원되는 정책 템플릿을 사용하여 이러한 컨트롤러에서 관리하는 정책을 적용하여 Kubernetes 정책 프레임워크용 Red Hat Advanced Cluster Management를 사용하십시오. 정책 컨트롤러는 Kubernetes 사용자 정의 리소스 정의 인스턴스를 관리합니다.
정책 컨트롤러는 정책 위반을 확인하고 컨트롤러가 시행 기능을 지원하는 경우 클러스터 상태를 준수하도록 할 수 있습니다. Kubernetes 정책 컨트롤러에 대한 다음 Red Hat Advanced Cluster Management에 대한 자세한 내용은 다음 주제를 참조하십시오.
중요: 구성 정책 컨트롤러 정책만 적용
기능을 지원합니다. 정책 컨트롤러에서 적용
기능을 지원하지 않는 정책을 수동으로 수정해야 합니다.
2.3.1. Kubernetes 구성 정책 컨트롤러
구성 정책 컨트롤러를 사용하여 Kubernetes 리소스를 구성하고 클러스터에 보안 정책을 적용할 수 있습니다. 구성 정책은 허브 클러스터에 있는 정책의 policy-templates
필드에 제공되며, 거버넌스 프레임워크를 통해 선택한 관리 클러스터에 전파됩니다.
Kubernetes 오브젝트는 구성 정책의 object-templates
배열에 정의되고 관리 클러스터의 오브젝트와 비교할 필드의 구성 정책 컨트롤러에 표시됩니다. 구성 정책 컨트롤러는 로컬 Kubernetes API 서버와 통신하여 클러스터에 있는 구성 목록을 가져옵니다.
구성 정책 컨트롤러는 설치 중에 관리 클러스터에 생성됩니다. 구성 정책 컨트롤러는 구성 정책이 준수하지 않을 때 수정하기 위해 시행
및 InformOnly
기능을 지원합니다.
구성 정책의 수정
작업이 적용
되도록 설정된 경우 컨트롤러는 지정된 구성을 대상 관리 클러스터에 적용합니다.
구성 정책의 remediationAction
이 InformOnly
로 설정된 경우 상위 정책에서 상위 정책의 remediationAction
이 적용되도록 설정되어 있어도 구성 정책을 적용하지
않습니다.
참고: 이름이 없는 오브젝트를 지정하는 구성 정책은 알림을 통해서만 알 수 있습니다
.
구성 정책 내에서 템플릿 값을 사용할 수도 있습니다. 자세한 내용은 템플릿 처리를 참조하십시오.
정책에 추가하려는 기존 Kubernetes 매니페스트가 있는 경우 정책 생성기는 이 작업을 수행하는 데 유용한 도구입니다.
2.3.1.1. 구성 정책 샘플
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-config spec: namespaceSelector: include: ["default"] exclude: [] matchExpressions: [] matchLabels: {} remediationAction: inform severity: low evaluationInterval: compliant: noncompliant: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Pod metadata: name: pod spec: containers: - image: pod-image name: pod-name ports: - containerPort: 80 - complianceType: musthave objectDefinition: apiVersion: v1 kind: ConfigMap metadata: name: myconfig namespace: default data: testData: hello spec: ...
2.3.1.2. 구성 정책 YAML 테이블
필드 | 선택 사항 또는 필수 | 설명 |
---|---|---|
| 필수 항목 |
값을 |
| 필수 항목 |
값을 |
| 필수 항목 | 정책의 이름입니다. |
| 네임스페이스가 지정되지 않은 네임스페이스된 오브젝트에 필요합니다. |
관리 클러스터에서 오브젝트가 적용되는 네임스페이스를 결정합니다. |
| 필수 항목 |
정책이 준수하지 않을 때 수행할 작업을 지정합니다. 다음 매개변수 값을 사용합니다. |
| 필수 항목 |
정책이 준수하지 않을 때 심각도를 지정합니다. 다음과 같은 매개변수 값( |
| 선택 사항 |
규정 준수 상태에 있을 때 정책이 평가되는 빈도를 정의하는 데 사용됩니다. 값은 시간 단위 접미사가 있는 숫자 시퀀스인 기간 형식이어야 합니다. 예를 들어
기본적으로 구성 정책에 대한 평가 사이의 최소 시간은 |
| 선택 사항 |
비호환 상태에 있을 때 정책이 평가되는 빈도를 정의하는 데 사용됩니다. |
| 선택 사항 |
컨트롤러가 관리되는 클러스터의 오브젝트와 비교할 수 있는 Kubernetes 오브젝트의 배열(완전히 정의되거나 필드 서브 세트 포함)입니다. 참고: |
| 선택 사항 |
원시 YAML 문자열로 오브젝트 템플릿을 설정하는 데 사용됩니다. 오브젝트 템플릿에 대한 조건을 지정합니다. 여기서 if-else 문 및
참고: |
| 필수 항목 | 관리 클러스터에서 원하는 Kubernetes 오브젝트 상태를 정의하는 데 사용됩니다. 다음 동사 중 하나를 매개변수 값으로 사용해야 합니다.
|
| 선택 사항 |
매니페스트의 metadata 섹션을 클러스터의 오브젝트("musthave", "mustonlyhave")와 비교할 때 |
| 선택 사항 |
정책에서 클러스터의 오브젝트와 |
| 필수 항목 | 컨트롤러에서 관리 클러스터의 오브젝트와 비교할 수 있는 Kubernetes 오브젝트(완전히 정의되거나 하위 집합 포함)입니다. |
| 선택 사항 | 정책을 관리 클러스터에서 제거할 때 정책과 관련된 리소스를 정리할지 여부를 결정합니다. |
2.3.1.3. 추가 리소스
자세한 내용은 다음 항목을 참조하십시오.
- hub 클러스터 정책에 대한 자세한 내용은 정책 개요 를 참조하십시오.
-
NIST Special Publication 800-53 (Rev. 4) 을 사용하는 정책 샘플에서
CM-Configuration-Management
폴더의 Red Hat Advanced Cluster Management 에서 지원을 참조하십시오. - 허브 클러스터에 정책이 적용되는 방법에 대한 자세한 내용은 지원 정책을 참조하십시오.
- 컨트롤러에 대한 자세한 내용은 정책 컨트롤러를 참조하십시오.
- 정책 컨트롤러 구성을 사용자 지정합니다. 정책 컨트롤러 고급 구성 을 참조하십시오.
- 정책 문서에 의해 생성된 리소스 정리 및 리소스 정리 에 대해 알아봅니다.
- Policy Generator 를 참조하십시오.
- 정책을 만들고 사용자 지정하는 방법에 대한 자세한 내용은 관리 거버넌스 대시보드를 참조하십시오.
- 템플릿 처리를 참조하십시오.
2.3.2. 인증서 정책 컨트롤러
인증서 정책 컨트롤러를 사용하여 만료 시간(시간)에 가까운 인증서를 검색하거나 지정된 패턴과 일치하지 않는 DNS 이름을 포함할 수 있습니다. 거버넌스 프레임워크를 사용하여 선택한 관리 클러스터에 전파되는 허브 클러스터의 policy-templates
필드에 인증서 정책을 추가할 수 있습니다. hub 클러스터 정책에 대한 자세한 내용은 정책 개요 설명서를 참조하십시오.
컨트롤러 정책에서 다음 매개변수를 업데이트하여 인증서 정책 컨트롤러를 구성하고 사용자 지정합니다.
-
minimumDuration
-
minimumCADuration
-
maximumDuration
-
maximumCADuration
-
허용되는SANPattern
-
disallowedSANPattern
다음 시나리오 중 하나로 인해 정책을 준수하지 않을 수 있습니다.
- 인증서가 최소 기간 미만으로 만료되거나 최대 시간이 초과되는 경우입니다.
- DNS 이름이 지정된 패턴과 일치하지 않는 경우
인증서 정책 컨트롤러가 관리 클러스터에 생성됩니다. 컨트롤러는 로컬 Kubernetes API 서버와 통신하여 인증서가 포함된 보안 목록을 가져오고 모든 비호환 인증서를 결정합니다.
인증서 정책 컨트롤러는 적용
기능을 지원하지 않습니다.
참고: 인증서 정책 컨트롤러는 tls.crt
키에서만 시크릿에서 인증서를 자동으로 찾습니다. 보안이 다른 키에 저장된 경우 키로 설정된 certificate_key_name
이라는 레이블을 추가하여 인증서 정책 컨트롤러에서 다른 키를 찾도록 알립니다. 예를 들어 보안에 sensor-cert.pem
이라는 키에 저장된 인증서가 포함된 경우 secret: certificate_key_name: sensor-cert.pem
에 다음 라벨을 추가합니다.
2.3.2.1. 인증서 정책 컨트롤러 YAML 구조
인증서 정책의 다음 예제를 보고 YAML 테이블의 요소를 검토합니다.
apiVersion: policy.open-cluster-management.io/v1 kind: CertificatePolicy metadata: name: certificate-policy-example spec: namespaceSelector: include: ["default"] exclude: [] matchExpressions: [] matchLabels: {} labelSelector: myLabelKey: myLabelValue remediationAction: severity: minimumDuration: minimumCADuration: maximumDuration: maximumCADuration: allowedSANPattern: disallowedSANPattern:
2.3.2.1.1. 인증서 정책 컨트롤러 YAML 테이블
필드 | 선택 사항 또는 필수 | 설명 |
---|---|---|
| 필수 항목 |
값을 |
| 필수 항목 |
값을 |
| 필수 항목 | 정책을 식별하는 이름입니다. |
| 선택 사항 |
인증서 정책에서 |
| 필수 항목 |
관리 클러스터에서 보안이 모니터링되는 네임스페이스를 결정합니다.
참고: 인증서 정책 컨트롤러의 |
| 선택 사항 | 오브젝트의 특성 식별을 지정합니다. Kubernetes 라벨 및 선택기 설명서를 참조하십시오. |
| 필수 항목 |
정책 수정을 지정합니다. 매개 변수 값을 설정하여 |
| 선택 사항 |
정책이 준수하지 않는 경우 심각도에 대해 사용자에게 알립니다. 다음과 같은 매개변수 값( |
| 필수 항목 |
값을 지정하지 않으면 기본값은 |
| 선택 사항 |
다른 인증서와 다른 값으로 만료될 수 있는 서명 인증서를 식별하도록 값을 설정합니다. 매개변수 값을 지정하지 않으면 CA 인증서 expiration은 |
| 선택 사항 | 원하는 제한을 초과하는 기간으로 생성된 인증서를 식별하도록 값을 설정합니다. 매개변수는 Golang의 시간 기간 형식을 사용합니다. 자세한 내용은 Golang Parse Duration 을 참조하십시오. |
| 선택 사항 | 정의된 제한을 초과하는 기간으로 생성된 서명 인증서를 식별하도록 값을 설정합니다. 매개변수는 Golang의 시간 기간 형식을 사용합니다. 자세한 내용은 Golang Parse Duration 을 참조하십시오. |
| 선택 사항 | 인증서에 정의된 모든 SAN 항목과 일치해야 하는 정규식입니다. 이 매개변수는 패턴에 대해 DNS 이름을 확인합니다. 자세한 내용은 Golang 정규식 구문을 참조하십시오. |
| 선택 사항 | 인증서에 정의한 SAN 항목과 일치하지 않아야 하는 정규식입니다. 이 매개변수는 패턴에 대해 DNS 이름을 확인합니다.
참고: 와일드카드 인증서를 감지하려면 다음 SAN 패턴을 사용하십시오. 자세한 내용은 Golang 정규식 구문을 참조하십시오. |
2.3.2.2. 인증서 정책 샘플
허브 클러스터에서 인증서 정책 컨트롤러가 생성되면 관리 클러스터에 복제 정책이 생성됩니다. 인증서 정책 샘플을 보려면 policy-certificate.yaml
을 참조하십시오.
2.3.2.3. 추가 리소스
- 인증서 정책 관리 방법에 대한 자세한 내용은 보안 정책 관리를 참조하십시오.
- 자세한 내용은 정책 컨트롤러 소개 를 참조하십시오.
- 인증서 소개 로 돌아갑니다.
2.3.3. IAM 정책 컨트롤러(더 이상 사용되지 않음)
IAM(Identity and Access Management) 정책 컨트롤러를 사용하여 준수하지 않는 IAM 정책에 대한 알림을 받을 수 있습니다. 규정 준수 검사는 IAM 정책에서 구성하는 매개변수를 기반으로 합니다. IAM 정책은 허브 클러스터에 있는 정책의 policy-templates
필드에 제공되며 거버넌스 프레임워크를 통해 선택한 관리 클러스터로 전파됩니다. hub 클러스터 정책에 대한 자세한 내용은 Policy YAML 구조 설명서를 참조하십시오.
IAM 정책 컨트롤러는 클러스터에서 특정 클러스터 역할(예: ClusterRole
)을 사용하는 원하는 최대 사용자 수를 모니터링합니다. 모니터링할 기본 클러스터 역할은 cluster-admin
입니다. IAM 정책 컨트롤러는 로컬 Kubernetes API 서버와 통신합니다.
IAM 정책 컨트롤러는 관리 클러스터에서 실행됩니다. 자세한 내용은 다음 섹션을 확인하십시오.
2.3.3.1. IAM 정책 YAML 구조
IAM 정책의 다음 예제를 보고 YAML 테이블의 매개변수를 검토합니다.
apiVersion: policy.open-cluster-management.io/v1 kind: IamPolicy metadata: name: spec: clusterRole: severity: remediationAction: maxClusterRoleBindingUsers: ignoreClusterRoleBindings:
2.3.3.2. IAM 정책 YAML 테이블
설명을 위해 다음 매개변수 표를 확인하십시오.
필드 | 선택 사항 또는 필수 | 설명 |
---|---|---|
| 필수 항목 |
값을 |
| 필수 항목 |
정책 유형을 나타내려면 값을 |
| 필수 항목 | 정책 리소스를 식별하는 이름입니다. |
| 선택 사항 |
모니터링할 클러스터 역할(예: |
| 선택 사항 |
정책이 준수하지 않는 경우 심각도에 대해 사용자에게 알립니다. 다음과 같은 매개변수 값( |
| 선택 사항 |
정책 수정을 지정합니다. |
| 선택 사항 |
무시할 클러스터 역할 바인딩 이름을 나타내는 정규식(regex) 값 목록입니다. 이러한 정규식 값은 Go regexp 구문을 따라야 합니다. 기본적으로 |
| 필수 항목 | 정책을 준수하지 않기 전에 사용할 수 있는 최대 IAM 역할 바인딩 수입니다. |
2.3.3.3. IAM 정책 샘플
IAM 정책 샘플을 보려면 policy-limitclusteradmin.yaml
을 참조하십시오. 자세한 내용은 보안 정책 관리를 참조하십시오. 자세한 내용은 정책 컨트롤러 를 참조하십시오.
2.3.4. 정책 세트 컨트롤러
정책 세트 컨트롤러는 동일한 네임스페이스에 정의된 정책에 대한 정책 상태 범위를 집계합니다. 동일한 네임스페이스에 있는 정책을 그룹화할 정책 세트(PolicySet
)를 생성합니다. PolicySet의 모든 정책은
및 배치를 바인딩하는 PolicySet
을 생성하여 선택한 클러스터에 함께 배치됩니다. 정책 세트는 hub 클러스터에 배포됩니다.
Placement
Binding
또한 정책이 여러 정책 세트의 일부인 경우 기존 및 새 배치
리소스는 정책에 남아 있습니다. 사용자가 정책 세트에서 정책을 제거하면 정책 세트에서 선택한 클러스터에는 정책이 적용되지 않지만 배치는 그대로 유지됩니다. 정책 세트 컨트롤러는 정책 세트 배치를 포함하는 클러스터의 위반만 확인합니다.
참고:
- Red Hat Advanced Cluster Management 샘플 정책 세트는 클러스터 배치를 사용합니다. 클러스터 배치를 사용하는 경우 정책이 포함된 네임스페이스를 관리 클러스터 세트에 바인딩합니다. 클러스터 배치 사용에 대한 자세한 내용은 클러스터에 정책 배포를 참조하십시오.
-
배치
리소스를 사용하려면ManagedClusterSet
리소스를ManagedClusterSetBinding
리소스를 사용하여배치
리소스의 네임스페이스에 바인딩해야 합니다. 자세한 내용은 Creating a ManagedClusterSetBinding 리소스 를 참조하십시오.
다음 섹션에서 정책 세트 구조에 대한 자세한 내용을 알아보십시오.
2.3.4.1. 정책 세트 YAML 구조
정책 세트는 다음 YAML 파일과 유사할 수 있습니다.
apiVersion: policy.open-cluster-management.io/v1beta1 kind: PolicySet metadata: name: demo-policyset spec: policies: - policy-demo --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: demo-policyset-pb placementRef: apiGroup: cluster.open-cluster-management.io kind: Placement name: demo-policyset-pr subjects: - apiGroup: policy.open-cluster-management.io kind: PolicySet name: demo-policyset --- apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: demo-policyset-pr spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: name operator: In values: - local-cluster
2.3.4.2. 정책 세트 테이블
설명을 위해 다음 매개변수 표를 확인하십시오.
필드 | 선택 사항 또는 필수 | 설명 |
---|---|---|
| 필수 항목 |
값을 |
| 필수 항목 |
값을 |
| 필수 항목 | 정책 리소스를 식별하는 이름입니다. |
| 필수 항목 | 정책에 대한 구성 세부 정보를 추가합니다. |
| 선택 사항 | 정책 세트에서 함께 그룹화할 정책 목록입니다. |
2.3.4.3. 정책 세트 샘플
apiVersion: policy.open-cluster-management.io/v1beta1 kind: PolicySet metadata: name: pci namespace: default spec: description: Policies for PCI compliance policies: - policy-pod - policy-namespace status: compliant: NonCompliant placement: - placementBinding: binding1 placement: placement1 policySet: policyset-ps
2.3.4.4. 추가 리소스
- Red Hat OpenShift Platform Plus 정책 세트를 참조하십시오.
- 보안 정책 관리 항목의 정책 세트 생성 섹션을 참조하십시오.
-
또한 배포를 위해 정책 생성기가 필요한 안정적인
PolicySets
- 안정된 PolicySets-Stable 을 확인합니다. - 이 항목의 시작 부분으로 돌아가서 정책 설정 컨트롤러.
2.3.5. Operator 정책 컨트롤러 (기술 프리뷰)
Operator 정책 컨트롤러를 사용하면 클러스터 전체에서 OLM(Operator Lifecycle Manager) Operator를 모니터링하고 설치할 수 있습니다. Operator 정책 컨트롤러를 사용하여 Operator의 다양한 부분을 모니터링하고 Operator에 대한 업데이트를 자동으로 처리하는 방법을 지정합니다. 또한 거버넌스 프레임워크를 사용하고 허브 클러스터의 정책 -templates 필드에 정책을 추가하여 운영자 정책을
관리 클러스터에 배포할 수도 있습니다.
2.3.5.1. 사전 요구 사항
- 관리 클러스터에서 OLM을 사용할 수 있어야 합니다. 이는 Red Hat OpenShift Container Platform에서 기본적으로 활성화되어 있습니다.
- 필수 액세스: 클러스터 관리자
2.3.5.2. Operator 정책 YAML 테이블
필드 | 선택 사항 또는 필수 | 설명 |
---|---|---|
| 필수 항목 |
값을 |
| 필수 항목 |
값을 |
| 필수 항목 | 정책 리소스를 식별하는 이름입니다. |
| 필수 항목 |
Operator 정책에 대한 |
| 선택 사항 |
기본적으로 |
| 필수 항목 | 운영자 서브스크립션을 생성할 구성을 정의합니다. Operator 서브스크립션을 생성하려면 다음 필드에 정보를 추가해야 합니다.
|
| 필수 항목 |
|
| 선택 사항 |
호환되는 Operator 버전을 선언합니다. 필드가 비어 있으면 클러스터에서 실행 중인 모든 버전이 준수로 간주됩니다. 필드가 비어 있지 않은 경우 관리 클러스터의 버전이 정책을 준수하려면 목록의 버전 중 하나와 일치해야 합니다. 정책을 |
2.3.5.3. 추가 리소스
-
자세한 내용은
OperatorPolicy
리소스를 사용하여 Operator 설치를 참조하십시오. - 자세한 내용은 OLM(Operator Lifecycle Manager) 을 참조하십시오.
- OLM에 대한 일반적인 정보는 클러스터 설명서에 Operator 추가 를 참조하십시오.