검색

4장. 타사 정책 컨트롤러 통합

download PDF

타사 정책을 통합하여 정책 템플릿 내에서 사용자 지정 주석을 생성하여 하나 이상의 규정 준수 표준을 지정하고 카테고리 및 제어를 제어합니다.

또한 policy-collection/community 의 타사 정책을 사용할 수도 있습니다.

다음의 제3자 정책, 정책 생성기를 통합하는 방법을 배웁니다.

4.1. 정책 생성기

정책 생성기는 Kustomize를 사용하여 Red Hat Advanced Cluster Management 정책을 생성하는 Kubernetes 애플리케이션 라이프사이클 서브스크립션 GitOps 워크플로우의 일부입니다. Policy Generator는 Kubernetes 매니페스트 YAML 파일에서 Red Hat 고급 클러스터 관리 정책을 빌드합니다. 이 정책은 이를 구성하는 데 사용되는 PolicyGenerator 매니페스트 YAML 파일을 통해 제공됩니다. 정책 생성기는 Kustomize 생성기 플러그인으로 구현됩니다. Kustomize에 대한 자세한 내용은 Kustomize 문서를 참조하십시오.

자세한 내용은 다음 섹션을 참조하십시오.

4.1.1. 정책 생성기 기능

정책 생성기 및 Red Hat Advanced Cluster Management 애플리케이션 라이프사이클 서브스크립션 GitOps 워크플로우와의 통합은 Red Hat Advanced Cluster Management 정책을 통해 Kubernetes 리소스 오브젝트를 관리형 OpenShift Container Platform 클러스터에 배포할 수 있도록 단순화합니다.

정책 생성기를 사용하여 다음 작업을 완료합니다.

  • Kustomize 디렉터리에서 생성된 매니페스트를 포함하여 Kubernetes 매니페스트 파일을 Red Hat Advanced Cluster Management 구성 정책으로 변환합니다.
  • 생성된 Red Hat Advanced Cluster Management 정책에 삽입하기 전에 입력 Kubernetes 매니페스트를 패치합니다.
  • Red Hat Advanced Cluster Management for Kubernetes를 통해 Gatekeeper 정책 위반에 대해 보고할 수 있도록 추가 구성 정책을 생성합니다.
  • 허브 클러스터에서 정책 세트를 생성합니다.

4.1.2. 정책 생성기 구성 구조

정책 생성기는 PolicyGenerator 종류 및 policy.open-cluster-management.io/v1 API 버전의 매니페스트로 구성된 Kustomize 생성기 플러그인입니다.

플러그인을 사용하려면 kustomization.yaml 파일에 generators 섹션을 추가하여 시작합니다. 다음 예제를 확인합니다.

generators:
  - policy-generator-config.yaml

이전 예에서 참조되는 policy-generator-config.yaml 파일은 생성할 정책의 지침이 있는 YAML 파일입니다. 간단한 PolicyGenerator 구성 파일은 다음 예와 유사할 수 있습니다.

apiVersion: policy.open-cluster-management.io/v1
kind: PolicyGenerator
metadata:
  name: config-data-policies
policyDefaults:
  namespace: policies
  policySets: []
policies:
  - name: config-data
    manifests:
      - path: configmap.yaml

configmap.yaml 은 정책에 포함할 Kubernetes 매니페스트 YAML 파일을 나타냅니다. 또는 경로를 Kustomize 디렉터리 또는 여러 Kubernetes 매니페스트 YAML 파일이 있는 디렉터리를 설정할 수 있습니다. 다음 예제를 확인합니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  namespace: default
data:
  key1: value1
  key2: value2

object-templates-raw 매니페스트를 사용하여 추가한 콘텐츠로 ConfigurationPolicy 를 자동으로 생성할 수도 있습니다. 다음 예제를 참조하십시오.

apiVersion: policy.open-cluster-management.io/v1
kind: PolicyGenerator
metadata:
  name: config-data-policies
policyDefaults:
  namespace: policies
  policySets: []
policies:
  - name: config-data
    manifests:
      - path: object-templates-raw: |
              <your_content>

콘텐츠는 생성된 ConfigurationPolicy 에서 사용되며 정책의 policy-templates 에 대한 항목으로 추가됩니다. object-templates-raw 생성된 ConfigurationPolicy 의 이름은 지정된 이름이 없는 ConfigurationPolicy 에서 생성된 매니페스트와 동일합니다.

생성된 정책 배치 바인딩 은 다음 예와 유사할 수 있습니다.

apiVersion: cluster.open-cluster-management.io/v1beta1
kind: Placement
metadata:
  name: placement-config-data
  namespace: policies
spec:
  predicates:
  - requiredClusterSelector:
      labelSelector:
        matchExpressions: []
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name: binding-config-data
  namespace: policies
placementRef:
  apiGroup: cluster.open-cluster-management.io
  kind: Placement
  name: placement-config-data
subjects:
- apiGroup: policy.open-cluster-management.io
  kind: Policy
  name: config-data
---
apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  annotations:
    policy.open-cluster-management.io/categories: CM Configuration Management
    policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
    policy.open-cluster-management.io/standards: NIST SP 800-53
    policy.open-cluster-management.io/description:
  name: config-data
  namespace: policies
spec:
  disabled: false
  policy-templates:
  - objectDefinition:
      apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name: config-data
      spec:
        object-templates:
        - complianceType: musthave
          objectDefinition:
            apiVersion: v1
            data:
              key1: value1
              key2: value2
            kind: ConfigMap
            metadata:
              name: my-config
              namespace: default
        remediationAction: inform
        severity: low

4.1.3. 정책 생성기 구성 참조 테이블

각 정책에 대해 namespace 를 제외한 policyDefaults 섹션의 모든 필드를 재정의할 수 있으며 policySetDefaults 섹션의 모든 필드를 각 정책 세트에 대해 재정의할 수 있습니다.

표 4.1. 매개변수 테이블
필드선택 사항 또는 필수설명

apiVersion

필수 항목

값을 policy.open-cluster-management.io/v1 로 설정합니다.

kind

필수 항목

값을 PolicyGenerator 로 설정하여 정책 유형을 나타냅니다.

metadata.name

필수 항목

정책 리소스를 식별하는 이름입니다.

placementBindingDefaults.name

선택 사항

여러 정책에서 동일한 배치를 사용하는 경우 이 이름은 결과 placement Binding 에 대한 고유 이름을 생성하여 배치를 참조하는 정책 배열과 바인딩하는 데 사용됩니다.

policyDefaults

필수 항목

여기에 나열된 기본값은 네임스페이스 를 제외하고 정책 배열의 항목으로 재정의됩니다.

policyDefaults.namespace

필수 항목

모든 정책의 네임스페이스입니다.

policyDefaults.complianceType

선택 사항

매니페스트를 클러스터의 오브젝트와 비교할 때 정책 컨트롤러 동작을 결정합니다. 사용할 수 있는 값은 musthave,mustonlyhave 또는 mustnothave 여야 합니다. 기본값은 musthave 입니다.

policyDefaults.metadataComplianceType

선택 사항

매니페스트 메타데이터 섹션을 클러스터의 오브젝트와 비교할 때 complianceType 을 재정의합니다. 사용할 수 있는 값은 있어야 하며 반드시 있어야 합니다. 메타데이터에 대한 complianceType 을 재정의하지 않도록 기본값은 비어 있습니다({}).

policyDefaults.categories

선택 사항

policy.open-cluster-management.io/categories 주석에 사용할 카테고리의 배열입니다. 기본값은 CM 구성 관리 입니다.

policyDefaults.controls

선택 사항

policy.open-cluster-management.io/controls 주석에서 사용할 제어 배열입니다. 기본값은 CM-2 Baseline Configuration 입니다.

policyDefaults.standards

선택 사항

policy.open-cluster-management.io/standards 주석에 사용할 표준 배열입니다. 기본값은 NIST SP 800-53 입니다.

policyDefaults.policyAnnotations

선택 사항

정책이 metadata.annotations 섹션에 포함하는 주석입니다. 정책에 지정되지 않는 한 모든 정책에 적용됩니다. 기본값은 비어 있습니다({}).

policyDefaults.configurationPolicyAnnotations

선택 사항

생성된 구성 정책에 설정할 주석의 키-값 쌍입니다. 예를 들어 {"policy.open-cluster-management.io/disable-templates": "true"} 매개변수를 정의하여 정책 템플릿을 비활성화할 수 있습니다. 기본값은 비어 있습니다({}).

policyDefaults.copyPolicyMetadata

선택 사항

모든 정책에 대한 레이블 및 주석을 복사하여 복제본 정책에 추가합니다. 기본적으로 true 로 설정합니다. false 로 설정하면 정책 프레임워크별 정책 레이블 및 주석만 복제된 정책에 복사됩니다.

policyDefaults.severity

선택 사항

정책 위반의 심각도입니다. 기본값은 낮음 입니다.

policyDefaults.disabled

선택 사항

정책이 비활성화되었는지 여부, 즉 전파되지 않고 결과적으로 상태가 없습니다. 정책을 활성화하는 기본값은 false 입니다.

policyDefaults.remediationAction

선택 사항

정책의 수정 메커니즘입니다. 매개변수 값은 enforceinform 입니다. 기본값은 inform 입니다.

policyDefaults.namespaceSelector

네임스페이스가 지정되지 않은 네임스페이스된 오브젝트에 필요합니다.

관리 클러스터에서 오브젝트가 적용되는 네임스페이스를 결정합니다. includeexclude 매개 변수는 파일 경로 표현식을 허용하여 이름별로 네임스페이스를 포함 및 제외합니다. matchExpressionsmatchLabels 매개변수는 레이블별로 포함할 네임스페이스를 지정합니다. Kubernetes 레이블 및 선택기 설명서를 읽습니다. 결과 목록은 모든 매개변수의 결과 교집합을 사용하여 컴파일됩니다.

policyDefaults.evaluationInterval

선택 사항

특정 규정 준수 상태에서 평가할 정책의 빈도를 지정하려면 규정 준수 및 비준 수를 사용합니다. 관리 클러스터에 CPU 리소스가 부족하면 Kubernetes API의 CPU 사용량을 줄이기 위해 평가 간격을 늘릴 수 있습니다. 이는 기간 단위의 형식입니다. 예를 들어 "1h25m3s" 는 1시간, 25분, 3초를 나타냅니다. 또한 특정 규정 준수 상태가 된 후 정책을 평가하지 않도록 "없음"으로 설정할 수도 있습니다.

policyDefaults.pruneObjectBehavior

선택 사항

정책을 삭제할 때 정책에 의해 생성되거나 모니터링되는 오브젝트를 삭제해야 하는지 여부를 결정합니다. 정책의 수정 작업이 적용 되도록 설정된 경우에만 정리가 수행됩니다. 예제 값은 DeleteIfCreated,DeleteAll 또는 None 입니다. 기본값은 None 입니다.

policyDefaults.recordDiff

선택 사항

정책에서 클러스터의 오브젝트와 오브젝트Definition 간의 차이점을 로깅할지 여부와 위치를 지정합니다. 차이를 기록하지 않으려면 컨트롤러 로그 또는 None 의 차이를 기록하려면 Log 로 설정합니다. 기본적으로 이 매개변수는 차이를 기록하지 않기 위해 비어 있습니다.

policyDefaults.dependencies

선택 사항

이 정책을 적용하기 전에 특정 규정 준수 상태에 있어야 하는 오브젝트 목록입니다. policyDefaults.orderPoliciestrue 로 설정된 경우 지정할 수 없습니다.

policyDefaults.dependencies[].name

필수 항목

종속되는 오브젝트의 이름입니다.

policyDefaults.dependencies[].namespace

선택 사항

종속되는 오브젝트의 네임스페이스입니다. 기본값은 정책 생성기에 설정된 정책의 네임스페이스입니다.

policyDefaults.dependencies[].compliance

선택 사항

오브젝트가 있어야 하는 규정 준수 상태입니다. 기본값은 Compliant 입니다.

policyDefaults.dependencies[].kind

선택 사항

오브젝트의 종류입니다. 기본적으로 kind는 Policy 로 설정되지만 ConfigurationPolicy 와 같은 규정 준수 상태가 있는 다른 종류일 수도 있습니다.

policyDefaults.dependencies[].apiVersion

선택 사항

오브젝트의 API 버전입니다. 기본값은 policy.open-cluster-management.io/v1 입니다.

policyDefaults.description

선택 사항

생성할 정책에 대한 설명입니다.

policyDefaults.extraDependencies

선택 사항

이 정책을 적용하기 전에 특정 규정 준수 상태에 있어야 하는 오브젝트 목록입니다. 정의한 종속 항목은 종속 항목 목록과 별도로 각 정책 템플릿(예: ConfigurationPolicy)에 추가됩니다. policyDefaults.orderManifeststrue 로 설정된 경우 지정할 수 없습니다.

policyDefaults.extraDependencies[].name

필수 항목

종속되는 오브젝트의 이름입니다.

policyDefaults.extraDependencies[].namespace

선택 사항

종속되는 오브젝트의 네임스페이스입니다. 기본적으로 값은 정책 생성기에 설정된 정책의 네임스페이스로 설정됩니다.

policyDefaults.extraDependencies[].compliance

선택 사항

오브젝트가 있어야 하는 규정 준수 상태입니다. 기본값은 Compliant 입니다.

policyDefaults.extraDependencies[].kind

선택 사항

오브젝트의 종류입니다. 기본값은 Policy 이지만 ConfigurationPolicy 와 같은 규정 준수 상태가 있는 다른 종류일 수도 있습니다.

policyDefaults.extraDependencies[].apiVersion

선택 사항

오브젝트의 API 버전입니다. 기본값은 policy.open-cluster-management.io/v1 입니다.

policyDefaults.ignorePending

선택 사항

정책 생성기가 원하는 상태에 도달하기 위해 종속성을 기다리는 경우 규정 준수 상태 검사를 바이패스합니다. 기본값은 false입니다.

policyDefaults.orderPolicies

선택 사항

정책 목록에 정의된 순서대로 적용되도록 정책에 대한 종속성 을 자동으로 생성합니다. 기본적으로 값은 false 로 설정됩니다. policyDefaults.dependencies 와 동시에 지정할 수 없습니다.

policyDefaults.orderManifests

선택 사항

정책 템플릿에 대한 추가 종속성을 자동으로 생성하여 해당 정책의 매니페스트 목록에 정의된 순서대로 적용됩니다. policyDefaults.consolidateManifeststrue 로 설정된 경우 지정할 수 없습니다. policyDefaults.extraDependencies 와 동시에 지정할 수 없습니다.

policyDefaults.consolidateManifests

선택 사항

이는 정책에서 래핑되는 모든 매니페스트에 대해 단일 구성 정책이 생성되었는지 여부를 결정합니다. false 로 설정하면 매니페스트당 구성 정책이 생성됩니다. 기본값은 true입니다.

policyDefaults.informGatekeeperPolicies (더 이상 사용되지 않음)

선택 사항

구성 정책에서 GatekeeperPolicies를 직접 정의하지 않고 Gatekeeper 매니페스트를 직접 사용하려면 informGatekeeperPolicies 를 false로 설정합니다. 정책이 위반된 Gatekeeper 정책 매니페스트를 참조하는 경우 Red Hat Advanced Cluster Management에서 정책 위반을 받기 위해 추가 구성 정책이 생성됩니다. 기본값은 true입니다.

policyDefaults.informKyvernoPolicies

선택 사항

정책이 Kyverno 정책 매니페스트를 참조하는 경우 Kyverno 정책이 위반될 때 Red Hat Advanced Cluster Management에서 정책 위반을 수신하기 위해 추가 구성 정책이 생성되었는지 여부를 결정합니다. 기본값은 true입니다.

policyDefaults.policyLabels

선택 사항

정책에 metadata.labels 섹션에 포함된 레이블입니다. policyLabels 매개변수는 정책에 지정되지 않는 한 모든 정책에 적용됩니다.

policyDefaults.policySets

선택 사항

정책이 결합되는 정책의 배열입니다. 정책 세트 세부 정보는 policySets 섹션에 정의할 수 있습니다. 정책이 정책 세트의 일부인 경우 세트에 대해 생성되므로 정책에 대한 배치 바인딩이 생성되지 않습니다. policy Defaults .policySets 를 덮어쓰도록 policies[].generatePlacementAllSet 또는 policyDefaults.generatePlacementAllInSet 을 설정합니다.

policyDefaults.generatePolicyPlacement

선택 사항

정책에 대한 배치 매니페스트를 생성합니다. 기본적으로 true 로 설정합니다. false 로 설정하면 배치가 지정된 경우에도 배치 매니페스트 생성을 건너뜁니다.

policyDefaults.generatePlacementWhenInSet

선택 사항

정책이 정책 세트의 일부인 경우 기본적으로 생성기는 정책 세트에 대한 배치가 생성되므로 이 정책에 대한 배치를 생성하지 않습니다. 정책 배치 및 정책 세트 배치와 함께 정책을 배포하려면 generatePlacementIfInSettrue 로 설정합니다. 기본값은 false입니다.

policyDefaults.placement

선택 사항

정책에 대한 배치 구성입니다. 기본값은 모든 클러스터와 일치하는 배치 구성입니다.

policyDefaults.placement.name

선택 사항

동일한 클러스터 라벨 선택기가 포함된 배치를 통합할 이름을 지정합니다.

policyDefaults.placement.labelSelector

선택 사항

key:value 를 사용하여 클러스터 라벨 선택기를 정의하거나 matchExpressions,matchLabels 또는 둘 다 적절한 값을 제공하여 배치를 지정합니다. 기존 파일을 지정하려면 placementPath 를 참조하십시오.

policyDefaults.placement.placementName

선택 사항

클러스터에 이미 존재하는 배치를 사용하도록 이 매개 변수를 정의합니다. 배치 가 생성되지 않지만 Placement Binding 은 정책을 이 배치에 바인딩합니다.

policyDefaults.placement.placementPath

선택 사항

기존 배치를 재사용하려면 kustomization.yaml 파일의 위치를 기준으로 경로를 지정합니다. 제공되는 경우 이 배치는 기본적으로 모든 정책에서 사용됩니다. 새 배치를 생성하려면 labelSelector 를 참조하십시오.

policyDefaults.placement.clusterSelector (더 이상 사용되지 않음)

선택 사항

PlacementRule 은 더 이상 사용되지 않습니다. 대신 labelSelector 를 사용하여 배치를 생성합니다. key:value 를 사용하거나 matchExpressions,matchLabels 또는 둘 다 적절한 값을 제공하여 클러스터 선택기를 정의하여 배치 규칙을 지정합니다. 기존 파일을 지정하려면 placementRulePath 를 참조하십시오.

policyDefaults.placement.placementRuleName (더 이상 사용되지 않음)

선택 사항

PlacementRule 은 더 이상 사용되지 않습니다. 또는 placementName 을 사용하여 배치를 지정합니다. 클러스터에서 기존 배치 규칙을 사용하려면 이 매개변수의 이름을 지정합니다. PlacementRule 은 생성되지 않지만 PlacementBinding 은 정책을 기존 PlacementRule 에 바인딩합니다.

policyDefaults.placement.placementRulePath (더 이상 사용되지 않음)

선택 사항

PlacementRule 은 더 이상 사용되지 않습니다. 또는 placementPath 를 사용하여 배치를 지정합니다. 기존 배치 규칙을 재사용하려면 kustomization.yaml 파일의 위치와 관련된 경로를 지정합니다. 제공되는 경우 이 배치 규칙은 기본적으로 모든 정책에서 사용됩니다. 새 PlacementRule 을 생성하려면 clusterSelector 를 참조하십시오.

policySetDefaults

선택 사항

정책 세트의 기본값입니다. 이 매개변수에 나열된 기본값은 policySets 배열의 항목으로 재정의됩니다.

policySetDefaults.placement

선택 사항

정책에 대한 배치 구성입니다. 기본값은 모든 클러스터와 일치하는 배치 구성입니다. 이 필드에 대한 설명은 policyDefaults.placement 를 참조하십시오.

policySetDefaults.generatePolicySetPlacement

선택 사항

정책 세트에 대한 배치 매니페스트를 생성합니다. 기본적으로 true 로 설정합니다. false 로 설정하면 배치가 지정된 경우에도 배치 매니페스트 생성을 건너뜁니다.

Policies

필수 항목

생성할 정책 목록은 기본값 또는 policyDefaults 에 설정된 값에 대한 덮어쓰기입니다. 추가 필드 및 설명은 policyDefaults 를 참조하십시오.

policies.description

선택 사항

생성할 정책에 대한 설명입니다.

policies[].name

필수 항목

생성할 정책의 이름입니다.

policies[].manifests

필수 항목

정책에 포함할 Kubernetes 오브젝트 매니페스트 목록, 기본값, 이 정책 항목에 설정된 값 또는 policyDefaults 에 설정된 값에 대한 재정의입니다. 추가 필드 및 설명은 policyDefaults 를 참조하십시오. consolidateManifeststrue 로 설정된 경우 complianceType,metadataComplianceTyperecordDiffpolicies[].manifests 수준에서 재정의할 수 있습니다.

policies[].manifests[].path

필수 항목

단일 파일의 경로, 파일의 플랫 디렉터리 또는 kustomization.yaml 파일을 기준으로 Kustomize 디렉터리입니다. 디렉터리가 Kustomize 디렉터리인 경우 생성기는 정책을 생성하기 전에 디렉터리에 대해 Kustomize를 실행합니다. Kustomize 디렉터리의 Helm 차트를 처리해야 하는 경우 정책 생성기가 실행 중인 환경에서 POLICY_GEN_ENABLE_HELM"true" 로 설정하여 정책 생성기가 Helm을 활성화하도록 설정합니다.

policies[].manifests[].patches

선택 사항

경로의 매니페스트에 적용할 Kustomize 패치 목록입니다. 매니페스트가 여러 개인 경우 패치에 apiVersion,kind,metadata.name, metadata.namespace (해당하는 경우) 필드가 설정되어 Kustomize가 패치가 적용되는 매니페스트를 식별할 수 있습니다. 단일 매니페스트가 있는 경우 metadata.namemetadata.namespace 필드를 패치할 수 있습니다.

policies.policyLabels

선택 사항

정책에 metadata.labels 섹션에 포함된 레이블입니다. policyLabels 매개변수는 정책에 지정되지 않는 한 모든 정책에 적용됩니다.

policySets

선택 사항

생성할 정책 세트 목록과 기본값 또는 policySetDefaults 에 설정된 값에 대한 덮어쓰기입니다. 정책 세트에 정책을 포함하려면 policyDefaults.policySets,policies[].policySets 또는 policySets.policies 를 사용합니다. 추가 필드 및 설명은 policySetDefaults 를 참조하십시오.

policySets[].name

필수 항목

생성할 정책의 이름입니다.

policySets[].description

선택 사항

생성할 정책의 설명입니다.

policySets[].policies

선택 사항

정책 세트에 포함할 정책 목록입니다. policyDefaults.policySets 또는 policies[].policySets 도 지정된 경우 목록이 병합됩니다.

4.1.4. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.