5.5. Gatekeeper の制約および制約テンプレートの統合


Gatekeeper ポリシーを作成するには、ConstraintTemplates と制約を使用します。Policy リソースの policy-templates にテンプレートと制約を追加します。Red Hat Advanced Cluster Management ポリシーで Gatekeeper 制約を使用する以下の YAML の例を表示します。

  • ConstraintTemplates と制約: Red Hat Advanced Cluster Management ポリシーを使用して Gatekeeper 統合機能を使用し、Gatekeeper 制約のマルチクラスター分散とハブクラスターでの Gatekeeper 監査結果の集約を行います。次の例では、Gatekeeper ConstraintTemplate と制約 (K8sRequiredLabels) を定義して、gatekeeper ラベルがすべての namespace に設定されていることを確認します。

    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
    remediationActioninform に設定されているため、Gatekeeper 制約の enforcementAction フィールドは warn にオーバーライドされます。これは、gatekeeper ラベルが欠落している namespace の作成または更新を Gatekeeper が検出し、警告することを意味します。remediationAction ポリシーが enforce に設定されている場合、Gatekeeper 制約の enforcementAction フィールドは deny にオーバーライドされます。このコンテキストでは、この設定により、gatekeeper ラベルが欠落している namespace をユーザーが作成または更新できなくなります。
    2 3
    オプション: 各 Gatekeeper 制約または制約テンプレートに対して、policy.open-cluster-management.io/severity アノテーションの重大度値を設定します。有効な値は、他の Red Hat Advanced Cluster Management ポリシータイプと同じです (lowmediumhigh、または critical)。

    以前のポリシーでは、ポリシーステータスメッセージ warn - you must provide labels: {"gatekeeper"} (on Namespace default); warn - you must provide labels: {"gatekeeper"} (on Namespace gatekeeper-system) が表示される場合があります。ポリシーから Gatekeeper 制約または ConstraintTemplates を削除すると、その制約と ConstraintTemplates もマネージドクラスターから削除されます。

    コンソールから特定のマネージドクラスターの Gatekeeper 監査結果を表示するには、ポリシーテンプレートの Results ページに移動します。検索が有効になっている場合は、監査に失敗した Kubernetes オブジェクトの YAML を表示します。

    注記:

    • 関連資料 セクションは、Gatekeeper が監査結果を生成した場合にのみ使用できます。
    • Gatekeeper 監査は、デフォルトでは 1 分ごとに実行されます。監査結果はハブクラスターに返送され、マネージドクラスターの Red Hat Advanced Cluster Management ポリシーステータスで表示されます。
  • 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 1
      severity: low
      object-templates:
        - complianceType: mustnothave
          objectDefinition:
            apiVersion: v1
            kind: Event
            metadata:
              namespace: openshift-gatekeeper-system 2
              annotations:
                constraint_action: deny
                constraint_kind: K8sRequiredLabels
                constraint_name: ns-must-have-gk
                event_type: violation
    1
    ConfigurationPolicy remediationAction パラメーターは、親ポリシーの remediationAction によって上書きされます。
    2
    Gatekeeper が異なる実際の namespace に設定します。

5.5.1. 関連情報

詳細は、以下のリソースを参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.