2.3. hub 클러스터 정책 프레임워크


정책을 생성 및 관리하고, 표준을 충족하기 위한 구성 가시성 및 수정을 얻으려면 Kubernetes 거버넌스 보안 정책 프레임워크에 Red Hat Advanced Cluster Management를 사용하십시오. Red Hat Advanced Cluster Management for Kubernetes 거버넌스는 기업이 자체 보안 정책을 도입할 수 있는 확장 가능한 정책 프레임워크를 제공합니다.

관리 클러스터 네임스페이스를 제외한 허브 클러스터의 모든 네임스페이스에 Policy 리소스를 생성할 수 있습니다. 관리형 클러스터 네임스페이스에 정책을 생성하면 Red Hat Advanced Cluster Management에서 삭제됩니다. 각 Red Hat Advanced Cluster Management 정책은 하나 이상의 정책 템플릿 정의로 구성할 수 있습니다. 정책 요소에 대한 자세한 내용은 이 페이지의 Policy YAML 테이블 섹션을 참조하십시오.

2.3.1. 요구 사항

  • 각 정책에는 정책 문서가 적용되는 클러스터를 정의하는 배치 리소스와 Kubernetes 정책에 대한 Red Hat Advanced Cluster Management를 바인딩하는 PlacementBinding 리소스가 필요합니다.

    정책 리소스는 관련 배치 정의를 기반으로 클러스터에 적용되며 특정 기준과 일치하는 관리 클러스터 목록을 볼 수 있습니다. environment=dev 레이블이 있는 모든 클러스터와 일치하는 샘플 배치 리소스는 다음 YAML과 유사합니다.

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: placement-policy-role
    spec:
      predicates:
      - requiredClusterSelector:
        labelSelector:
        matchExpressions:
          - {key: environment, operator: In, values: ["dev"]}
        tolerations:
            - key: cluster.open-cluster-management.io/unavailable
              operator: Exists
            - key: cluster.open-cluster-management.io/unreachable
              operator: Exists
    Copy to Clipboard Toggle word wrap

    배치 및 지원되는 기준에 대한 자세한 내용은 클러스터 라이프사이클 설명서의 배치 개요 를 참조하십시오.

  • 배치 리소스 외에도 배치 리소스를 정책에 바인딩할 Placement Binding 을 생성해야 합니다. environment=dev 레이블이 있는 모든 클러스터와 일치하는 샘플 배치 리소스는 다음 YAML과 유사합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-policy-role
    placementRef:
      name: placement-policy-role 
    1
    
      kind: Placement
      apiGroup: cluster.open-cluster-management.io
    subjects: 
    2
    
    - name: policy-role
      kind: Policy
      apiGroup: policy.open-cluster-management.io
    Copy to Clipboard Toggle word wrap
    1
    이전 샘플을 사용하는 경우 placementRef 섹션에서 배치 리소스의 이름을 업데이트하여 배치 이름과 일치하는지 확인합니다.
    2
    정책 이름과 일치하도록 제목 섹션에서 정책 이름을 업데이트해야 합니다. oc apply -f resource.yaml -n namespace 명령을 사용하여 PlacementPlacementbinding 리소스를 모두 적용합니다. 정책, 배치 및 배치 바인딩이 모두 동일한 네임스페이스에 생성되었는지 확인합니다.
  • 배치 리소스를 사용하려면 ManagedClusterSet 리소스를 ManagedClusterSet 리소스와 함께 배치 리소스의 네임스페이스에 바인딩 해야 합니다. 자세한 내용은 Creating a ManagedClusterSetBinding 리소스 를 참조하십시오.
  • 콘솔에서 정책에 대한 배치 리소스를 생성하면 배치 허용 오차의 상태가 배치 리소스에 자동으로 추가됩니다. 자세한 내용은 배치에 허용 오차 추가를 참조하십시오.

모범 사례: CLI(명령줄 인터페이스)를 사용하여 배치 리소스를 사용할 때 정책을 업데이트합니다.

2.3.2. hub 클러스터 정책 구성 요소

정책 구성 요소에 대한 자세한 내용은 다음 섹션에서 확인하십시오.

2.3.2.1. 정책 YAML 구조

정책을 생성할 때 필수 매개변수 필드 및 값을 포함해야 합니다. 정책 컨트롤러에 따라 다른 선택적 필드 및 값을 포함해야 할 수 있습니다. 정책에 대해 다음 YAML 구조를 확인합니다.

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name:
  annotations:
    policy.open-cluster-management.io/standards:
    policy.open-cluster-management.io/categories:
    policy.open-cluster-management.io/controls:
    policy.open-cluster-management.io/description:
spec:
  disabled:
  remediationAction:
  dependencies:
  - apiVersion: policy.open-cluster-management.io/v1
    compliance:
    kind: Policy
    name:
    namespace:
  policy-templates:
    - objectDefinition:
        apiVersion:
        kind:
        metadata:
          name:
        spec:
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
bindingOverrides:
  remediationAction:
subFilter:
  name:
placementRef:
  name:
  kind: Placement
  apiGroup: cluster.open-cluster-management.io
subjects:
- name:
  kind:
  apiGroup:
---
apiVersion: cluster.open-cluster-management.io/v1beta1
kind: Placement
metadata:
  name:
spec:
Copy to Clipboard Toggle word wrap

2.3.2.2. 정책 YAML 테이블

정책 매개변수 설명에 대해 다음 표를 확인하십시오.

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

apiVersion

필수 항목

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

kind

필수 항목

정책 유형을 나타내려면 값을 Policy 로 설정합니다.

metadata.name

필수 항목

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

metadata.annotations

선택 사항

정책의 유효성을 검사하려는 표준 집합을 설명하는 보안 세부 정보 집합을 지정하는 데 사용됩니다. 여기에 설명된 모든 주석은 쉼표로 구분된 목록이 포함된 문자열로 표시됩니다.

참고: 정책 페이지에서 정책에 대해 정의한 표준 및 카테고리에 따라 정책 위반을 볼 수 있습니다.

bindingOverrides.remediationAction

선택 사항

이 매개변수를 적용 하도록 설정하면 구성 정책에 대한 관련 PlacementBinding 리소스의 수정 작업을 재정의할 수 있는 방법을 제공합니다. 기본값은 null 입니다.

subFilter

선택 사항

바인딩된 정책의 하위 집합을 선택하려면 이 매개변수를 restriction 로 설정합니다. 기본값은 null 입니다.

annotations.policy.open-cluster-management.io/standards

선택 사항

정책과 관련된 보안 표준의 이름 또는 이름입니다. 예를 들어 NIST(National Institute of Standards and Technology) 및 PCI(Payment Card Industry)가 있습니다.

annotations.policy.open-cluster-management.io/categories

선택 사항

보안 제어 범주는 하나 이상의 표준에 대한 특정 요구 사항을 나타냅니다. 예를 들어 시스템 및 정보 무결성 카테고리는 HIPAA 및 PCI 표준에서 요구하는 대로 귀하의 정책에 개인정보를 보호하기 위한 데이터 전송 프로토콜이 포함되어 있음을 나타낼 수 있습니다.

annotations.policy.open-cluster-management.io/controls

선택 사항

확인 중인 보안 컨트롤의 이름입니다. 예를 들어, 액세스 제어 또는 시스템 및 정보 무결성.

spec.disabled

필수 항목

값을 true 또는 false 로 설정합니다. disabled 매개 변수는 정책을 활성화 및 비활성화하는 기능을 제공합니다.

spec.remediationAction

선택 사항

정책 수정을 지정합니다. 매개변수 값은 enforceinform 입니다. 지정된 경우 정의된 spec.remediationAction 값은 policy-templates 섹션의 하위 정책에 정의된 모든 remediationAction 매개변수를 덮어씁니다. 예를 들어 spec.remediationAction 값이 적용 되도록 설정된 경우 policy-templates 섹션의 remediationAction 이 런타임 중에 적용 되도록 설정됩니다.

spec.copyPolicyMetadata

선택 사항

정책을 관리 클러스터에 복제할 때 정책의 라벨 및 주석을 복사해야 하는지 여부를 지정합니다. true 로 설정하면 정책의 모든 레이블 및 주석이 복제된 정책에 복사됩니다. false 로 설정하면 정책 프레임워크별 정책 레이블 및 주석만 복제된 정책에 복사됩니다.

spec.dependencies

선택 사항

규정 준수에 대한 추가 고려 사항에 따라 자세히 설명된 종속성 오브젝트 목록을 만드는 데 사용됩니다.

spec.policy-templates

필수 항목

관리 클러스터에 적용할 하나 이상의 정책을 생성하는 데 사용됩니다.

spec.policy-templates.extraDependencies

선택 사항

정책 템플릿의 경우 이는 규정 준수에 대한 추가 고려 사항에 자세히 설명된 종속성 오브젝트 목록을 생성하는 데 사용됩니다.

spec.policy-templates.ignorePending

선택 사항

종속성 기준을 확인할 때까지 정책 템플릿을 준수하는 것으로 표시하는 데 사용됩니다.

중요: 일부 정책 종류는 적용 기능을 지원하지 않을 수 있습니다.

2.3.2.3. 정책 샘플 파일

역할에 대한 구성 정책인 다음 YAML 파일을 확인합니다.

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-role
  annotations:
    policy.open-cluster-management.io/standards: NIST SP 800-53
    policy.open-cluster-management.io/categories: AC Access Control
    policy.open-cluster-management.io/controls: AC-3 Access Enforcement
    policy.open-cluster-management.io/description:
spec:
  remediationAction: inform
  disabled: false
  policy-templates:
    - objectDefinition:
        apiVersion: policy.open-cluster-management.io/v1
        kind: ConfigurationPolicy
        metadata:
          name: policy-role-example
        spec:
          remediationAction: inform # the policy-template spec.remediationAction is overridden by the preceding parameter value for spec.remediationAction.
          severity: high
          namespaceSelector:
            include: ["default"]
          object-templates:
            - complianceType: mustonlyhave # role definition should exact match
              objectDefinition:
                apiVersion: rbac.authorization.k8s.io/v1
                kind: Role
                metadata:
                  name: sample-role
                rules:
                  - apiGroups: ["extensions", "apps"]
                    resources: ["deployments"]
                    verbs: ["get", "list", "watch", "delete","patch"]
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name: binding-policy-role
placementRef:
  name: placement-policy-role
  kind: Placement
  apiGroup: cluster.open-cluster-management.io
subjects:
- name: policy-role
  kind: Policy
  apiGroup: policy.open-cluster-management.io
---
apiVersion: cluster.open-cluster-management.io/v1beta1
kind: Placement
metadata:
  name: placement-policy-role
spec:
  predicates:
  - requiredClusterSelector:
      labelSelector:
        matchExpressions:
        - {key: environment, operator: In, values: ["dev"]}
    tolerations:
        - key: cluster.open-cluster-management.io/unavailable
          operator: Exists
        - key: cluster.open-cluster-management.io/unreachable
          operator: Exists
Copy to Clipboard Toggle word wrap

2.3.3. 추가 리소스

Red Hat Advanced Cluster Management 거버넌스 프레임워크의 관련 주제를 계속 읽으십시오.

2.3.4. 정책 종속 항목

종속성은 클러스터의 다른 정책이 특정 상태에 있는 경우에만 정책을 활성화하는 데 사용할 수 있습니다. 종속성 기준이 충족되지 않으면 정책에 Pending 로 레이블이 지정되고 관리 클러스터에서 리소스가 생성되지 않습니다. 정책 상태의 기준 상태에 대한 자세한 내용이 있습니다.

정책 종속성을 사용하여 오브젝트 적용 방법을 제어할 수 있습니다. 예를 들어 운영자에 대한 정책과 운영자가 관리하는 리소스에 대한 다른 정책이 있는 경우 두 번째 정책에 대한 종속성을 설정하여 Operator가 설치될 때까지 리소스를 생성하지 않도록 할 수 있습니다. 이는 관리 클러스터의 성능에 도움이 될 수 있습니다.

필수 액세스: 정책 관리자

중요:

  • 다른 클러스터의 정책 상태에 따라 종속성을 사용하여 한 클러스터에 정책을 적용할 수 없습니다.
  • 마침표를 사용하여 정책 종속성을 생성하는 경우 이름에서 네임스페이스를 종속성 섹션의 이름 시작 부분에 추가하고 마침표를 따라야 합니다 . 예를 들어 이름이 지정된 기본 네임스페이스의 정책인 my-4.16-policydefault.my-4.16-policy.

upstream-compliance-operator 정책이 관리 클러스터에서 이미 호환되는 경우에만 ScanSettingBinding 이 생성되는 다음 정책 종속성 예제를 확인합니다.

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: moderate-compliance-scan
  namespace: default
spec:
  dependencies: 
1

  - apiVersion: policy.open-cluster-management.io/v1
    compliance: Compliant
    kind: Policy
    name: upstream-compliance-operator
    namespace: default
  disabled: false
  policy-templates:
  - extraDependencies: 
2

    - apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      name: scan-setting-prerequisite
      compliance: Compliant
    ignorePending: false 
3

    objectDefinition:
      apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name: moderate-compliance-scan
      spec:
        object-templates:
        - complianceType: musthave
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ScanSettingBinding
            metadata:
              name: moderate
              namespace: openshift-compliance
            profiles:
            - apiGroup: compliance.openshift.io/v1alpha1
              kind: Profile
              name: ocp4-moderate
            - apiGroup: compliance.openshift.io/v1alpha1
              kind: Profile
              name: ocp4-moderate-node
            settingsRef:
              apiGroup: compliance.openshift.io/v1alpha1
              kind: ScanSetting
              name: default
        remediationAction: enforce
        severity: low
Copy to Clipboard Toggle word wrap
1
dependencies 필드는 Policy 오브젝트에 설정되며 요구 사항은 정책의 모든 정책 템플릿에 적용됩니다.
2
개별 정책 템플릿에 extraDependencies 필드를 설정할 수 있습니다. 예를 들어 이 매개변수는 구성 정책에 대해 설정할 수 있으며 정책에 설정된 종속성 외에도 충족해야 하는 기준을 정의합니다.
3
ignorePending 필드는 각 개별 정책 템플릿에 설정할 수 있으며 전체 정책 규정 준수를 계산할 때 해당 템플릿의 Pending 상태가 Compliant 또는 NonCompliant 로 간주되는지 여부를 구성합니다. 기본적으로 이 값은 false 로 설정되고 Pending 템플릿에서 정책을 NonCompliant 로 설정합니다. 이 템플릿을 true 로 설정하면 이 템플릿이 Pending 이므로 템플릿의 예상 상태가 될 때 유용합니다.

2.3.5. 정책 생성기 통합

Policy Generator를 통합하여 Kubernetes 정책에 대한 Red Hat Advanced Cluster Management를 자동으로 빌드할 수 있습니다. 정책 생성기를 통합하려면 정책 생성기를 참조하십시오. ???

정책 생성기로 수행할 수 있는 작업의 예는 Compliance Operator를 설치하는 정책 생성을 참조하십시오.

2.3.6. 정책 생성기

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

정책 생성기에 대한 자세한 내용은 다음 섹션을 참조하십시오.

2.3.6.1. 정책 생성기 기능

Policy Generator와 Red Hat Advanced Cluster Management 애플리케이션 라이프사이클 서브스크립션 OpenShift 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 정책 위반에 대해 보고할 수 있도록 추가 구성 정책을 생성합니다.
  • 허브 클러스터에서 정책 세트를 생성합니다.

2.3.6.2. 정책 생성기 구성 구조

정책 생성기는 PolicyGenerator 종류 및 policy.open-cluster-management.io/v1 API 버전의 매니페스트로 구성된 Kustomize 생성기 플러그인입니다. 구성 구조에 대해 알아보려면 계속 읽습니다.

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

    generators:
      - policy-generator-config.yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    이전 예에서 참조되는 policy-generator-config.yaml 파일은 생성할 정책의 지침이 있는 YAML 파일입니다.
  • 간단한 PolicyGenerator 구성 파일은 policyDefaultspolicies 와 다음 예와 유사할 수 있습니다.

    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 
    1
    Copy to Clipboard Toggle word wrap
    1
    configmap.yaml 파일은 정책에 포함할 Kubernetes 매니페스트 YAML 파일을 나타냅니다. 또는 경로를 Kustomize 디렉터리 또는 여러 Kubernetes 매니페스트 YAML 파일이 있는 디렉터리를 설정할 수 있습니다. 다음 ConfigMap 예제를 확인합니다.
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-config
      namespace: default
    data:
      key1: value1
      key2: value2
    Copy to Clipboard Toggle word wrap
  • object-templates-raw 매니페스트를 사용하여 추가한 콘텐츠로 ConfigurationPolicy 리소스를 자동으로 생성할 수 있습니다. 예를 들어 다음 구문을 사용하여 매니페스트 파일을 생성할 수 있습니다.

    object-templates-raw: |
      {{- range (lookup "v1" "ConfigMap" "my-namespace" "").items }}
      - complianceType: musthave
        objectDefinition:
          kind: ConfigMap
          apiVersion: v1
          metadata:
            name: {{ .metadata.name }}
            namespace: {{ .metadata.namespace }}
            labels:
              i-am-from: template
      {{- end }}
    Copy to Clipboard Toggle word wrap
  • 매니페스트 파일을 생성한 후 PolicyGenerator 구성 파일을 생성할 수 있습니다. 다음 YAML 예제 및 경로 에서는 manifest.yaml 파일의 경로를 입력합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: PolicyGenerator
    metadata:
      name: config-data-policies
    policyDefaults:
      namespace: policies
      policySets: []
    policies:
      - name: config-data
        manifests:
          - path: manifest.yaml
    Copy to Clipboard Toggle word wrap
  • 생성된 정책 리소스 및 생성된 배치 리소스 및 Placement Binding 리소스는 다음 예와 유사할 수 있습니다. 참고: 리소스에 대한 사양은 Policy Generator 구성 참조 테이블에 설명되어 있습니다.

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: placement-config-data
      namespace: policies
    spec:
      predicates:
      - requiredClusterSelector:
          labelSelector:
            matchExpressions: []
        tolerations:
            - key: cluster.open-cluster-management.io/unavailable
              operator: Exists
            - key: cluster.open-cluster-management.io/unreachable
              operator: Exists
    ---
    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
    Copy to Clipboard Toggle word wrap

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

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

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

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.customMessage

선택 사항

현재 규정 준수에 따라 지정된 Go 템플릿 중 하나를 사용하도록 구성 정책에서 내보내는 규정 준수 메시지를 구성합니다.

policyDefaults.severity

선택 사항

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

policyDefaults.disabled

선택 사항

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

policyDefaults.remediationAction

선택 사항

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

policyDefaults.namespaceSelector

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

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

policyDefaults.objectSelector

선택 사항

오브젝트 Definition 에 정의된 오브젝트의 라벨 선택기를 정의합니다. 오브젝트 Definition에 정의된 오브젝트 이름이 있는 경우 object Selector 는 무시됩니다.

policyDefaults.evaluationInterval

선택 사항

특정 규정 준수 상태에 있을 때 평가할 정책의 빈도를 지정합니다. 매개변수 준수비준 수를 사용합니다. 규정 준수비준수 매개변수의 기본값은 Kubernetes API 서버를 폴링하는 대신 Kubernetes API 감시를 활용하는 것입니다.

관리 클러스터에 리소스가 부족하면 Kubernetes API 및 정책 컨트롤러에서 CPU 및 메모리 사용량을 줄이기 위해 평가 간격을 긴 폴링 간격으로 설정할 수 있습니다. 이는 기간 단위의 형식입니다. 예를 들어 1h25m3s 는 1시간, 25분, 3초를 나타냅니다. 또한 특정 규정 준수 상태에 있는 정책을 평가하지 않도록 never 로 설정할 수도 있습니다.

policyDefaults.evaluationInterval.compliant

선택 사항

규정 준수 정책의 평가 빈도를 지정합니다. 이전 폴링 동작을 활성화하려면 이 매개변수를 10s 로 설정합니다.

policyDefaults.evaluationInterval.noncompliant

선택 사항

준수하지 않는 정책의 평가 빈도를 지정합니다. 이전 폴링 동작을 활성화하려면 이 매개변수를 10s 로 설정합니다.

policyDefaults.pruneObjectBehavior

선택 사항

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

policyDefaults.recreateOption

선택 사항

업데이트가 필요할 때 오브젝트를 삭제하고 다시 생성할지 여부를 설명합니다. IfRequired 값은 변경할 수 없는 필드를 업데이트할 때 오브젝트를 다시 생성합니다. 시험 실행 업데이트 지원이 없으면 IfRequired 가 클러스터에 영향을 미치지 않습니다. 불일치가 감지되면 항상 개체를 다시 생성합니다.

recreate Option 값이 적용되지 않음을 알리기 위해 remediationAction 매개변수가 설정된 경우 기본값은 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.gatekeeperEnforcementAction

선택 사항

Gatekeeper 제약 조건의 spec.enforcementAction 필드를 재정의합니다. 이는 Gatekeeper 제약 조건에만 적용되며 다른 매니페스트에서 무시합니다. 설정하지 않으면 spec.enforcementAction 필드가 변경되지 않습니다.

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_HELMtrue 로 설정하여 정책 생성기에 대해 Helm을 활성화합니다.

지원되는 매니페스트는 다음과 같습니다.

  • Policy 접미사가 있는 CertificatePolicy,ConfigurationPolicy,OperatorPolicy 와 같은 루트가 아닌 정책 유형 매니페스트입니다. 이전 매니페스트는 패치를 제외한 수정되지 않으며 Policy 리소스의 policy-templates 항목으로 직접 추가됩니다. gatekeeper 제약 조건은 informGatekeeperPoliciesfalse 로 설정된 경우에도 직접 포함됩니다.
  • object-templates-raw 키만 포함하는 매니페스트입니다. 해당 값은 수정 없이 생성된 ConfigurationPolicy 리소스에서 직접 사용되며 Policy 항목의 policy-templates 항목으로 추가됩니다.
  • 기타 모든 경우 ConfigurationPolicy 오브젝트는 이전에 언급된 매니페스트를 래핑하기 위해 생성됩니다. 결과 ConfigurationPolicy 매니페스트는 Policy 리소스의 policy-templates 항목으로 추가됩니다.

policies[].manifests[].name

선택 사항

ConsolidateManifestsfalse 로 설정된 경우 ConfigurationPolicy 리소스 이름으로 사용됩니다. 경로에 여러 매니페스트가 있는 경우 인덱스 번호가 추가됩니다. 여러 매니페스트가 있고 해당 이름이 제공되면 consolidateManifeststrue 로 설정된 경우 모든 매니페스트 경로에 첫 번째 매니페스트 이름이 사용됩니다.

policies[].manifests[].patches

선택 사항

경로의 매니페스트에 적용할 Kustomize 패치 목록입니다. 매니페스트가 여러 개인 경우 패치에는 apiVersion,kind,metadata.name, metadata.namespace 필드가 필요합니다. Kustomize 패치가 올바른 매니페스트에 적용되도록 하려면 이전에 지정된 필드의 값을 설정합니다. 단일 매니페스트가 있는 경우 metadata.namemetadata.namespace 매개변수를 패치할 수 있습니다. 자세한 내용은 전략적 병합 패치에 대한 Kustomize 설명서 를 참조하십시오.

policies[].manifests[].openapi.path

선택 사항

openapi.path 필드를 사용하여 매니페스트 패치 적용 시 사용할 OpenAPI 스키마 파일의 경로를 지정합니다. 이 기능은 사용자 지정 리소스의 배열을 패치할 때 유용합니다. 자세한 내용은 openapi에 대한 Kustomize 설명서 를 참조하십시오.

policies.policyLabels

선택 사항

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

policySets

선택 사항

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

policySets[].name

필수 항목

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

policySets[].description

선택 사항

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

policySets[].policies

선택 사항

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

2.3.6.4. 추가 리소스

2.3.7. Compliance Operator를 설치하는 정책 생성

클러스터에 Compliance Operator를 설치하는 정책을 생성합니다. Compliance Operator와 같이 네임스페이스 가 지정된 설치 모드를 사용하는 Operator의 경우 OperatorGroup 매니페스트도 필요합니다.

다음 단계를 완료합니다.

  1. 네임스페이스, 서브스크립션compliance-operator.yaml 이라는 OperatorGroup 매니페스트를 사용하여 YAML 파일을 생성합니다. 다음 예제에서는 이러한 매니페스트를 compliance-operator 네임스페이스에 설치합니다. & lt;release-0.x>를 올바른 채널로 바꿉니다.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-compliance
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
        - openshift-compliance
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      channel: <release-0.x>
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    Copy to Clipboard Toggle word wrap
  2. PolicyGenerator 구성 파일을 생성합니다. 모든 OpenShift Container Platform 관리 클러스터에 Compliance Operator를 설치하는 다음 PolicyGenerator 정책 예를 확인합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: PolicyGenerator
    metadata:
      name: install-compliance-operator
    policyDefaults:
      namespace: policies
      placement:
        labelSelector:
          matchExpressions:
            - key: vendor
              operator: In
              values:
                - "OpenShift"
    policies:
      - name: install-compliance-operator
        manifests:
          - path: compliance-operator.yaml
    Copy to Clipboard Toggle word wrap
  3. kustomization.yaml 파일에 정책 생성기를 추가합니다. generators 섹션은 다음 구성과 유사할 수 있습니다.

    generators:
      - policy-generator-config.yaml
    Copy to Clipboard Toggle word wrap

    결과적으로 생성된 정책은 다음 파일과 유사합니다.

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: placement-install-compliance-operator
      namespace: policies
    spec:
      predicates:
      - requiredClusterSelector:
          labelSelector:
            matchExpressions:
            - key: vendor
              operator: In
              values:
              - OpenShift
        tolerations:
            - key: cluster.open-cluster-management.io/unavailable
              operator: Exists
            - key: cluster.open-cluster-management.io/unreachable
              operator: Exists
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-install-compliance-operator
      namespace: policies
    placementRef:
      apiGroup: cluster.open-cluster-management.io
      kind: Placement
      name: placement-install-compliance-operator
    subjects:
      - apiGroup: policy.open-cluster-management.io
        kind: Policy
        name: install-compliance-operator
    ---
    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: install-compliance-operator
      namespace: policies
    spec:
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: install-compliance-operator
            spec:
              object-templates:
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: v1
                    kind: Namespace
                    metadata:
                      name: openshift-compliance
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: operators.coreos.com/v1alpha1
                    kind: Subscription
                    metadata:
                      name: compliance-operator
                      namespace: openshift-compliance
                    spec:
                      channel: <release-0.x>
                      name: compliance-operator
                      source: redhat-operators
                      sourceNamespace: openshift-marketplace
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: operators.coreos.com/v1
                    kind: OperatorGroup
                    metadata:
                      name: compliance-operator
                      namespace: openshift-compliance
                    spec:
                      targetNamespaces:
                        - compliance-operator
              remediationAction: enforce
              severity: low
    Copy to Clipboard Toggle word wrap

2.3.8. 거버넌스 정책 프레임워크 아키텍처

Kubernetes 거버넌스 라이프사이클에 대한 Red Hat Advanced Cluster Management를 사용하여 클러스터의 보안을 강화합니다. 제품 거버넌스 라이프사이클은 지원되는 정책, 프로세스 및 절차를 사용하여 중앙 인터페이스 페이지에서 보안 및 규정 준수를 관리합니다. 거버넌스 아키텍처의 다음 다이어그램을 확인하십시오.

Governance architecture diagram

거버넌스 아키텍처 다이어그램에 대한 다음 구성 요소 설명을 확인합니다.

  • 거버넌스 정책 프레임워크: 이전 이미지는 관리 클러스터에서 governance-policy-framework Pod로 실행되고 다음 컨트롤러가 포함된 프레임워크를 나타냅니다.

    • spec 동기화 컨트롤러: 허브 클러스터의 관리 클러스터 네임스페이스에서 복제된 정책을 관리 클러스터의 관리형 클러스터 네임스페이스로 동기화합니다.
    • 상태 동기화 컨트롤러: 허브 및 관리 클러스터에서 복제된 정책의 정책 컨트롤러에서 규정 준수 이벤트를 기록합니다. 상태에는 현재 정책과 관련된 업데이트만 포함되어 있으며 정책이 삭제되고 다시 생성되는 경우 이전 상태를 고려하지 않습니다.
    • 템플릿 동기화 컨트롤러: 복제된 정책 spec.policy-templates 항목의 정의를 기반으로 관리형 클러스터의 관리형 클러스터 네임스페이스에서 오브젝트를 생성, 업데이트, 삭제합니다.
    • Gatekeeper 동기화 컨트롤러: 해당 Red Hat Advanced Cluster Management 정책의 규정 준수 이벤트로 Gatekeeper 제약 조건 감사 결과를 기록합니다.
  • 정책 전파 컨트롤러: Red Hat Advanced Cluster Management Hub 클러스터에서 실행되며 루트 정책에 바인딩된 배치를 기반으로 허브의 관리 클러스터 네임스페이스에 복제 정책을 생성합니다. 또한 복제된 정책의 규정 준수 상태를 루트 정책 상태로 집계하고 루트 정책에 바인딩된 정책 자동화를 기반으로 자동화를 시작합니다.
  • 거버넌스 정책 애드온 컨트롤러: Red Hat Advanced Cluster Management Hub 클러스터에서 실행되며 관리 클러스터에 정책 컨트롤러 설치를 관리합니다.

2.3.8.1. 거버넌스 아키텍처 구성 요소

거버넌스 아키텍처에는 다음 구성 요소도 포함됩니다.

  • 거버넌스 대시보드: 클라우드 거버넌스 및 위험 세부 정보에 대한 요약을 제공합니다. 여기에는 정책 및 클러스터 위반이 포함됩니다. Kubernetes 정책 프레임워크용 Red Hat Advanced Cluster Management의 구조와 Kubernetes 거버넌스용 Red Hat Advanced Cluster Management 대시보드 사용 방법에 대해서는 Manage Governance dashboard 섹션을 참조하십시오.

    참고:

    • 정책이 관리 클러스터로 전파되면 먼저 hub 클러스터의 클러스터 네임스페이스에 복제되며 namespaceName.policyName 을 사용하여 이름이 지정되고 레이블이 지정됩니다. 정책을 생성할 때 레이블 값에 대한 Kubernetes 길이 제한으로 인해 namespaceName.policyName 의 길이가 63자를 초과하지 않는지 확인합니다.
    • hub 클러스터에서 정책을 검색할 때 관리 클러스터 네임스페이스에서 복제된 정책의 이름을 수신할 수도 있습니다. 예를 들어 기본 네임스페이스에서 policy-dhaz-cert 를 검색하는 경우 hub 클러스터의 다음 정책 이름도 관리 클러스터 네임스페이스 default.policy-dhaz-cert 에 표시될 수 있습니다.
  • 정책 기반 거버넌스 프레임워크: 지리적 리전과 같은 클러스터와 관련된 속성을 기반으로 다양한 관리형 클러스터에 정책 생성 및 배포를 지원합니다. 오픈 소스 커뮤니티에서 클러스터에 정책을 배포하는 방법에 대한 사전 정의된 정책의 예가 있습니다. 또한 정책을 위반하는 경우 사용자가 선택한 작업을 실행하고 수행하도록 자동화를 구성할 수 있습니다.
  • 오픈 소스 커뮤니티: Red Hat Advanced Cluster Management 정책 프레임워크를 기반으로 커뮤니티 기여를 지원합니다. 정책 컨트롤러 및 타사 정책은 open-cluster-management-io 프로젝트의 일부이기도 합니다. GitOps를 사용하여 정책을 기여하고 배포할 수 있습니다.

2.3.8.2. 추가 리소스

2.3.9. 거버넌스 대시보드

Governance 대시보드를 사용하여 리소스를 생성, 보기 및 편집하여 보안 정책 및 정책 위반을 관리합니다. 명령줄 및 콘솔에서 정책에 대한 YAML 파일을 생성할 수 있습니다. 콘솔에서 Governance 대시보드에 대한 자세한 내용은 계속 읽습니다.

2.3.9.1. 거버넌스 페이지

다음 탭은 Governance 페이지 개요,정책 세트 및 정책에 표시됩니다. 다음 설명을 읽고 표시되는 정보를 확인합니다.

  • 개요

    개요 탭에서 다음 요약 카드가 표시됩니다. 정책 세트 위반,정책 위반 ,클러스터, 범주 ,제어표준.

  • 정책 세트

    허브 클러스터 정책 세트를 생성하고 관리합니다.

  • Policies

    • 보안 정책을 생성 및 관리합니다. 정책 테이블에는 다음과 같은 정책 세부 정보가 나열됩니다. 이름 , 네임스페이스클러스터 위반이 표시됩니다.
    • 작업 아이콘을 선택하여 정책을 편집, 활성화 또는 비활성화, 알리거나 적용하도록 수정을 설정할 수 있습니다. 드롭다운 화살표를 선택하여 특정 정책의 카테고리 및 표준을 보고 행을 확장할 수 있습니다.
    • 관리 대화 상자에서 테이블 열을 다시 정렬합니다. 표시할 대화 상자의 열 관리 아이콘을 선택합니다. 열 순서를 다시 정렬하려면 순서 아이콘을 선택하고 열 이름을 이동합니다.To reorder your columns, select the Reorder icon and move the column name. 테이블에 표시할 열의 경우 특정 열 이름에 대한 확인란을 클릭하고 저장 버튼을 선택합니다.
    • 여러 정책을 선택하고 작업 버튼을 클릭하여 대량 작업을 완료합니다. 필터 버튼을 클릭하여 정책 테이블을 사용자 지정할 수도 있습니다.

      테이블 목록에서 정책을 선택하면 다음 정보 탭이 콘솔에 표시됩니다.

      • Details: 정책 세부 정보 및 배치 세부 정보를 보려면 세부 정보 탭을 선택합니다. 배치 테이블에서 규정 준수 열에는 표시되는 클러스터의 규정 준수를 볼 수 있는 링크가 있습니다.
      • 결과: 정책과 연결된 모든 클러스터의 테이블 목록을 보려면 결과 탭을 선택합니다.
  • Message 열에서 View details 링크를 클릭하여 템플릿 세부 정보, 템플릿 YAML 및 관련 리소스를 확인합니다. 관련 리소스도 볼 수 있습니다. 보기 기록 링크를 클릭하여 위반 메시지와 마지막 보고서의 시간을 확인합니다.

2.3.9.2. 거버넌스 자동화 구성

특정 정책에 맞게 구성된 자동화가 있는 경우 자동화를 선택하여 세부 정보를 볼 수 있습니다. 자동화를 위한 스케줄 빈도 옵션에 대한 다음 설명을 확인합니다.

  • 수동 실행: 수동으로 이 자동화를 한 번 실행하도록 설정합니다. 자동화가 실행된 후 disabled 로 설정됩니다. 참고: 일정 빈도가 비활성화된 경우에만 수동 실행 모드를 선택할 수 있습니다.
  • Run once mode: 정책을 위반하면 자동화가 한 번 실행됩니다. 자동화가 실행된 후 disabled 로 설정됩니다. 자동화가 disabled 로 설정된 후에는 자동화를 수동으로 계속 실행해야 합니다. 한 번 모드를 실행하면 target_clusters 의 추가 변수가 정책을 위반하는 클러스터 목록과 자동으로 제공됩니다. Ansible Automation Platform 작업 템플릿에는 EXTRA VARIABLES 섹션( extra_vars라고도 함 )에 대해 PROMPT ON Cryostat가 활성화되어 있어야 합니다.
  • 모든Event 모드 실행: 정책이 위반되면 관리 클러스터당 각 고유한 정책 위반에 대해 자동화가 실행될 때마다 실행됩니다. 동일한 클러스터에서 자동화를 다시 시작하기 전에 DelayAfterRunSeconds 매개변수를 사용하여 최소 초를 설정합니다. 정책이 지연 기간 동안 여러 번 위반되고 위반된 상태로 유지되는 경우 자동화는 지연 기간 후에 한 번 실행됩니다. 기본값은 0초이며 everyEvent 모드에만 적용됩니다. everyEvent 모드를 실행하면 target_clusters 및 Ansible Automation Platform 작업 템플릿의 추가 변수는 한 모드와 동일합니다.
  • 자동화 비활성화: 예약된 자동화가 disabled 로 설정된 경우 설정이 업데이트될 때까지 자동화가 실행되지 않습니다.

다음 변수는 Ansible Automation Platform 작업의 extra_vars 에 자동으로 제공됩니다.

  • policy_name: hub 클러스터에서 Ansible Automation Platform 작업을 시작하는 비호환 루트 정책의 이름입니다.
  • policy_namespace: 루트 정책의 네임스페이스입니다.
  • hub_cluster: 클러스터 DNS 오브젝트의 값에 따라 결정되는 허브 클러스터 의 이름입니다.
  • policy_sets: 이 매개변수에는 루트 정책의 모든 관련 정책 세트 이름이 포함됩니다. 정책이 정책 세트에 없는 경우 policy_set 매개변수가 비어 있습니다.
  • policy_violations: 이 매개변수에는 호환되지 않는 클러스터 이름 목록이 포함되어 있으며 값은 호환되지 않는 각 클러스터의 정책 상태 필드입니다.

2.3.9.3. 추가 리소스

보안 정책 생성 및 업데이트에 대한 자세한 내용은 다음 주제를 검토하십시오.

2.3.10. 구성 정책 생성

CLI(명령줄 인터페이스) 또는 콘솔에서 구성 정책에 대한 YAML 파일을 생성할 수 있습니다. 콘솔에서 구성 정책을 생성하면 YAML 편집기에 YAML 파일이 표시됩니다.

2.3.10.1. 사전 요구 사항

  • 필수 액세스: 관리자 또는 클러스터 관리자
  • 기존 Kubernetes 매니페스트가 있는 경우 정책 생성기를 사용하여 정책에 매니페스트를 자동으로 포함하는 것이 좋습니다. Policy Generator 설명서를 참조하십시오.

2.3.10.2. CLI에서 구성 정책 생성

(CLI)에서 구성 정책을 생성하려면 다음 단계를 완료합니다.

  1. 구성 정책에 대한 YAML 파일을 생성합니다. 다음 명령을 실행합니다.

    oc create -f configpolicy-1.yaml
    Copy to Clipboard Toggle word wrap

    구성 정책은 다음 정책과 유사할 수 있습니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-1
      namespace: my-policies
    policy-templates:
    - apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name: mustonlyhave-configuration
      spec:
        namespaceSelector:
          include: ["default"]
          exclude: ["kube-system"]
        remediationAction: inform
        disabled: false
        complianceType: mustonlyhave
        object-templates:
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 정책을 적용합니다.

    oc apply -f <policy-file-name>  --namespace=<namespace>
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 정책을 확인하고 나열합니다.

    oc get policies.policy.open-cluster-management.io --namespace=<namespace>
    Copy to Clipboard Toggle word wrap

구성 정책이 생성됩니다.

2.3.10.2.1. CLI에서 구성 정책 보기

CLI에서 구성 정책을 보려면 다음 단계를 완료합니다.

  1. 다음 명령을 실행하여 특정 구성 정책의 세부 정보를 확인합니다.

    oc get policies.policy.open-cluster-management.io <policy-name> -n <namespace> -o yaml
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 구성 정책에 대한 설명을 확인합니다.

    oc describe policies.policy.open-cluster-management.io <name> -n <namespace>
    Copy to Clipboard Toggle word wrap
2.3.10.2.2. 콘솔에서 구성 정책 보기

콘솔에서 구성 정책 및 해당 상태를 확인합니다.

콘솔에서 클러스터에 로그인한 후 Governance 를 선택하여 정책의 테이블 목록을 확인합니다. 참고: 모든 정책 탭 또는 클러스터 위반 탭을 선택하여 정책의 테이블 목록을 필터링할 수 있습니다.

자세한 내용을 보려면 정책 중 하나를 선택합니다. 세부 정보 , 클러스터템플릿 탭이 표시됩니다.

2.3.10.3. 구성 정책 비활성화

구성 정책을 비활성화하려면 정책의 작업 메뉴에서 정책 비활성화 를 선택합니다. 정책은 비활성화되어 있지만 삭제되지는 않습니다.

2.3.10.4. 구성 정책 삭제

CLI 또는 콘솔에서 구성 정책을 삭제합니다. 다음 단계를 완료합니다.

  1. 대상 클러스터 또는 클러스터에서 정책을 삭제하려면 다음 명령을 실행합니다.

    oc delete policies.policy.open-cluster-management.io <policy-name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 정책이 제거되었는지 확인합니다.

    oc get policies.policy.open-cluster-management.io <policy-name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  3. 콘솔에서 구성 정책을 삭제하려면 정책 위반 테이블에서 삭제할 정책의 작업 아이콘을 클릭한 다음 삭제 를 클릭합니다.

정책이 삭제됩니다.

2.3.10.5. 추가 리소스

2.3.11. 거버넌스를 위한 Ansible Automation Platform 구성

Red Hat Advanced Cluster Management for Kubernetes Governance를 Red Hat Ansible Automation Platform과 통합하여 정책 위반 자동화를 생성할 수 있습니다. Red Hat Advanced Cluster Management 콘솔에서 자동화를 구성할 수 있습니다.

2.3.11.1. 사전 요구 사항

  • 지원되는 OpenShift Container Platform 버전
  • Ansible Automation Platform 버전 3.7.3 또는 이후 버전이 설치되어 있어야 합니다. 지원되는 최신 버전의 Ansible Automation Platform을 설치하는 것이 좋습니다. 자세한 내용은 Red Hat Ansible Automation Platform 설명서 를 참조하십시오.
  • Operator Lifecycle Manager에서 Ansible Automation Platform Resource Operator를 설치합니다. Update Channel 섹션에서 stable-2.x-cluster-scoped 를 선택합니다. 클러스터(기본값) 설치 모드에서 모든 네임스페이스를 선택합니다.

    참고: Ansible Automation Platform 작업 템플릿을 실행할 때 멱등인지 확인합니다. Ansible Automation Platform Resource Operator가 없는 경우 Red Hat OpenShift Container Platform OperatorHub 페이지에서 찾을 수 있습니다.

Red Hat Ansible Automation Platform 설치 및 구성에 대한 자세한 내용은 Ansible 작업 설정을 참조하십시오.

2.3.11.2. 콘솔에서 정책 위반 자동화 생성

Red Hat Advanced Cluster Management Hub 클러스터에 로그인한 후 탐색 메뉴에서 Governance 를 선택한 다음 Policies 탭을 클릭하여 정책 테이블을 확인합니다.

자동화 열에서 구성을 클릭하여 특정 정책에 대한 자동화구성합니다. 정책 자동화 패널이 표시되면 자동화를 생성할 수 있습니다. Ansible Credential 섹션에서 드롭다운 메뉴를 클릭하여 Ansible 자격 증명을 선택합니다. 인증 정보를 추가해야 하는 경우 인증 정보 관리 개요 를 참조하십시오.

참고: 이 인증 정보는 정책과 동일한 네임스페이스에 복사됩니다. 인증 정보는 자동화를 시작하기 위해 생성된 AnsibleJob 리소스에서 사용합니다. 콘솔의 Credentials 섹션에서 Ansible 자격 증명 변경 사항이 자동으로 업데이트됩니다.

인증 정보를 선택한 후 Ansible 작업 드롭다운 목록을 클릭하여 작업 템플릿을 선택합니다. Extra variables 섹션에서 PolicyAutomationextra_vars 섹션에서 매개변수 값을 추가합니다. 자동화 빈도를 선택합니다. 한 번 모드 실행,everyEvent 모드를 실행 또는 자동화 비활성화 를 선택할 수 있습니다.

Submit 을 선택하여 정책 위반 자동화를 저장합니다. Ansible 작업 세부 정보 패널에서 작업 보기 링크를 선택하면 링크가 검색 페이지의 작업 템플릿으로 이동합니다. 자동화를 성공적으로 생성하면 자동화 열에 표시됩니다.

참고: 관련 정책 자동화가 있는 정책을 삭제하면 정리의 일부로 정책 자동화가 자동으로 삭제됩니다.

정책 위반 자동화는 콘솔에서 생성됩니다.

2.3.11.3. CLI에서 정책 위반 자동화 생성

CLI에서 정책 위반 자동화를 구성하려면 다음 단계를 완료합니다.

  1. 터미널에서 oc login 명령을 사용하여 Red Hat Advanced Cluster Management Hub 클러스터에 로그인합니다.
  2. 자동화를 추가할 정책을 검색하거나 생성합니다. 정책 이름과 네임스페이스를 확인합니다.
  3. 다음 샘플을 가이드로 사용하여 PolicyAutomation 리소스를 생성합니다.

    apiVersion: policy.open-cluster-management.io/v1beta1
    kind: PolicyAutomation
    metadata:
      name: policyname-policy-automation
    spec:
      automationDef:
        extra_vars:
          your_var: your_value
        name: Policy Compliance Template
        secret: ansible-tower
        type: AnsibleJob
      mode: disabled
      policyRef: policyname
    Copy to Clipboard Toggle word wrap
  4. 이전 샘플의 자동화 템플릿 이름은 정책 준수 템플릿 입니다. 작업 템플릿 이름과 일치하도록 해당 값을 변경합니다.
  5. extra_vars 섹션에서 자동화 템플릿에 전달하는 데 필요한 매개변수를 추가합니다.
  6. 모드를 한 번,everyEvent 또는 disabled 로 설정합니다.
  7. policyRef 를 정책 이름으로 설정합니다.
  8. Ansible Automation Platform 인증 정보가 포함된 이 PolicyAutomation 리소스와 동일한 네임스페이스에 보안을 생성합니다. 이전 예에서 시크릿 이름은 ansible-tower 입니다. 애플리케이션 라이프사이클의 샘플을 사용하여 시크릿을 생성하는 방법을 확인합니다.
  9. PolicyAutomation 리소스를 만듭니다.

    참고:

    • PolicyAutomation 리소스에 다음 주석을 추가하여 정책 자동화를 즉시 실행할 수 있습니다.

      metadata:
        annotations:
          policy.open-cluster-management.io/rerun: "true"
      Copy to Clipboard Toggle word wrap
    • 정책이 한 이면 정책을 준수하지 않을 때 자동화가 실행됩니다. target_clusters 라는 extra_vars 변수가 추가되고 이 값은 정책이 준수하지 않는 각 관리 클러스터 이름의 배열입니다.
    • 정책이 everyEvent 모드에 있고 DelayAfterRunSeconds 가 정의된 시간 값을 초과하면 정책을 준수하지 않고 모든 정책 위반에 대해 자동화가 실행됩니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat