2.5.14. gatekeeper 策略集成


了解如何创建、应用、查看和更新您的 gatekeeper 策略。

需要的访问权限 :集群管理员

先决条件 :您必须安装 Gatekeeper。如需更多信息,请参阅 open-policy-agent/gatekeeper 存储库。

2.5.14.1. 创建 gatekeeper 策略

您可以使用命令行界面(CLI)为 gatekeeper 策略创建 YAML 文件。使用 Red Hat Advanced Cluster Management for Kubernetes 配置策略,将 gatekeeper 策略从 hub 集群传播到受管集群。查看以下部分,为准入和审核场景创建 gatekeeper 策略:

2.5.14.1.1. 创建用于准入的 gatekeeper 策略

使用 Red Hat Advanced Cluster Management 配置策略创建一个 gatekeeper 策略,该策略会查找由 gatekeeper admission webhook 生成的事件。

备注:gatekeeper 必须将 emit-admission-events 设置为 true 一起部署。

  1. 为您的 gatekeeper 策略创建 YAML 文件。运行以下命令:

    kubectl create -f policy-gatekeeper-admission.yaml

    您的 gatekeeper 策略可能类似以下策略:

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-gatekeeper
  namespace: default
  annotations:
    policy.open-cluster-management.io/standards:
    policy.open-cluster-management.io/categories:
    policy.open-cluster-management.io/controls:
spec:
  disabled: false
  policy-templates:
    - objectDefinition:
        apiVersion: policy.open-cluster-management.io/v1
        kind: ConfigurationPolicy
        metadata:
          name: policy-gatekeeper-k8srequiredlabels
        spec:
          remediationAction: enforce # will be overridden by remediationAction in parent policy
          severity: low
          object-templates:
            - complianceType: musthave
              objectDefinition:
                apiVersion: templates.gatekeeper.sh/v1beta1
                kind: ConstraintTemplate
                metadata:
                  name: k8srequiredlabels
                spec:
                  crd:
                    spec:
                      names:
                        kind: K8sRequiredLabels
                      validation:
                        # Schema for the `parameters` field
                        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])
                        }
            - complianceType: musthave
              objectDefinition:
                apiVersion: constraints.gatekeeper.sh/v1beta1
                kind: K8sRequiredLabels
                metadata:
                  name: ns-must-have-gk
                spec:
                  match:
                    kinds:
                      - apiGroups: [""]
                        kinds: ["Namespace"]
                  parameters:
                    labels: ["gatekeeper"]
    - objectDefinition:
        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: gatekeeper-system
                  annotations:
                    constraint_action: deny
                    constraint_kind: K8sRequiredLabels
                    constraint_name: ns-must-have-gk
                    event_type: violation
2.5.14.1.2. 为审计创建 gatekeeper 策略

使用产品配置策略创建一个 gatekeeper 策略,该策略会根据 gatekeeper 策略定期检查并评估现有资源。Red Hat Advanced Cluster Management 配置策略检查 gatekeeper 约束的 status 字段中的违反情况。

  1. 为您的 gatekeeper 策略创建 YAML 文件。运行以下命令:

    kubectl create -f policy-gatekeeper-audit.yaml

    您的 gatekeeper 策略可能类似以下策略:

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-gatekeeper
      namespace: default
      annotations:
        policy.open-cluster-management.io/standards:
        policy.open-cluster-management.io/categories:
        policy.open-cluster-management.io/controls:
    spec:
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-gatekeeper-audit
            spec:
              remediationAction: inform # will be overridden by remediationAction in parent policy
              severity: low
              object-templates:
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: constraints.gatekeeper.sh/v1beta1
                    kind: K8sRequiredLabels
                    metadata:
                      name: ns-must-have-gk
                    status:
                      totalViolations: 0
                      violations: []

有关将第三方策略整合到产品中的更多信息,请参阅集成第三方策略控制器

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.