검색

3장. Gatekeeper Operator

download PDF

Gatekeeper는 OCI(Open Policy Agent)로 실행되는 사용자 정의 리소스 정의 기반 정책을 적용할 수 있는 감사 기능이 있는 검증 웹 후크입니다. Gatekeeper Operator 정책을 사용하여 클러스터에 Gatekeeper를 설치할 수 있습니다. Gatekeeper 제약 조건을 사용하여 Kubernetes 리소스 규정 준수를 평가할 수 있습니다. OPA를 정책 엔진으로 활용하고 Rego를 정책 언어로 사용할 수 있습니다.

사전 요구 사항: Gatekeeper를 설치하고 클러스터에 Gatekeeper 정책을 적용하려면 Red Hat Advanced Cluster Management for Kubernetes 또는 Red Hat OpenShift Container Platform Plus 서브스크립션이 필요합니다. Gatekeeper는 최신 버전의 Red Hat Advanced Cluster Management에서 지원되는 버전 3.11을 제외한 OpenShift Container Platform 버전에서만 지원됩니다.

Gatekeeper Operator 사용에 대해 자세히 알아보려면 계속 읽으십시오.

3.1. Gatekeeper 제약 조건 및 제약 조건 템플릿 통합

게이트키퍼 정책은 제약 조건 템플릿(ConstraintTemplates) 및 제약 조건을 사용하여 작성됩니다. Red Hat Advanced Cluster Management 정책에서 Gatekeeper 제약 조건을 사용하는 다음 YAML 예제를 확인합니다.

  • ConstraintTemplates 및 제약 조건: Gatekeeper 제약 조건 및 Gatekeeper 감사 결과 집계에 Red Hat Advanced Cluster Management 정책을 사용하여 Gatekeeper 통합 기능을 사용합니다. 다음 예제에서는 Gatekeeper ConstraintTemplate 및 제약 조건(K8sRequiredLabels)을 정의하여 모든 네임스페이스에 gatekeeper 라벨이 설정되어 있는지 확인합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: require-gatekeeper-labels-on-ns
    spec:
      remediationAction: inform 1
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: templates.gatekeeper.sh/v1beta1
            kind: ConstraintTemplate
            metadata:
              name: k8srequiredlabels
              annotations:
                policy.open-cluster-management.io/severity: low 2
            spec:
              crd:
                spec:
                  names:
                    kind: K8sRequiredLabels
                  validation:
                    openAPIV3Schema:
                      properties:
                        labels:
                          type: array
                          items: string
              targets:
                - target: admission.k8s.gatekeeper.sh
                  rego: |
                    package k8srequiredlabels
                    violation[{"msg": msg, "details": {"missing_labels": missing}}] {
                      provided := {label | input.review.object.metadata.labels[label]}
                      required := {label | label := input.parameters.labels[_]}
                      missing := required - provided
                      count(missing) > 0
                      msg := sprintf("you must provide labels: %v", [missing])
                    }
        - objectDefinition:
            apiVersion: constraints.gatekeeper.sh/v1beta1
            kind: K8sRequiredLabels
            metadata:
              name: ns-must-have-gk
              annotations:
                policy.open-cluster-management.io/severity: low 3
            spec:
              enforcementAction: dryrun
              match:
                kinds:
                  - apiGroups: [""]
                    kinds: ["Namespace"]
              parameters:
                labels: ["gatekeeper"]
    1
    remediationAction알리는 것으로 설정되어 있으므로 Gatekeeper 제약 조건의 enforcementAction 필드가 warn 로 재정의됩니다. 즉, Gatekeeper는 게이트 키퍼 레이블이 누락된 네임스페이스 생성 또는 업데이트에 대해 탐지하고 경고합니다. 정책 수정적용하도록 설정된 경우 Gatekeeper 제약 조건 시행 필드를 거부하도록 덮어씁니다. 이 컨텍스트에서 이 구성을 사용하면 모든 사용자가 gatekeeper 레이블이 없는 네임스페이스를 생성하거나 업데이트할 수 없습니다.
    2 3
    선택 사항: 각 Gatekeeper 제약 조건 또는 제약 조건 템플릿에 대해 policy.open-cluster-management.io/severity 주석의 심각도 값을 설정합니다. 유효한 값은 다른 Red Hat Advanced Cluster Management 정책 유형( 낮음,중간,높음 또는 심각)과 동일합니다.

    이전 정책에서는 다음과 같은 정책 상태 메시지를 수신할 수 있습니다. warn - you must provide labels: {"gatekeeper"} (On Namespace default); warn - you must provide labels: {"gatekeeper"} (on Namespace gatekeeper-system). Gatekeeper 제약 조건 또는 ConstraintTemplates 를 포함하는 정책이 삭제되면 관리 클러스터에서 제약 조건 및 ConstraintTemplates 도 삭제됩니다.

    콘솔에서 Gatekeeper 감사 결과를 보려면 정책 템플릿 결과 페이지로 이동합니다. search가 활성화된 경우 감사에 실패한 Kubernetes 오브젝트의 YAML을 확인합니다.

    참고:

    • 관련 리소스 섹션은 Gatekeeper 버전 3.9 이상에서 감사 결과가 생성되는 경우에만 사용할 수 있습니다.
    • Gatekeeper 감사 기능은 기본적으로 1분마다 실행됩니다. 관리 클러스터의 Red Hat Advanced Cluster Management 정책 상태에서 볼 수 있도록 감사 결과가 hub 클러스터로 다시 전송됩니다.
  • policy-gatekeeper-admission : Red Hat Advanced Cluster Management 정책 내에서 policy-gatekeeper-admission 구성 정책을 사용하여 gatekeeper 승인 Webhook에서 거부되는 Kubernetes API 요청을 확인합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: policy-gatekeeper-admission
    spec:
      remediationAction: inform # will be overridden by remediationAction in parent policy
      severity: low
      object-templates:
        - complianceType: mustnothave
          objectDefinition:
            apiVersion: v1
            kind: Event
            metadata:
              namespace: openshift-gatekeeper-system # set it to the actual namespace where gatekeeper is running if different
              annotations:
                constraint_action: deny
                constraint_kind: K8sRequiredLabels
                constraint_name: ns-must-have-gk
                event_type: violation

3.1.1. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.