Kubernetes - OPA Gatekeeper
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
本页面的原作者是 Guillaume
定义
Open Policy Agent (OPA) Gatekeeper 是一个用于在 Kubernetes 中强制执行入场策略的工具。这些策略使用 OPA 提供的政策语言 Rego 定义。以下是使用 OPA Gatekeeper 的政策定义的基本示例:
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Required labels missing: %v", [missing])
}
default allow = false
这个 Rego 策略检查 Kubernetes 资源上是否存在某些标签。如果缺少所需的标签,它将返回违规消息。此策略可用于确保集群中部署的所有资源都有特定标签。
应用约束
要将此策略与 OPA Gatekeeper 一起使用,您需要在 Kubernetes 中定义一个 ConstraintTemplate 和一个 Constraint:
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Required labels missing: %v", [missing])
}
default allow = false
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
name: ensure-pod-has-label
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
labels:
requiredLabel1: "true"
requiredLabel2: "true"
在这个 YAML 示例中,我们定义了一个 ConstraintTemplate 来要求标签。然后,我们将这个约束命名为 ensure-pod-has-label,它引用了 k8srequiredlabels ConstraintTemplate 并指定了所需的标签。
当 Gatekeeper 部署在 Kubernetes 集群中时,它将强制执行此策略,防止创建没有指定标签的 pods。
References
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

